./data war ein Bind-Mount relativ zum Git-Checkout - bei Dokploy wird
das Repo pro Deploy frisch geklont, ein per CLI angelegter Nutzer war
nach einem reinen Routing-Redeploy spurlos verschwunden. Betraf nicht
nur Nutzer, sondern denselben Api:DataPath für Ereignis-Log/Snapshots/
Anhänge - also jeden Server-Datenbestand bei jedem Redeploy.
- docker-compose.yml: Named Volume "api-data" statt Bind-Mount, lebt
unabhängig vom Checkout im Docker-Daemon.
- backup.sh: auf volume-basiertes Backup umgeschrieben (Alpine-
Hilfscontainer statt direktem Host-Pfad).
- docker/README.md, TODO.md 10.2.4: Vorfall dokumentiert.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Rate Limiting ueber ASP.NET Cores eingebautes
Microsoft.AspNetCore.RateLimiting (keine neue Paketabhaengigkeit):
/api/auth/login auf 5 Versuche/Minute begrenzt (Brute-Force-Schutz),
alle Endpunkte zusaetzlich global auf 120 Anfragen/Minute je IP
- Kestrel MaxRequestBodySize auf 15 MB gedeckelt (Anhaenge sind
clientseitig ohnehin auf 10 MB begrenzt)
- Neu docker/backup.sh: Tar-Archiv von ./data (Ereignis-Logs,
Snapshots, Anhaenge, Nutzer), raeumt Archive aelter als 30 Tage auf,
laeuft direkt auf dem Host
- docker/README.md um Backup- und Rate-Limit-Dokumentation ergaenzt
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>