Gitea pełni rolę lekkiego, samodzielnego serwera Git z webowym interfejsem (odpowiednik „mini GitLaba” / GitHuba) dla:
homelab-docs, pliki Docker Compose),Dostęp do Gitei jest realizowany przez Traefika pod adresem:
http://gitea.labGitea składa się z dwóch głównych kontenerów:
gitea – aplikacja Gitea (interfejs WWW, API, obsługa repozytoriów),gitea-db – baza danych PostgreSQL.Gitea jest podpięta do dwóch sieci:
gitea_net – sieć wewnętrzna do komunikacji z bazą danych,proxy – sieć współdzielona z Traefikiem, aby wystawić Giteę jako gitea.lab.Plik: /srv/docker/gitea/compose.yml:
version: "3.8"
services:
db:
image: postgres:16
container_name: gitea-db
restart: unless-stopped
environment:
POSTGRES_DB: gitea
POSTGRES_USER: gitea
POSTGRES_PASSWORD: "Gitea_2024!_db"
volumes:
- ./postgres:/var/lib/postgresql/data
networks:
- gitea_net
gitea:
image: gitea/gitea:1.22-rootless
container_name: gitea
restart: unless-stopped
environment:
USER_UID: 1000 # UID użytkownika 'marcin'
USER_GID: 1003 # GID użytkownika 'marcin'
# Konfiguracja bazy danych
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: db:5432
GITEA__database__NAME: gitea
GITEA__database__USER: gitea
GITEA__database__PASSWD: "Gitea_2024!_db"
# Konfiguracja serwera HTTP/URL
GITEA__server__ROOT_URL: "http://gitea.lab/"
GITEA__server__DOMAIN: "gitea.lab"
GITEA__server__HTTP_PORT: 3000
volumes:
- ./gitea:/var/lib/gitea
# Tymczasowy bezpośredni dostęp (jeśli potrzebny)
# ports:
# - "3002:3000" # http://10.10.20.10:3002 (czasowy dostęp)
# - "2222:22" # SSH do repo (opcjonalnie, gdy Gitea SSH jest używane)
depends_on:
- db
networks:
- gitea_net
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`gitea.lab`)"
- "traefik.http.routers.gitea.entrypoints=web"
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
networks:
gitea_net:
name: gitea_net
proxy:
external: true
Dane Gitei:
./gitea → montowane do /var/lib/gitea w kontenerze Gitei.
Dane Postgresa:
./postgres → montowane do /var/lib/postgresql/data w kontenerze bazy.
Dzięki temu:
gitea/ i postgres/.Gitea działa w trybie rootless, z UID/GID użytkownika marcin:
USER_UID: 1000USER_GID: 1003Przed pierwszym uruchomieniem zostały poprawione uprawnienia:
chown -R 1000:1003 gitea postgres
To zapewnia, że kontener Gitei ma prawo zapisu do katalogów z danymi.
Konfiguracja bazy danych:
PostgreSQLdb:5432 (serwis w docker-compose, sieć gitea_net)giteagiteaGitea_2024!_dbTe same parametry są ustawione:
w zmiennych środowiskowych kontenera Gitei,
oraz były podane podczas wstępnej konfiguracji Gitei w przeglądarce.
Gitea jest dostępna przez Traefika jako http://gitea.lab.
Dlatego w konfiguracji serwera Gitei:
ROOT_URL = http://gitea.lab/DOMAIN = gitea.labHTTP_PORT = 3000 (port wewnątrz kontenera)Dzięki temu:
http://gitea.lab/,IP 10.10.20.10:3002.Traefik wykrywa kontener Gitei przez provider Docker i sieć proxy.
Etykiety:
labels:
- "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`gitea.lab`)"
- "traefik.http.routers.gitea.entrypoints=web"
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
Wymagania:
gitea.lab → 10.10.20.10.Przepływ:
http://gitea.lab.gitea.lab na 10.10.20.10.Host: gitea.lab.gitea kieruje ruch do kontenera Gitei na porcie 3000.http://gitea.labgit clone http://gitea.lab/marcin/homelab-docs.git
git clone http://gitea.lab/marcin/jakies-inne-repo.git
Daje to możliwość:
homelab-docs) na laptopie (VS Code),Jeśli skonfigurujesz port SSH Gitei:
ports:
- "2222:22"
Klonowanie przez SSH (przykład):
git clone ssh://git@gitea.lab:2222/marcin/homelab-docs.git
(Na razie można zostać przy HTTP, jeśli SSH nie jest potrzebne.)
Dokumentacja
Repo: homelab-docs → źródło dla docs.lab (Material for MkDocs).
Infra as Code
Pliki compose.yml dla Traefika, Portainera, Gitei, monitoringu itd. w osobnych repozytoriach.
Backup konfiguracji
Eksporty konfiguracji MikroTika, pliki konfiguracyjne Pi-hole, Traefika, Prometheusa, Grafany – trzymane w Gicie.
Dzięki temu:
Jeśli zmienisz compose.yml lub chcesz zaktualizować obraz Gitei / Postgresa:
cd /srv/docker/gitea
# Pobranie nowych wersji obrazów (opcjonalnie)
docker compose pull
# Restart z aktualizacją
docker compose up -d
Przed większymi zmianami warto:
./gitea i ./postgres,pg_dump).gitea_net),proxy, host gitea.lab)../gitea, ./postgres).http://gitea.lab.git push → Gitea → git pull na rpi5.