# Protokollierung / Logging

# Protokollierung / Logging

Was wird protokolliert, wo landen die Logs, und was ist geplant.

## Aktueller Stand

### Logs im Container

Jeder Sub-Container schreibt lokal:

| Log | Pfad im Container | Inhalt | Persistent? |
|---|---|---|---|
| Apache Access | `/var/log/apache2/<vhost>-access.log` (auch per `~/logs/` erreichbar) | HTTP-Requests pro vhost | **Ja** — Bind-Mount + im Restic-Backup |
| Apache Error | `/var/log/apache2/<vhost>-error.log` | Apache-Fehler + PHP-Fehler (via `log_errors = On`) | **Ja** — Bind-Mount + im Restic-Backup |
| PHP Errors | in Apache Error (nicht separat) | fatal/warning/notice — steuerbar per `error_reporting` in Custom-INI | siehe Apache Error |
| msmtp | `/var/log/msmtp.log` | ausgehende Mails (Sender, Empfaenger, Ergebnis) | **Ja** — Bind-Mount + im Restic-Backup |
| Supervisor-Kunden-Prozesse | `~/.webunit/logs/*.log` | stdout/stderr eigener [program:...]-Configs | **Ja** — Home-Volume + im Restic-Backup |
| Container stdout/stderr | via `docker logs` | Apache-Startup + Supervisor-Events + PHP `error_log()` ohne Datei | Nein — Docker-Default (10 MB, 3 Files), Debug-only |
| SSH-Logins in den Container | `/var/log/auth.log` (Container-intern) | SSH-Sessions dieses Kunden | Nein — Redundant zu Node-`ssh-proxy`-Log |
| SSH-Routing (alle Kunden) | Node: `ssh-proxy` Container-Log + `/var/log/hosting-sshpiper.log` | SSH-Verbindungen aller Subs auf der Node, Fail2Ban-Quelle | Ja — Node-persistent |

Container-Logs ueberleben Container-Recreate + Image-Rebuild (Bind-Mount ins
Host-`/srv/hosting/subscriptions/<cid>/logs/`) und sind im taeglichen Restic-
Backup enthalten — auch nach Node-Umzug also verfuegbar.

### Logs auf der Node (ausserhalb Container)

| Log | Pfad | Inhalt |
|---|---|---|
| Hosting-API | `journalctl -u hosting-api` | Node-API-Requests, Rebuilds, Sync-Runs |
| Backup | `/srv/hosting/backup-state.json` + `/var/log/hosting-backup-*.log` | Zeitpunkte, Erfolg/Fehler, Dauer, letzte 50 Events pro Sub |
| SSH-Piper | Container-Logs `ssh-proxy` | SSH-Routing-Entscheidungen (welcher User, welcher Sub) |
| Rebuild-Images | `/var/log/hosting-rebuild-images.log` | Image-Build-Output, Sub-Recreate |
| Self-Update | `/var/log/hosting-self-update.log` | Node zieht Binary + Templates vom Admin |

### Logs im Admin-Panel

| Log | Ort | Inhalt |
|---|---|---|
| Aktivitaets-Log pro Sub | `subscription_events`-Tabelle, sichtbar auf Subscription-Show | Create/Update/Delete, Hostname/DB/Mail-Aenderungen, Backup-Trigger, Install, Restore — wer, wann, was |
| Access-Tokens fuer Kunden | pro Sub sichtbar | Erzeugung + Verwendung von Zugangs-Links |
| Logs-Viewer pro Sub | `subscriptions/{id}/logs` | Live-Tail Apache Access / Error / Container stdout (letzte 50 Zeilen) |
| Monitoring | pro Sub + pro Node | 5-Min-Samples: CPU/RAM/Storage/Load, letzte 31 Tage |

## Zugriff fuer den Kunden

- **SSH in den Container** — direkt `tail -f ~/logs/<vhost>-access.log`
  (`~/logs` ist Symlink auf `/var/log/apache2/`).
- **Log-Viewer im Admin-Panel** — Reseller/Admin sieht letzte 50 Zeilen jedes
  Log-Typs (Apache Access, Error, Container-stdout) per Web ohne SSH.
- **Aktivitaets-Log** — Wer hat wann was im Panel gemacht (nur fuer eigene Subs).

## Geplant / in Arbeit

- **Log-Rotation aktiv steuerbar** — heute unbegrenzt wachsend; geplant
  konfigurierbare Werte pro Sub (Groesse + Anzahl Backups + Retention-Tage).
- **Zentrale Log-Aggregation** — vermutlich Loki/Grafana als Node-uebergreifende
  Sammelstelle mit Retention, Suche und Alerts. Prioritaet mittel.
- **DB-Slow-Query-Log** — heute nicht aktiv; per Custom-DB-Config einzeln
  aktivierbar (`slow_query_log = 1`, `long_query_time = 1`).
- **Auditierbare Backup-/Restore-Events als CSV/JSON-Export** — heute nur im
  Admin sichtbar, nicht exportierbar.
- **Web-Log-Viewer fuer Endkunden** — heute nur Reseller sieht Logs im Panel;
  geplant eigene Kunden-Ansicht mit den letzten N Zeilen der eigenen Sub.

## Datenschutz-Hinweis

Access-Logs enthalten IP-Adressen der Website-Besucher. Diese werden nach
DSGVO-Standard 30 Tage aufbewahrt (per Docker-Log-Rotation faktisch weniger).
Wenn Sie kuerzere Aufbewahrung brauchen: sagen Sie Bescheid, wir konfigurieren
Log-Rotation entsprechend.

## Fragen?

Bei Fragen zu Log-Zugriff / Retention / Exports einfach melden — die meisten
Punkte oben sind Config-Aenderungen, keine Software-Aenderungen.