Table of Contents

Gitea - průvodce pro začátečníky

Gitea je odlehčená self-hosted služba Git s vestavěným CI/CD (Gitea Actions), sledováním úkolů, wiki a registrem balíčků – rychlá soukromá alternativa ke GitHubu, kterou plně ovládáte. Podporuje pull requesty s code review, organizace a týmy, úpravy kódu ve webovém rozhraní, webhooky a snadnou migraci z GitHubu nebo GitLabu. Gitea je napsaná v Go a má minimální nároky – běží plynule i na malých serverech. Server obsahuje plně nainstalovanou a nakonfigurovanou Giteu s účtem administrátora a heslem, které jste zadali při objednávce. Součástí je vestavěný CI/CD runner připravený k použití.


Krok 1 – Ověřte, že Gitea funguje

IP adresa a heslo root vašeho serveru jsou uvedeny na stránce Server Details v klientském panelu. Gitea je dostupná ihned po vytvoření serveru. Otevřete https://your.server.ip v prohlížeči a ověřte, že funguje.

Přihlášení do Gitea:

  • Uživatelské jméno: admin
  • Heslo: heslo administrátora, které jste zadali při objednávce

Gitea ve výchozím stavu používá certifikát SSL podepsaný sebou samým. Prohlížeč zobrazí bezpečnostní varování – klikněte na Pokročilé > Pokračovat (nebo Accept the Risk ve Firefoxu). Je to očekávané a bezpečné. Řádný certifikát Let’s Encrypt můžete nainstalovat později (viz krok 4).

Pokud jste server umístili za router VyOS v privátní síti, buď nastavte přesměrování portů (22, 80 a 443), aby byla Gitea dostupná z internetu, nebo se připojte přes VPN a k Gitea přistupujte přes privátní IP serveru.


Krok 2 – Vytvoření prvního repozitáře

Klikněte na tlačítko + v pravém horním rohu a zvolte New Repository. Vyplňte název repozitáře a klikněte na Create Repository.

Naklonujte repozitář přes HTTPS nebo 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 přes SSH používá port 22 (standardní port SSH). Gitea spravuje SSH klíče automaticky – když přidáte veřejný klíč ve webovém rozhraní, je ihned dostupný pro operace Git.


Krok 3 – Nastavení vlastní domény

Chcete-li Giteu používat na vlastní doméně místo IP serveru:

  1. Vytvořte DNS A záznam směřující vaši doménu na IP serveru:
    Typ Název Hodnota
    Agityour.server.ip
  2. Připojte se k serveru přes SSH a upravte konfiguraci Gitea:
    nano /etc/gitea/app.ini
    Aktualizujte tyto řádky v sekci [server] :
    DOMAIN     = git.yourdomain.com
    SSH_DOMAIN = git.yourdomain.com
    ROOT_URL   = https://git.yourdomain.com/
  3. Aktualizujte Nginx a restartujte služby:
    sed -i "s/server_name .*/server_name git.yourdomain.com;/g" /etc/nginx/sites-available/gitea
    systemctl restart gitea
    systemctl reload nginx

Změny DNS se obvykle projeví během několika minut, ale může to trvat až 24 hodin. Ověřte na dnschecker.org.


Krok 4 – Zapnutí SSL Let’s Encrypt

Jakmile doména směřuje na server, nahraďte certifikát podepsaný sebou samým bezplatným certifikátem Let’s Encrypt. Připojte se přes SSH a spusťte:

/opt/setup/get-ssl.sh git.yourdomain.com

Skript ověří DNS, získá certifikát, nastaví Nginx pro HTTPS a automaticky aktualizuje konfiguraci Gitea. Certifikát se obnovuje automaticky.

Před spuštěním skriptu se ujistěte, že se A záznam domény rozšířil. SSL je volitelné – Gitea funguje bez problémů i s certifikátem podepsaným sebou samým.


Krok 5 – CI/CD s Gitea Actions

Vaše instance Gitea obsahuje vestavěný CI/CD runner (Gitea Actions). Je kompatibilní se syntaxí workflow GitHub Actions. Pro použití vytvořte v repozitáři soubor workflow:

.gitea/workflows/build.yaml

Ukázkový workflow:

name: Build
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: echo "Hello from Gitea Actions!"

Runner spouští úlohy přímo na hostiteli (Docker není potřeba). Kontrola stavu runneru:

systemctl status act_runner

Po instalaci

Fail2Ban – ochrana proti útokům hrubou silou

Váš server obsahuje Fail2Ban předkonfigurovaný k ochraně SSH i webového rozhraní Gitea proti útokům hrubou silou.

Pravidlo Max. počet pokusů Doba blokace
SSH5 neúspěšných přihlášení1 hodina
Přihlášení do webu Gitea5 neúspěšných přihlášení1 hodina

Užitečné pří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

Pokud se omylem zablokujete, připojte se přes konzoli VNC v klientském panelu a odblokujte svou IP.

Aktualizace

Gitea je nainstalovaná jako samostatný binární soubor a neaktualizuje se automaticky. Pro ruční aktualizaci stáhněte novou verzi a nahraďte binární soubor:

# 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

Aktualizace OS lze provést přes SSH:

apt update && apt upgrade -y

Přihlašovací údaje serveru

Přihlašovací údaje administrátora Gitea jsou uloženy v /root/.gitea_credentials. Uvidíte je také po připojení přes SSH (zobrazují se v uvítací zprávě).

Správa služeb

# 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ý software

Komponenta Podrobnosti
Ubuntu24.04 LTS
Gitea1.25 (SQLite, Git LFS)
NginxReverzní proxy s SSL
Gitea Actions RunnerVestavěné CI/CD (spouštění na hostiteli)
CertbotLet’s Encrypt SSL
Fail2BanOchrana SSH a Gitea proti útokům hrubou silou

Řešení problémů

Problém Řešení
Prohlížeč zobrazuje varování SSL U výchozího certifikátu podepsaného sebou samým je to očekávané. Klikněte na „Advanced“ a pokračujte. Pro trvalé řešení nastavte doménu a spusťte /opt/setup/get-ssl.sh
Nelze se dostat do webového rozhraní Gitea Kontrola služeb: systemctl status gitea nginx. Ujistěte se, že používáte https:// (ne http)
Git push/pull přes SSH selhává Přidejte veřejný SSH klíč v Gitea (Settings > SSH/GPG Keys). V URL pro klonování použijte git@ , ne root@
Workflow Gitea Actions se nespouští Kontrola runneru: systemctl status act_runner. Soubor workflow musí být v adresáři .gitea/workflows/ (ne .github/workflows/)
Certifikát Let’s Encrypt selhal Ujistěte se, že DNS A záznam směřuje na IP serveru a rozšířil se. Ověřte na dnschecker.org. Port 80 musí být dostupný z internetu kvůli výzvě HTTP-01
Zapomenuté heslo administrátora Připojte se přes SSH a zkontrolujte /root/.gitea_credentialsnebo resetujte: sudo -u git gitea admin user change-password --username admin --password "newpass" --config /etc/gitea/app.ini
Blokováno službou Fail2Ban Odblokujte svou IP přes konzoli VNC v klientském panelu: fail2ban-client set sshd unbanip 1.2.3.4
Zapomenuté heslo root Obnovte jej přes konzoli VNC v klientském panelu