Gitea - pradžios vadovas
Gitea yra lengva savarankiškai talpinama Git paslauga su integruotu CI/CD (Gitea Actions), užduočių sekimu, wiki ir paketų registru – greita privati GitHub alternatyva, kurią visiškai valdote jūs. Palaiko pull request’us su kodo peržiūra, organizacijas ir komandas, kodo redagavimą žiniatinklyje, webhook’us ir lengvą migraciją iš GitHub ar GitLab. Gitea parašyta Go kalba ir naudoja minimaliai išteklių – sklandžiai veikia net mažuose serveriuose. Šiame serveryje Gitea visiškai įdiegta ir sukonfigūruota su administratoriaus paskyra ir slaptažodžiu, kuriuos nurodėte užsakydami. Įtrauktas integruotas CI/CD runner, paruoštas naudoti.
1 žingsnis – Patikrinkite, ar Gitea veikia
Jūsų serverio IP adresas ir root slaptažodis nurodyti kliento skydelio puslapyje Server Details. Gitea pasiekiama iškart sukūrus serverį. Atidarykite https://your.server.ip naršyklėje ir patikrinkite, ar veikia.
Prisijungimas prie Gitea:
- Naudotojo vardas:
admin - Slaptažodis: administratoriaus slaptažodis, kurį įvedėte užsakydami
Pagal numatytuosius nustatymus Gitea naudoja savarankiškai pasirašytą SSL sertifikatą. Naršyklė parodys saugumo įspėjimą – spustelėkite Išplėstiniai > Tęsti (arba Accept the Risk Firefox naršyklėje). Tai įprasta ir saugu. Tinkamą Let’s Encrypt sertifikatą galėsite įdiegti vėliau (žr. 4 žingsnį).
Jei serverį patalpinote už VyOS maršrutizatoriaus privačiame tinkle, arba sukonfigūruokite prievadų peradresavimą (22, 80 ir 443), kad Gitea būtų pasiekiama iš interneto, arba prisijunkite per VPN ir pasiekite Gitea privačiu serverio IP.
2 žingsnis – Pirmosios saugyklos kūrimas
Spustelėkite mygtuką + viršutiniame dešiniajame kampe ir pasirinkite New Repository. Įveskite saugyklos pavadinimą ir spustelėkite Create Repository.
Klonuokite saugyklą per HTTPS arba SSH:
# HTTPS
git clone https://your.server.ip/admin/my-repo.git
# SSH (add your public key in Settings > SSH/GPG Keys first)
git clone git@your.server.ip:admin/my-repo.git
Git per SSH naudoja 22 prievadą (standartinį SSH prievadą). Gitea SSH raktus valdo automatiškai – pridėjus viešąjį raktą žiniatinklio sąsajoje, jis iš karto tampa prieinamas Git operacijoms.
3 žingsnis – Savo domeno nustatymas
Norėdami naudoti Gitea savo domene vietoj serverio IP:
- Sukurkite DNS A įrašą, nukreipiantį domeną į serverio IP:
Tipas Pavadinimas Reikšmė A git your.server.ip - Prisijunkite prie serverio per SSH ir redaguokite Gitea konfigūraciją:
Atnaujinkite šias eilutes skiltyjenano /etc/gitea/app.ini[server]:DOMAIN = git.yourdomain.com SSH_DOMAIN = git.yourdomain.com ROOT_URL = https://git.yourdomain.com/ - Atnaujinkite Nginx ir paleiskite paslaugas iš naujo:
sed -i "s/server_name .*/server_name git.yourdomain.com;/g" /etc/nginx/sites-available/gitea systemctl restart gitea systemctl reload nginx
DNS pakeitimai paprastai įsigalioja per kelias minutes, bet gali užtrukti iki 24 valandų. Patikrinkite dnschecker.org.
4 žingsnis – Let’s Encrypt SSL įjungimas
Kai domenas nukreiptas į serverį, pakeiskite savarankiškai pasirašytą sertifikatą nemokamu Let’s Encrypt sertifikatu. Prisijunkite per SSH ir paleiskite:
/opt/setup/get-ssl.sh git.yourdomain.com
Scenarijus patikrina DNS, gauna sertifikatą, sukonfigūruoja Nginx HTTPS ir automatiškai atnaujina Gitea konfigūraciją. Sertifikatas atnaujinamas automatiškai.
Prieš paleisdami scenarijų įsitikinkite, kad domeno A įrašas išplito. SSL neprivalomas – Gitea puikiai veikia ir su savarankiškai pasirašytu sertifikatu.
5 žingsnis – CI/CD su Gitea Actions
Jūsų Gitea turi integruotą CI/CD runner (Gitea Actions). Jis suderinamas su GitHub Actions workflow sintakse. Norėdami naudoti, saugykloje sukurkite workflow failą:
.gitea/workflows/build.yaml
Workflow pavyzdys:
name: Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo "Hello from Gitea Actions!"
Runner vykdo užduotis tiesiai mazge (Docker nereikia). Runner būsenos patikra:
systemctl status act_runner
Po įdiegimo
Fail2Ban – apsauga nuo slaptažodžių spėjimo atakų
Jūsų serveryje įdiegta Fail2Ban iš anksto sukonfigūruotas apsaugoti SSH ir Gitea žiniatinklio sąsają nuo slaptažodžių spėjimo atakų.
| Taisyklė | Maks. bandymų | Blokavimo trukmė |
|---|---|---|
| SSH | 5 nesėkmingi prisijungimai | 1 valanda |
| Prisijungimas prie Gitea žiniatinklio | 5 nesėkmingi prisijungimai | 1 valanda |
Naudingos komandos:
# Check banned IPs
fail2ban-client status sshd
fail2ban-client status gitea
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
fail2ban-client set gitea unbanip 1.2.3.4
Jei netyčia užsiblokavote, prisijunkite per VNC konsolę kliento skydelyje ir atblokuokite savo IP.
Atnaujinimai
Gitea įdiegta kaip atskiras vykdomasis failas ir automatiškai neatnaujinama. Norėdami atnaujinti rankiniu būdu, atsisiųskite naują versiją ir pakeiskite vykdomąjį failą:
# Download new version (replace X.Y.Z with the desired version)
wget -O /tmp/gitea https://dl.gitea.com/gitea/X.Y.Z/gitea-X.Y.Z-linux-amd64
chmod +x /tmp/gitea
# Replace binary and restart
systemctl stop gitea
cp /tmp/gitea /usr/local/bin/gitea
systemctl start gitea
OS atnaujinimus galima atlikti per SSH:
apt update && apt upgrade -y
Serverio prisijungimo duomenys
Gitea administratoriaus prisijungimo duomenys saugomi /root/.gitea_credentials. Juos taip pat matysite prisijungę per SSH (rodomi pasisveikinimo pranešime).
Paslaugų valdymas
# Service status and control
systemctl status gitea # check Gitea status
systemctl restart gitea # restart Gitea
systemctl status nginx # check Nginx (reverse proxy)
systemctl reload nginx # reload Nginx after config change
systemctl status act_runner # check CI/CD runner
# Gitea admin CLI
sudo -u git gitea admin user list --config /etc/gitea/app.ini
sudo -u git gitea admin user change-password --username admin --password "newpass" --config /etc/gitea/app.ini
# Database backup (SQLite)
cp /var/lib/gitea/data/gitea.db /root/gitea-backup-$(date +%Y%m%d).db
# Logs
tail -f /var/lib/gitea/log/gitea.log # Gitea application log
journalctl -u gitea -f # systemd journal
tail -f /var/log/nginx/error.log # Nginx errors
Įdiegta programinė įranga
| Komponentas | Išsami informacija |
|---|---|
| Ubuntu | 24.04 LTS |
| Gitea | 1.25 (SQLite, Git LFS) |
| Nginx | Atvirkštinis tarpinis serveris su SSL |
| Gitea Actions Runner | Integruotas CI/CD (vykdymas mazge) |
| Certbot | Let’s Encrypt SSL |
| Fail2Ban | SSH ir Gitea apsauga nuo slaptažodžių spėjimo atakų |
Trikčių šalinimas
| Problema | Sprendimas |
|---|---|
| Naršyklė rodo SSL įspėjimą | Su numatytuoju savarankiškai pasirašytu sertifikatu tai įprasta. Spustelėkite „Advanced” ir tęskite. Norėdami išspręsti visam laikui, nustatykite domeną ir paleiskite /opt/setup/get-ssl.sh |
| Nepavyksta pasiekti Gitea žiniatinklio sąsajos | Paslaugų tikrinimas: systemctl status gitea nginx. Įsitikinkite, kad naudojate https:// (ne http) |
| Git push/pull per SSH nepavyksta | Pridėkite viešąjį SSH raktą Gitea (Settings > SSH/GPG Keys). Klonavimo URL naudokite git@ , ne root@ |
| Gitea Actions workflow nepasileidžia | Runner patikra: systemctl status act_runner. Workflow failas turi būti kataloge .gitea/workflows/ (ne .github/workflows/) |
| Let’s Encrypt sertifikato gauti nepavyko | Įsitikinkite, kad DNS A įrašas nukreiptas į serverio IP ir išplito. Patikrinkite dnschecker.org. 80 prievadas turi būti pasiekiamas iš interneto HTTP-01 patikrai |
| Pamiršote administratoriaus slaptažodį | Prisijunkite per SSH ir patikrinkite /root/.gitea_credentialsarba atkurkite: sudo -u git gitea admin user change-password --username admin --password "newpass" --config /etc/gitea/app.ini |
| Užblokavo Fail2Ban | Atblokuokite savo IP per VNC konsolę kliento skydelyje: fail2ban-client set sshd unbanip 1.2.3.4 |
| Pamiršote root slaptažodį | Atkurkite jį per VNC konsolę kliento skydelyje |