Gitea - Przewodnik na start
Gitea to lekka, hostowana samodzielnie usługa Git z wbudowanym CI/CD (Gitea Actions), systemem śledzenia zgłoszeń, wiki oraz rejestrem pakietów. Jest to szybka, prywatna alternatywa dla GitHuba, nad którą masz pełną kontrolę. Obsługuje pull requesty z przeglądem kodu, organizacje i zespoły, edycję kodu z poziomu przeglądarki, webhooki oraz łatwą migrację z GitHuba lub GitLaba. Gitea została napisana w języku Go i zużywa niewiele zasobów, dzięki czemu działa płynnie nawet na niewielkich serwerach. Ten serwer jest dostarczany z w pełni zainstalowaną i skonfigurowaną Giteą oraz kontem administratora i hasłem podanymi podczas składania zamówienia. Wbudowany runner CI/CD jest również zainstalowany i gotowy do użycia.
Krok 1 – Sprawdź, czy Gitea działa
Adres IP serwera oraz hasło użytkownika root znajdziesz w sekcji Server Information na karcie Overview swojego serwera w panelu klienta. Gitea jest dostępna natychmiast po utworzeniu serwera. Otwórz w przeglądarce https://your.server.ip, aby sprawdzić, czy działa.
Dane logowania do Gitea:
- Nazwa użytkownika: admin
- Hasło: hasło administratora podane podczas składania zamówienia
Domyślnie Gitea korzysta z samopodpisanego certyfikatu SSL. Przeglądarka wyświetli ostrzeżenie o bezpieczeństwie. Kliknij Advanced > Proceed (lub Accept the Risk w Firefoxie). Jest to oczekiwane zachowanie i jest bezpieczne. Później możesz zainstalować prawidłowy certyfikat Let’s Encrypt (zobacz Krok 4).
Jeśli serwer znajduje się za routerem VyOS w sieci prywatnej, skonfiguruj przekierowanie portów (22, 80 i 443), aby udostępnić Giteę z Internetu, lub połącz się przez VPN i uzyskaj dostęp do Gitei przy użyciu prywatnego adresu IP serwera.
Krok 2 – Utwórz swoje pierwsze repozytorium
Kliknij przycisk + w prawym górnym rogu i wybierz New Repository. Wprowadź nazwę repozytorium i kliknij Create Repository.
Sklonuj swoje repozytorium przy użyciu HTTPS lub SSH:
# HTTPS git clone https://your.server.ip/admin/my-repo.git # SSH (najpierw dodaj swój klucz publiczny w Settings > SSH/GPG Keys) git clone git@your.server.ip:admin/my-repo.gitGit przez SSH korzysta z portu 22 (standardowy port SSH). Gitea automatycznie zarządza kluczami SSH. Po dodaniu klucza publicznego w interfejsie WWW będzie on od razu dostępny do operacji Git.
Krok 3 – Skonfiguruj własną domenę
Aby korzystać z Gitei pod własną domeną zamiast adresu IP serwera:
- Utwórz rekord DNS typu A wskazujący domenę na adres IP serwera:
Typ Nazwa Wartość A git your.server.ip - Połącz się z serwerem przez SSH i edytuj konfigurację Gitei: nano /etc/gitea/app.ini Zaktualizuj poniższe wpisy w sekcji [server]: DOMAIN = git.yourdomain.com SSH_DOMAIN = git.yourdomain.com ROOT_URL = https://git.yourdomain.com/
- Zaktualizuj konfigurację Nginx i uruchom ponownie usługi: sed -i „s/server_name .*/server_name git.yourdomain.com;/g” /etc/nginx/sites-available/gitea systemctl restart gitea systemctl reload nginx
Zmiany DNS zwykle propagują się w ciągu kilku minut, ale mogą potrwać do 24 godzin. Możesz to sprawdzić na dnschecker.org.
Krok 4 – Włącz SSL Let’s Encrypt
Gdy domena wskazuje już na serwer, zastąp samopodpisany certyfikat bezpłatnym certyfikatem Let’s Encrypt. Połącz się przez SSH i uruchom:
/opt/setup/get-ssl.sh git.yourdomain.comSkrypt zweryfikuje DNS, pobierze certyfikat, skonfiguruje Nginx do obsługi HTTPS oraz automatycznie zaktualizuje konfigurację Gitei. Certyfikat będzie odnawiany automatycznie.
Przed uruchomieniem skryptu upewnij się, że rekord A Twojej domeny został już rozpropagowany. SSL jest opcjonalny. Gitea działa również poprawnie z samopodpisanym certyfikatem.
Krok 5 – CI/CD z Gitea Actions
Twoja instancja Gitei zawiera wbudowany runner CI/CD (Gitea Actions). Jest on zgodny ze składnią workflow znaną z GitHub Actions. Aby z niego korzystać, utwórz w repozytorium plik workflow:
.gitea/workflows/build.yamlPrzykładowy workflow:
name: Build on: [push] jobs: build: runs-on: ubuntu-latest steps: – uses: actions/checkout@v4 – run: echo „Hello from Gitea Actions!”Runner wykonuje zadania bezpośrednio na serwerze (Docker nie jest wymagany). Aby sprawdzić jego stan:
systemctl status act_runnerPo instalacji
Fail2Ban – Ochrona przed atakami brute force
Serwer jest dostarczany z prekonfigurowanym Fail2Ban, który chroni zarówno SSH, jak i interfejs WWW Gitei przed atakami brute force.
| Reguła | Maksymalna liczba prób | Czas blokady |
|---|---|---|
| SSH | 5 nieudanych logowań | 1 godzina |
| Logowanie do interfejsu WWW Gitei | 5 nieudanych logowań | 1 godzina |
Przydatne polecenia:
# Sprawdź zablokowane adresy IP fail2ban-client status sshd fail2ban-client status giteaJeśli przypadkowo zablokujesz sobie dostęp, połącz się przez konsolę VNC w panelu klienta i odblokuj swój adres IP.
Aktualizacje
Gitea jest instalowana jako samodzielny plik binarny i nie aktualizuje się automatycznie. Aby zaktualizować ją ręcznie, pobierz nową wersję i zastąp nią istniejący plik binarny:
# Pobierz nową wersję (zamień X.Y.Z na wybraną wersję) wget -O /tmp/gitea https://dl.gitea.com/gitea/X.Y.Z/gitea-X.Y.Z-linux-amd64 chmod +x /tmp/gitea # Podmień plik binarny i uruchom usługę ponownie systemctl stop gitea cp /tmp/gitea /usr/local/bin/gitea systemctl start giteaAktualizacje systemu operacyjnego można zainstalować przez SSH:
apt update && apt upgrade -yDane dostępowe do serwera
Dane logowania administratora Gitei są zapisane w pliku /root/.gitea_credentials. Zobaczysz je również po połączeniu z serwerem przez SSH (są wyświetlane w komunikacie powitalnym).
Zarządzanie usługami
# Status i zarządzanie usługami systemctl status gitea # sprawdź stan Gitei systemctl restart gitea # uruchom ponownie Giteę systemctl status nginx # sprawdź stan Nginx (reverse proxy) systemctl reload nginx # przeładuj Nginx po zmianie konfiguracji systemctl status act_runner # sprawdź stan runnera CI/CD # Narzędzia administracyjne Gitei 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 # Kopia zapasowa bazy danych (SQLite) cp /var/lib/gitea/data/gitea.db /root/gitea-backup-$(date +%Y%m%d).db # Logi tail -f /var/lib/gitea/log/gitea.log # log aplikacji Gitea journalctl -u gitea -f # dziennik systemd tail -f /var/log/nginx/error.log # log błędów NginxDołączone oprogramowanie
| Komponent | Szczegóły |
|---|---|
| Ubuntu | 24.04 LTS |
| Gitea | 1.25 (SQLite, Git LFS) |
| Nginx | Reverse proxy z obsługą SSL |
| Gitea Actions Runner | Wbudowany CI/CD (host executor) |
| Certbot | Let’s Encrypt SSL |
| Fail2Ban | Ochrona SSH i Gitei przed atakami brute force |
Rozwiązywanie problemów
| Problem | Rozwiązanie |
|---|---|
| Przeglądarka wyświetla ostrzeżenie SSL | Jest to oczekiwane zachowanie przy domyślnym samopodpisanym certyfikacie. Kliknij „Advanced” i kontynuuj. Aby trwale rozwiązać problem, skonfiguruj domenę i uruchom /opt/setup/get-ssl.sh |
| Brak dostępu do interfejsu WWW Gitei | Sprawdź usługi: systemctl status gitea nginx. Upewnij się, że korzystasz z https://, a nie http:// |
| Polecenia Git push/pull przez SSH nie działają | Dodaj swój klucz publiczny SSH w Gitei (Settings > SSH/GPG Keys). W adresie repozytorium używaj prefiksu git@, a nie root@ |
| Workflow Gitea Actions nie uruchamia się | Sprawdź runner: systemctl status act_runner. Plik workflow musi znajdować się w katalogu .gitea/workflows/, a nie .github/workflows/ |
| Nie udało się uzyskać certyfikatu Let’s Encrypt | Upewnij się, że rekord DNS typu A wskazuje na adres IP serwera i został już rozpropagowany. Sprawdź to na dnschecker.org. Port 80 musi być dostępny z Internetu na potrzeby weryfikacji HTTP-01. |
| Zapomniane hasło administratora | Połącz się przez SSH i sprawdź plik /root/.gitea_credentials lub zresetuj hasło poleceniem: sudo -u git gitea admin user change-password –username admin –password „newpass” –config /etc/gitea/app.ini |
| Blokada przez Fail2Ban | Skorzystaj z konsoli VNC w panelu klienta, aby odblokować swój adres IP: fail2ban-client set sshd unbanip 1.2.3.4 |
| Zapomniane hasło użytkownika root | Skorzystaj z konsoli VNC w panelu klienta, aby je zresetować. |