Gitea یک سرور Git سبک با رابط وب، Pull Request، Issue و CI (Gitea Actions) است و روی یک سرور کوچک هم خوب اجرا میشود. این آموزش فرض میکند Docker و Compose نصب است (آموزش Docker را ببینید).
۱. فایل Compose
/opt/gitea/compose.yaml:
services:
db:
image: postgres:17
restart: unless-stopped
environment:
POSTGRES_USER: gitea
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: gitea
volumes:
- ./postgres:/var/lib/postgresql/data
gitea:
image: gitea/gitea:1.24
restart: unless-stopped
depends_on: [db]
environment:
USER_UID: "1000"
USER_GID: "1000"
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: db:5432
GITEA__database__NAME: gitea
GITEA__database__USER: gitea
GITEA__database__PASSWD: ${DB_PASSWORD}
GITEA__server__DOMAIN: git.sahor.ir
GITEA__server__ROOT_URL: https://git.sahor.ir/
GITEA__server__SSH_DOMAIN: git.sahor.ir
GITEA__server__SSH_PORT: "2222"
GITEA__service__DISABLE_REGISTRATION: "true"
volumes:
- ./data:/data
ports:
- "127.0.0.1:3000:3000"
- "2222:22"نسخه را به یک شاخهی مشخص (اینجا 1.24) قفل کنید و آن را آگاهانه ارتقا دهید. پیش از ارتقا، تازهترین نسخهی پایدار را در صفحهی انتشار Gitea بررسی کنید.
cd /opt/gitea
echo "DB_PASSWORD=$(openssl rand -hex 16)" > .env && chmod 600 .env
docker compose up -d
docker compose logs -f giteaپورت وب فقط روی localhost است و از بیرون فقط از طریق Nginx در دسترس است.
۲. Nginx و HTTPS
/etc/nginx/sites-available/git.sahor.ir:
server {
listen 80;
server_name git.sahor.ir;
client_max_body_size 512m;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}sudo ln -s /etc/nginx/sites-available/git.sahor.ir /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d git.sahor.ir
sudo ufw allow 2222/tcpclient_max_body_size برای push کردن مخازن بزرگ لازم است.
۳. راهاندازی اولیه
نشانی https://git.sahor.ir را باز کنید. چون تنظیمات از متغیرهای محیطی آمده، فقط حساب مدیر را بسازید. یا از خط فرمان:
docker compose exec -u git gitea gitea admin user create --admin --username ali --email ali@sahor.ir --random-password۴. استفاده با SSH
کاربر کلید عمومیاش را در Settings › SSH Keys اضافه میکند. بعد:
git clone ssh://git@git.sahor.ir:2222/ali/infra.git۵. بکاپ
cd /opt/gitea
docker compose exec -u git gitea gitea dump -c /data/gitea/conf/app.ini -f /data/gitea-dump.zip
docker compose exec db pg_dump -U gitea gitea | gzip > /var/backups/gitea-db-$(date +%F).sql.gz
mv data/gitea-dump.zip /var/backups/gitea-$(date +%F).zipپوشههای data و postgres را هم در بکاپ فایلمحور (مثلاً restic) بگذارید.