# Incident Response Runbook — LeoCRM ## Schnellreferenz | Szenario | Erste Maßnahme | Escalation | |----------|---------------|------------| | Server offline | Coolify Dashboard prüfen | SSH: root@46.225.91.159 | | DB offline | `docker exec postgres-* psql -U crm_user -d crm_db -c "SELECT 1"` | Backup restore prüfen | | Redis offline | `docker exec redis-* redis-cli ping` | Worker neustarten | | App 500 Errors | `docker logs crm_app-* --tail 100` | Logs in Coolify prüfen | | Worker hängt | `docker logs crm_worker-* --tail 100` | ARQ Queue in Redis prüfen | | Disk full | `df -h` + `docker system prune` | Alte Backups löschen | | Deploy failed | Coolify Deploy Logs | Git Status prüfen | ## 1. Server offline ### Symptome - https://crm.media-on.de nicht erreichbar - Coolify (https://server.media-on.de) nicht erreichbar ### Maßnahmen 1. SSH versuchen: `ssh root@46.225.91.159` 2. Wenn SSH geht: `docker ps` — welche Container laufen? 3. Coolify neustarten: `docker restart coolify` 4. Traefik prüfen: `docker logs coolify-proxy --tail 50` 5. Wenn Hetzner VPS offline: Hetzner Console (https://console.hetzner.cloud) → Server neustarten ## 2. Datenbank offline ### Symptome - Health Check: `database: down` - App: 500 Errors auf allen API-Routen - Frontend: "Verbindung fehlgeschlagen" ### Maßnahmen 1. Container prüfen: `docker ps | grep postgres` 2. Logs: `docker logs postgres-xf7smknlger3hvkrsb910tui-* --tail 100` 3. Verbindung testen: `docker exec postgres-* psql -U crm_user -d crm_db -c "SELECT 1"` 4. Wenn DB nicht startet: Disk voll? `df -h` 5. Wenn DB korrupt: Backup restore mit `python scripts/restore.py` 6. Benachrichtigung: System Dashboard → Alerts → Notification an Admin ## 3. Redis offline ### Symptome - Sessions funktionieren nicht (Login loop) - Worker-Jobs werden nicht ausgeführt - WebSocket-Chat funktioniert nicht ### Maßnahmen 1. Container prüfen: `docker ps | grep redis` 2. Logs: `docker logs redis-xf7smknlger3hvkrsb910tui-* --tail 50` 3. Neustart: `docker restart redis-xf7smknlger3hvkrsb910tui-*` 4. Wenn Redis korrupt: `docker exec redis-* redis-cli FLUSHALL` (Achtung: löscht Sessions!) 5. Worker neustarten: `docker restart crm_worker-xf7smknlger3hvkrsb910tui-*` ## 4. App 500 Errors ### Symptome - API-Routen returnieren 500 - Frontend zeigt Fehlermeldungen ### Maßnahmen 1. Logs: `docker logs crm_app-xf7smknlger3hvkrsb910tui-* --tail 100` 2. Health Check: `curl https://crm.media-on.de/api/v1/health` 3. Wenn Migration fehlt: `docker exec crm_app-* python -m alembic upgrade head` 4. Wenn Plugin fehlerhaft: Plugin in Settings deaktivieren 5. Wenn Code-Bug: Fix committen + pushen + `bash scripts/fast-deploy.sh full` ## 5. Worker hängt ### Symptome - Background-Jobs werden nicht ausgeführt (Mail-Sync, Backups, Search-Index) - ARQ Queue wächst ### Maßnahmen 1. Logs: `docker logs crm_worker-xf7smknlger3hvkrsb910tui-* --tail 100` 2. Redis Queue prüfen: `docker exec redis-* redis-cli LLEN arq:queue` 3. Worker neustarten: `docker restart crm_worker-xf7smknlger3hvkrsb910tui-*` 4. Wenn Queue voll: `docker exec redis-* redis-cli DEL arq:queue` (Achtung: löscht ausstehende Jobs!) ## 6. Disk full ### Symptome - DB kann nicht schreiben - Uploads schlagen fehl - Backups schlagen fehl ### Maßnahmen 1. Disk prüfen: `df -h` 2. Docker cleanup: `docker system prune -a --volumes` (Achtung: nur ungenutzte Container/Images) 3. Alte Backups löschen: `ls /backups/ | head -20` + `rm -rf /backups/leocrm_backup_oldest` 4. Logs löschen: `docker logs crm_app-* --tail 0 2>&1 | wc -l` + `truncate -s 0 $(docker inspect --format='{{.LogPath}}' crm_app-*)` 5. Temp-Dateien: `rm -rf /tmp/leocrm_*` ## 7. Deploy failed ### Symptome - Coolify zeigt Deploy Status: `failed` - App läuft noch mit altem Code ### Maßnahmen 1. Coolify Deploy Logs prüfen (https://server.media-on.de) 2. Git Status: `git status && git log --oneline -5` 3. Lokal bauen: `cd frontend && npm run build` — tsc errors? 4. Backend import testen: `/opt/venv/bin/python -c "import app.main"` 5. Fix committen + pushen + neu deployen ## Post-Mortem Template ```markdown ## Incident: [Titel] - **Datum**: YYYY-MM-DD HH:MM - **Dauer**: X Minuten/Stunden - **Auswirkung**: [Welche User/Funktionen betroffen] - **Ursache**: [Root Cause] - **Lösung**: [Was wurde getan] - **Lessons Learned**: [Was können wir besser machen] - **Action Items**: [Konkrete Aufgaben um Wiederholung zu verhindern] ``` ## Kontakt - Server: root@46.225.91.159 (SSH Key: ~/.ssh/id_ed25519) - Coolify: https://server.media-on.de - Forgejo: https://forgejo.media-on.de/Leopoldadmin/leocrm - App: https://crm.media-on.de