Table of Contents

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:

  1. Vytvorte DNS A záznam smerujúci vašu doménu na IP servera:
    Typ Názov Hodnota
    Agityour.server.ip
  2. Pripojte sa k serveru cez SSH a upravte konfiguráciu Gitea:
    nano /etc/gitea/app.ini
    Aktualizujte tieto riadky v sekcii [server] :
    DOMAIN     = git.yourdomain.com
    SSH_DOMAIN = git.yourdomain.com
    ROOT_URL   = https://git.yourdomain.com/
  3. 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
SSH5 neúspešných prihlásení1 hodina
Prihlásenie do webu Gitea5 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
Ubuntu24.04 LTS
Gitea1.25 (SQLite, Git LFS)
NginxReverzná proxy s SSL
Gitea Actions RunnerVstavané CI/CD (spúšťanie na hostiteľovi)
CertbotLet’s Encrypt SSL
Fail2BanOchrana 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