Table of Contents

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:

  1. Sukurkite DNS A įrašą, nukreipiantį domeną į serverio IP:
    Tipas Pavadinimas Reikšmė
    Agityour.server.ip
  2. Prisijunkite prie serverio per SSH ir redaguokite Gitea konfigūraciją:
    nano /etc/gitea/app.ini
    Atnaujinkite šias eilutes skiltyje [server] :
    DOMAIN     = git.yourdomain.com
    SSH_DOMAIN = git.yourdomain.com
    ROOT_URL   = https://git.yourdomain.com/
  3. 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ė
SSH5 nesėkmingi prisijungimai1 valanda
Prisijungimas prie Gitea žiniatinklio5 nesėkmingi prisijungimai1 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
Ubuntu24.04 LTS
Gitea1.25 (SQLite, Git LFS)
NginxAtvirkštinis tarpinis serveris su SSL
Gitea Actions RunnerIntegruotas CI/CD (vykdymas mazge)
CertbotLet’s Encrypt SSL
Fail2BanSSH 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