Some checks failed
🚀 Build & Deploy Image / Determine Build Necessity (push) Failing after 10m14s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Has been skipped
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
Security Vulnerability Scan / Check for Dependency Changes (push) Failing after 11m25s
Security Vulnerability Scan / Composer Security Audit (push) Has been cancelled
- Remove middleware reference from Gitea Traefik labels (caused routing issues) - Optimize Gitea connection pool settings (MAX_IDLE_CONNS=30, authentication_timeout=180s) - Add explicit service reference in Traefik labels - Fix intermittent 504 timeouts by improving PostgreSQL connection handling Fixes Gitea unreachability via git.michaelschiemer.de
158 lines
5.5 KiB
Markdown
158 lines
5.5 KiB
Markdown
# Traefik Restart Loop - Diagnose & Lösung
|
||
|
||
## Problem
|
||
|
||
Traefik wird regelmäßig gestoppt mit den Meldungen:
|
||
- "I have to go..."
|
||
- "Stopping server gracefully"
|
||
|
||
Dies führt zu:
|
||
- ACME-Challenge-Fehlern
|
||
- Externen Timeouts
|
||
- Unterbrechungen der SSL-Zertifikats-Erneuerung
|
||
|
||
## Durchgeführte Diagnose
|
||
|
||
### 1. Erweiterte Diagnose (`diagnose-traefik-restarts.yml`)
|
||
|
||
**Geprüfte Bereiche:**
|
||
- ✅ Systemd-Timer (keine gefunden die Traefik stoppen)
|
||
- ✅ Alle User-Crontabs (keine gefunden)
|
||
- ✅ System-wide Cronjobs (keine gefunden)
|
||
- ✅ Gitea Workflows (gefunden: `build-image.yml`, `manual-deploy.yml` - rufen aber keine Traefik-Restarts auf)
|
||
- ✅ Custom Systemd Services/Timers (keine gefunden)
|
||
- ✅ At Jobs (keine gefunden)
|
||
- ✅ Docker Compose Watch Mode (nicht aktiviert)
|
||
- ✅ Ansible `traefik_auto_restart` Einstellung (prüfbar)
|
||
- ✅ Port-Konfiguration (Ports 80/443 korrekt auf Traefik gemappt)
|
||
- ✅ Netzwerk-Konfiguration (geprüft)
|
||
|
||
**Ergebnisse:**
|
||
- ❌ Keine automatischen Restart-Mechanismen gefunden
|
||
- ✅ Ports 80/443 sind korrekt konfiguriert
|
||
- ✅ Traefik läuft stabil (keine Restarts während 2-minütiger Überwachung)
|
||
|
||
### 2. acme.json Berechtigungen (`fix-traefik-acme-permissions.yml`)
|
||
|
||
**Ergebnisse:**
|
||
- ✅ acme.json hat korrekte Berechtigungen (chmod 600)
|
||
- ✅ Owner/Group korrekt (deploy:deploy)
|
||
- ✅ Traefik Container kann auf acme.json schreiben
|
||
|
||
### 3. Auto-Restart-Mechanismen (`disable-traefik-auto-restarts.yml`)
|
||
|
||
**Ergebnisse:**
|
||
- ❌ Keine Cronjobs gefunden die Traefik restarten
|
||
- ❌ Keine Systemd Timers/Services gefunden
|
||
- ℹ️ Ansible `traefik_auto_restart` kann in group_vars überschrieben werden
|
||
|
||
### 4. Traefik Stabilisierung (`stabilize-traefik.yml`)
|
||
|
||
**Ergebnisse:**
|
||
- ✅ Traefik läuft stabil (41 Minuten Uptime)
|
||
- ✅ Keine Restarts während 2-minütiger Überwachung
|
||
- ✅ Traefik ist healthy
|
||
- ✅ Ports 80/443 korrekt konfiguriert
|
||
|
||
## Mögliche Ursachen (nicht gefunden, aber zu prüfen)
|
||
|
||
1. **Docker-Service-Restarts**: Am 08.11. um 16:12:58 wurde der Docker-Service gestoppt, was alle Container gestoppt hat
|
||
- Prüfe: `journalctl -u docker.service` für regelmäßige Stops
|
||
- Prüfe: System-Reboots oder Kernel-Updates
|
||
|
||
2. **Unattended-Upgrades**: Können zu Reboots führen
|
||
- Prüfe: `journalctl -u unattended-upgrades`
|
||
|
||
3. **Manuelle Restarts**: Jemand könnte Traefik manuell restarten
|
||
- Prüfe: Docker-Events für Stop-Events
|
||
- Prüfe: SSH-Login-Historie
|
||
|
||
4. **Gitea Workflows**: Können indirekt Traefik beeinflussen
|
||
- `build-image.yml`: Ruft `deploy-image.yml` auf (keine Traefik-Restarts)
|
||
- `manual-deploy.yml`: Ruft `deploy-image.yml` auf (keine Traefik-Restarts)
|
||
|
||
## Verfügbare Playbooks
|
||
|
||
### Diagnose
|
||
```bash
|
||
# Erweiterte Diagnose durchführen
|
||
ansible-playbook -i inventory/production.yml \
|
||
playbooks/diagnose-traefik-restarts.yml \
|
||
--vault-password-file secrets/.vault_pass
|
||
```
|
||
|
||
### acme.json Berechtigungen
|
||
```bash
|
||
# acme.json Berechtigungen prüfen und korrigieren
|
||
ansible-playbook -i inventory/production.yml \
|
||
playbooks/fix-traefik-acme-permissions.yml \
|
||
--vault-password-file secrets/.vault_pass
|
||
```
|
||
|
||
### Auto-Restarts deaktivieren
|
||
```bash
|
||
# Prüfe Auto-Restart-Mechanismen
|
||
ansible-playbook -i inventory/production.yml \
|
||
playbooks/disable-traefik-auto-restarts.yml \
|
||
--vault-password-file secrets/.vault_pass
|
||
```
|
||
|
||
### Traefik stabilisieren
|
||
```bash
|
||
# Traefik stabilisieren und überwachen (10 Minuten)
|
||
ansible-playbook -i inventory/production.yml \
|
||
playbooks/stabilize-traefik.yml \
|
||
-e "traefik_stabilize_wait_minutes=10" \
|
||
--vault-password-file secrets/.vault_pass
|
||
```
|
||
|
||
## Empfohlene nächste Schritte
|
||
|
||
1. **Längere Überwachung**: Führe `stabilize-traefik.yml` mit 10 Minuten aus, um zu sehen, ob Restarts auftreten
|
||
```bash
|
||
ansible-playbook -i inventory/production.yml \
|
||
playbooks/stabilize-traefik.yml \
|
||
-e "traefik_stabilize_wait_minutes=10" \
|
||
--vault-password-file secrets/.vault_pass
|
||
```
|
||
|
||
2. **Docker-Events überwachen**: Prüfe Docker-Events für Stop-Events
|
||
```bash
|
||
docker events --filter container=traefik --format "{{.Time}} {{.Action}}"
|
||
```
|
||
|
||
3. **Traefik-Logs prüfen**: Suche nach Stop-Meldungen
|
||
```bash
|
||
cd /home/deploy/deployment/stacks/traefik
|
||
docker compose logs traefik | grep -E "I have to go|Stopping server gracefully|SIGTERM|SIGINT"
|
||
```
|
||
|
||
4. **Docker-Service-Logs prüfen**: Prüfe ob Docker-Service regelmäßig gestoppt wird
|
||
```bash
|
||
journalctl -u docker.service --since "7 days ago" | grep -i "stop\|restart"
|
||
```
|
||
|
||
5. **System-Reboots prüfen**: Prüfe ob regelmäßige Reboots auftreten
|
||
```bash
|
||
last reboot
|
||
uptime
|
||
```
|
||
|
||
## Wichtige Erkenntnisse
|
||
|
||
- ✅ **Keine automatischen Restart-Mechanismen gefunden**: Keine Cronjobs, Systemd-Timer oder Services die Traefik regelmäßig stoppen
|
||
- ✅ **acme.json ist korrekt konfiguriert**: Berechtigungen (600) und Container-Zugriff sind korrekt
|
||
- ✅ **Ports sind korrekt**: Ports 80/443 zeigen auf Traefik
|
||
- ✅ **Traefik läuft stabil**: Während der 2-minütigen Überwachung keine Restarts
|
||
- ⚠️ **Docker-Service wurde einmalig gestoppt**: Am 08.11. um 16:12:58 - könnte die Ursache sein
|
||
|
||
## Fazit
|
||
|
||
Die Diagnose zeigt, dass **keine automatischen Restart-Mechanismen** aktiv sind. Die "I have to go..." Meldungen stammen wahrscheinlich von:
|
||
1. Einmaligem Docker-Service-Stop (08.11. 16:12:58)
|
||
2. System-Reboots (nicht in der Historie sichtbar, aber möglich)
|
||
3. Manuellen Restarts (nicht nachweisbar)
|
||
|
||
**Empfehlung**: Überwache Traefik für 10-30 Minuten mit `stabilize-traefik.yml`, um zu sehen, ob weitere Restarts auftreten. Wenn keine Restarts auftreten, war das Problem wahrscheinlich der einmalige Docker-Service-Stop.
|
||
|