- Healthcheck für den Cache-Server, damit der Runner (depends_on: condition: service_healthy) wirklich wartet, bis der Cache-Server auf Port 8088 Verbindungen annimmt, statt nur den Container-Start abzuwarten - Veralteten Kommentarverweis auf "cache-config.yaml" korrigiert zu "config/cache.yaml" - README: Hinweis ergänzt, dass Port 8088 zwingend auf allen Host-Interfaces lauschen muss (sonst für Job-Container unerreichbar) und daher per Host-Firewall gegen Zugriff von außen abgesichert werden sollte Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014kFWpJ4p1jQ2pJf3S13FWE
gitea_runner
Enthält eine einfache docker-compose, um einen gitea_runner zu starten.
Verzeichnisstruktur
config/runner.yaml— Konfiguration des Runnersconfig/cache.yaml— Konfiguration des Cache-Serversdata/runner— persistenter Zustand des Runners (u. a..runner-Registrierungsdatei)data/cache— persistente Cache-Datencache-secret— gemeinsames Secret für Runner ↔ Cache-Server (siehe unten, nicht in Git)
Einrichtung
Vor dem ersten Start muss auf dem Host ein Secret für die Authentifizierung zwischen Runner und Cache-Server erzeugt werden:
openssl rand -hex 32 > cache-secret
chmod 600 cache-secret
Diese Datei darf nicht committet werden (sie ist über .gitignore ausgeschlossen)
und muss auf jedem Host, auf dem dieses Setup läuft, individuell erzeugt werden.
Migration von einer älteren Version dieses Compose-Setups
Frühere Versionen legten die Runner-Daten direkt unter ./data ab und hatten kein
config/-Verzeichnis. Beim Umstieg auf diese Version muss der bestehende Datenordner
verschoben werden, sonst registriert sich der Runner erneut (verwaiste Registrierung
auf der Gitea-Instanz) und der bisherige Cache geht verloren:
# Runner vorher stoppen
docker compose down
# Repository pullen
git pull
# Vorhandene Daten (u. a. die .runner-Datei) nach data/runner verschieben
mv data data_old
mkdir -p data
mv data_old data/runner
# Danach ganz normal wieder starten
docker compose up -d
Falls vorher schon ein eigenständiger Cache-Ordner existierte (z. B. unter
data/runner/cache oder cache-data/ aus einer Zwischenversion), diesen entsprechend
nach data/cache verschieben.
Cache-Service
Der Cache läuft als eigener Service (cache in docker-compose.yaml), getrennt vom
Runner, damit die bis zu 5 parallel laufenden Jobs weiterhin jeweils ihr eigenes,
isoliertes Docker-Netzwerk bekommen und sich nicht gegenseitig erreichen können.
Job-Container erreichen den Cache-Server trotzdem über den Docker-Host (cachehost
wird per --add-host=cachehost:host-gateway auf das Host-Gateway gemappt, siehe
config/runner.yaml -> container.options), der Port 8088 des Cache-Servers ist
dafür auf dem Host veröffentlicht.
Achtung: Da Job-Container den Cache-Server nur über den Host erreichen können,
muss Port 8088 auf allen Host-Interfaces lauschen (0.0.0.0) — eine engere Bindung
(z. B. nur 127.0.0.1) würde den Cache für Jobs unerreichbar machen. Der Zugriff ist
zwar durch das Secret in cache-secret geschützt, trotzdem sollte Port 8088 per
Host-Firewall von außen (Internet/fremdes LAN) blockiert werden, z. B.:
ufw deny 8088/tcp