Table of Contents

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.git

Git 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:

  1. Utwórz rekord DNS typu A wskazujący domenę na adres IP serwera:
    Typ Nazwa Wartość
    Agityour.server.ip
  2. 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/
  3. 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.com

Skrypt 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.yaml

Przykł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_runner

Po 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
SSH5 nieudanych logowań1 godzina
Logowanie do interfejsu WWW Gitei5 nieudanych logowań1 godzina

Przydatne polecenia:

# Sprawdź zablokowane adresy IP fail2ban-client status sshd fail2ban-client status gitea
# Odblokuj adres IP fail2ban-client set sshd unbanip 1.2.3.4 fail2ban-client set gitea unbanip 1.2.3.4

Jeś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 gitea

Aktualizacje systemu operacyjnego można zainstalować przez SSH:

apt update && apt upgrade -y

Dane 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 Nginx

Dołączone oprogramowanie

Komponent Szczegóły
Ubuntu24.04 LTS
Gitea1.25 (SQLite, Git LFS)
NginxReverse proxy z obsługą SSL
Gitea Actions RunnerWbudowany CI/CD (host executor)
CertbotLet’s Encrypt SSL
Fail2BanOchrona 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ć.