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:
- Vytvořte DNS A záznam směřující vaši doménu na IP serveru:
Typ Název Hodnota A git your.server.ip - Připojte se k serveru přes SSH a upravte konfiguraci Gitea:
Aktualizujte tyto řádky v sekcinano /etc/gitea/app.ini[server]:DOMAIN = git.yourdomain.com SSH_DOMAIN = git.yourdomain.com ROOT_URL = https://git.yourdomain.com/ - 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 |
|---|---|---|
| SSH | 5 neúspěšných přihlášení | 1 hodina |
| Přihlášení do webu Gitea | 5 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 |
|---|---|
| Ubuntu | 24.04 LTS |
| Gitea | 1.25 (SQLite, Git LFS) |
| Nginx | Reverzní proxy s SSL |
| Gitea Actions Runner | Vestavěné CI/CD (spouštění na hostiteli) |
| Certbot | Let’s Encrypt SSL |
| Fail2Ban | Ochrana 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 |