Files
michaelschiemer/deployment/gitea-runner/FIX_RUNNER_CONFIG.md
Michael Schiemer af98069eba fix: Reduce Gitea runner request frequency to prevent DDoS-like behavior
- Increase fetch_interval from 2s to 10s to reduce load on Gitea
- Increase fetch_timeout from 5s to 30s for better error handling
- Add documentation about runner overloading Gitea and how to fix it
- Prevents 504 errors caused by runner bombarding Gitea with requests
2025-11-08 17:56:11 +01:00

3.0 KiB

Gitea Runner Konfiguration korrigieren

Problem

Der Gitea Runner verwendet gemischte URLs (GitHub + Gitea) und fällt bei 504-Fehlern auf GitHub zurück, was zu Timeouts führt.

Lösung: Runner neu registrieren

Schritt 1: Runner stoppen

cd deployment/gitea-runner
docker compose stop gitea-runner

Schritt 2: Backup erstellen und .runner Datei entfernen

# Backup erstellen
cp data/.runner data/.runner.backup.$(date +%s)

# .runner Datei entfernen (wird bei neuer Registration neu erstellt)
rm -f data/.runner

Schritt 3: Runner starten

docker compose up -d gitea-runner

Schritt 4: Runner neu registrieren

# .env Datei laden
source .env

# Runner registrieren (nur mit korrekter Gitea-URL)
docker compose exec -T gitea-runner act_runner register \
  --instance "${GITEA_INSTANCE_URL}" \
  --token "${GITEA_RUNNER_REGISTRATION_TOKEN}" \
  --name "${GITEA_RUNNER_NAME}" \
  --labels "${GITEA_RUNNER_LABELS}"

Wichtig: Bei der Aufforderung "Runner is already registered, overwrite local config? [y/N]" mit y antworten.

Schritt 5: Verifikation

  1. Prüfe .runner Datei:

    cat data/.runner | grep -E "(address|instance)"
    

    Sollte nur https://git.michaelschiemer.de enthalten, keine GitHub-URLs.

  2. Prüfe Runner-Logs:

    docker compose logs gitea-runner --tail=50 | grep -E "(github|instance|declare)"
    

    Sollte declare successfully zeigen und keine GitHub-URLs mehr enthalten.

  3. Prüfe in Gitea UI:

Automatisierung

Falls der Runner automatisch neu registriert werden soll:

cd deployment/gitea-runner
./unregister.sh  # Falls vorhanden
./register.sh    # Neu registrieren

Troubleshooting

Runner registriert sich nicht:

  • Prüfe, ob Gitea erreichbar ist: curl https://git.michaelschiemer.de/api/healthz
  • Prüfe, ob der Registration Token noch gültig ist
  • Prüfe Runner-Logs: docker compose logs gitea-runner

Runner verwendet immer noch GitHub:

  • Stelle sicher, dass die .runner Datei nur die korrekte Gitea-URL enthält
  • Prüfe, ob es mehrere Runner-Instanzen gibt: docker ps | grep runner
  • Prüfe Workflow-Definitionen auf GitHub-URLs

504 Gateway Timeout:

  • Prüfe Gitea-Container: docker logs gitea
  • Prüfe Traefik-Logs: docker logs traefik
  • Stelle sicher, dass Gitea nicht überlastet ist

Runner überlastet Gitea (DDoS-ähnliches Verhalten):

  • Der Runner kann Gitea mit zu vielen Anfragen überlasten, besonders bei Fehlern
  • Lösung: fetch_interval in config.yaml erhöhen (Standard: 2s → Empfohlen: 10s oder mehr)
  • Lösung: fetch_timeout erhöhen (Standard: 5s → Empfohlen: 30s)
  • Sofortmaßnahme: Runner deaktivieren/stoppen, bis Gitea wieder stabil ist:
    cd deployment/gitea-runner
    docker compose stop gitea-runner
    
  • Nach Anpassung der Konfiguration Runner neu starten:
    docker compose up -d gitea-runner