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

107 lines
3.0 KiB
Markdown

# 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
```bash
cd deployment/gitea-runner
docker compose stop gitea-runner
```
### Schritt 2: Backup erstellen und .runner Datei entfernen
```bash
# 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
```bash
docker compose up -d gitea-runner
```
### Schritt 4: Runner neu registrieren
```bash
# .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:**
```bash
cat data/.runner | grep -E "(address|instance)"
```
Sollte nur `https://git.michaelschiemer.de` enthalten, keine GitHub-URLs.
2. **Prüfe Runner-Logs:**
```bash
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:**
- Gehe zu: https://git.michaelschiemer.de/admin/actions/runners
- Runner sollte als "Online" angezeigt werden
## Automatisierung
Falls der Runner automatisch neu registriert werden soll:
```bash
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:
```bash
cd deployment/gitea-runner
docker compose stop gitea-runner
```
- Nach Anpassung der Konfiguration Runner neu starten:
```bash
docker compose up -d gitea-runner
```