Gitea - príručka pre začiatočníkov
Gitea je odľahčená self-hosted služba Git so vstavaným CI/CD (Gitea Actions), sledovaním úloh, wiki a registrom balíčkov – rýchla súkromná alternatíva ku GitHubu, ktorú plne ovládate. Podporuje pull requesty s code review, organizácie a tímy, úpravy kódu vo webovom rozhraní, webhooky a jednoduchú migráciu z GitHubu alebo GitLabu. Gitea je napísaná v Go a má minimálne nároky – beží plynulo aj na malých serveroch. Server obsahuje plne nainštalovanú a nakonfigurovanú Giteu s účtom administrátora a heslom, ktoré ste zadali pri objednávke. Súčasťou je vstavaný CI/CD runner pripravený na použitie.
Krok 1 – Overte, že Gitea funguje
IP adresa a heslo root vášho servera sú uvedené na stránke Server Details v klientskom paneli. Gitea je dostupná hneď po vytvorení servera. Otvorte https://your.server.ip v prehliadači a overte, že funguje.
Prihlásenie do Gitea:
- Používateľské meno:
admin - Heslo: heslo administrátora, ktoré ste zadali pri objednávke
Gitea v predvolenom stave používa certifikát SSL podpísaný samým sebou. Prehliadač zobrazí bezpečnostné varovanie – kliknite na Pokročilé > Pokračovať (alebo Accept the Risk vo Firefoxe). Je to očakávané a bezpečné. Riadny certifikát Let’s Encrypt môžete nainštalovať neskôr (pozri krok 4).
Ak ste server umiestnili za router VyOS v privátnej sieti, buď nastavte presmerovanie portov (22, 80 a 443), aby bola Gitea dostupná z internetu, alebo sa pripojte cez VPN a ku Gitea pristupujte cez privátnu IP servera.
Krok 2 – Vytvorenie prvého repozitára
Kliknite na tlačidlo + v pravom hornom rohu a zvoľte New Repository. Vyplňte názov repozitára a kliknite na Create Repository.
Naklonujte repozitár cez HTTPS alebo 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 cez SSH používa port 22 (štandardný port SSH). Gitea spravuje SSH kľúče automaticky – keď pridáte verejný kľúč vo webovom rozhraní, je hneď dostupný pre operácie Git.
Krok 3 – Nastavenie vlastnej domény
Ak chcete Giteu používať na vlastnej doméne namiesto IP servera:
- Vytvorte DNS A záznam smerujúci vašu doménu na IP servera:
Typ Názov Hodnota A git your.server.ip - Pripojte sa k serveru cez SSH a upravte konfiguráciu Gitea:
Aktualizujte tieto riadky v sekciinano /etc/gitea/app.ini[server]:DOMAIN = git.yourdomain.com SSH_DOMAIN = git.yourdomain.com ROOT_URL = https://git.yourdomain.com/ - Aktualizujte Nginx a reštartujte služby:
sed -i "s/server_name .*/server_name git.yourdomain.com;/g" /etc/nginx/sites-available/gitea systemctl restart gitea systemctl reload nginx
Zmeny DNS sa zvyčajne prejavia v priebehu niekoľkých minút, ale môže to trvať až 24 hodín. Overte na dnschecker.org.
Krok 4 – Zapnutie SSL Let’s Encrypt
Keď doména smeruje na server, nahraďte certifikát podpísaný samým sebou bezplatným certifikátom Let’s Encrypt. Pripojte sa cez SSH a spustite:
/opt/setup/get-ssl.sh git.yourdomain.com
Skript overí DNS, získa certifikát, nastaví Nginx pre HTTPS a automaticky aktualizuje konfiguráciu Gitea. Certifikát sa obnovuje automaticky.
Pred spustením skriptu sa uistite, že sa A záznam domény rozšíril. SSL je voliteľné – Gitea funguje bez problémov aj s certifikátom podpísaným samým sebou.
Krok 5 – CI/CD s Gitea Actions
Vaša inštancia Gitea obsahuje vstavaný CI/CD runner (Gitea Actions). Je kompatibilný so syntaxou workflow GitHub Actions. Na použitie vytvorte v repozitári súbor workflow:
.gitea/workflows/build.yaml
Ukážkový workflow:
name: Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo "Hello from Gitea Actions!"
Runner spúšťa úlohy priamo na hostiteľovi (Docker nie je potrebný). Kontrola stavu runnera:
systemctl status act_runner
Po inštalácii
Fail2Ban – ochrana proti útokom hrubou silou
Váš server obsahuje Fail2Ban predkonfigurovaný na ochranu SSH aj webového rozhrania Gitea proti útokom hrubou silou.
| Pravidlo | Max. počet pokusov | Doba blokovania |
|---|---|---|
| SSH | 5 neúspešných prihlásení | 1 hodina |
| Prihlásenie do webu Gitea | 5 neúspešných prihlásení | 1 hodina |
Užitočné príkazy:
# 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
Ak sa omylom zablokujete, pripojte sa cez konzolu VNC v klientskom paneli a odblokujte svoju IP.
Aktualizácie
Gitea je nainštalovaná ako samostatný binárny súbor a neaktualizuje sa automaticky. Na ručnú aktualizáciu stiahnite novú verziu a nahraďte binárny súbor:
# 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
Aktualizácie OS možno vykonať cez SSH:
apt update && apt upgrade -y
Prihlasovacie údaje servera
Prihlasovacie údaje administrátora Gitea sú uložené v /root/.gitea_credentials. Uvidíte ich aj po pripojení cez SSH (zobrazujú sa v uvítacej správe).
Správa služieb
# 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
Zahrnutý softvér
| Komponent | Podrobnosti |
|---|---|
| Ubuntu | 24.04 LTS |
| Gitea | 1.25 (SQLite, Git LFS) |
| Nginx | Reverzná proxy s SSL |
| Gitea Actions Runner | Vstavané CI/CD (spúšťanie na hostiteľovi) |
| Certbot | Let’s Encrypt SSL |
| Fail2Ban | Ochrana SSH a Gitea proti útokom hrubou silou |
Riešenie problémov
| Problém | Riešenie |
|---|---|
| Prehliadač zobrazuje varovanie SSL | Pri predvolenom certifikáte podpísanom samým sebou je to očakávané. Kliknite na „Advanced“ a pokračujte. Na trvalé riešenie nastavte doménu a spustite /opt/setup/get-ssl.sh |
| Nedá sa dostať do webového rozhrania Gitea | Kontrola služieb: systemctl status gitea nginx. Uistite sa, že používate https:// (nie http) |
| Git push/pull cez SSH zlyháva | Pridajte verejný SSH kľúč v Gitea (Settings > SSH/GPG Keys). V URL na klonovanie použite git@ , nie root@ |
| Workflow Gitea Actions sa nespúšťa | Kontrola runnera: systemctl status act_runner. Súbor workflow musí byť v adresári .gitea/workflows/ (nie .github/workflows/) |
| Certifikát Let’s Encrypt zlyhal | Uistite sa, že DNS A záznam smeruje na IP servera a rozšíril sa. Overte na dnschecker.org. Port 80 musí byť dostupný z internetu kvôli výzve HTTP-01 |
| Zabudnuté heslo administrátora | Pripojte sa cez SSH a skontrolujte /root/.gitea_credentialsalebo resetujte: sudo -u git gitea admin user change-password --username admin --password "newpass" --config /etc/gitea/app.ini |
| Zablokované službou Fail2Ban | Odblokujte svoju IP cez konzolu VNC v klientskom paneli: fail2ban-client set sshd unbanip 1.2.3.4 |
| Zabudnuté heslo root | Obnovte ho cez konzolu VNC v klientskom paneli |