# Operations ## Apache - Server: Apache HTTPD - Erforderlich: `mod_rewrite` aktiv - Erforderlich: `AllowOverride All` im Projektpfad - Root-`.htaccess` muss vorhanden sein und wird für Routing/Zugriffsschutz genutzt. ## Cron Cleanup Täglich ausführen: ```bash php /pfad/zum/projekt/bin/cleanup.php ``` ## Retention - Drafts: `config/app.php -> retention.draft_days` (Default 14) - Submissions: `config/app.php -> retention.submission_days` (Default 90) ## Logs - `storage/logs/cleanup.log` - `storage/logs/mail.log` - `storage/logs/app.log` - `storage/logs/php_runtime.log` - `storage/logs/php_fatal.log` ## Rate Limiting - Konfiguration: `config/app.php -> rate_limit` - Persistenz: `storage/rate_limit/` - Detaillierte Doku: `docs/RATE_LIMITING.md` - Bei erhöhten `429`-Antworten zuerst `requests/window_seconds` prüfen und gegen reale Nutzerlast kalibrieren. ## Backup Regelmäßig sichern: - `storage/submissions/` - `storage/uploads/` - `config/` `storage/drafts/` ist temporär und kann bei Bedarf ausgeschlossen werden. ## Restore 1. Projektdateien deployen. 2. Backup von `storage/submissions` und `storage/uploads` zurückspielen. 3. `config/` wiederherstellen. 4. Schreibrechte prüfen. ## Troubleshooting - Keine Mails: Mailfunktion des Hosters prüfen, `mail.log` ansehen. - Upload Fehler: `upload_max_filesize` / `post_max_size` und Schema-Limits prüfen. - Login geht nicht: `admin.password_hash` prüfen, ggf. temporär `password_plain_fallback` nutzen. - ZIP Download fehlgeschlagen: `ZipArchive` Erweiterung auf Hosting prüfen. - Viele `429` Antworten: `docs/RATE_LIMITING.md` prüfen, Limits anpassen oder `storage/rate_limit/` kontrollieren. - 500 ohne Apache/PHP-Fehlerausgabe: `storage/logs/php_fatal.log` und `storage/logs/php_runtime.log` prüfen.