Auf dem Server läuft Gunicorn als www-data, Deployment (git pull/migrate)
aber als root. db.sqlite3 lag bisher direkt im Projektordner, den nur root
beschreiben kann - www-data konnte also nie in die DB schreiben (Sessions,
jetzt auch UsageEvent). Naheliegender Fix wäre gewesen, www-data Schreibzugriff
auf den ganzen Projektordner zu geben, das hätte aber auch den Quellcode/.git
für den Webserver-Prozess beschreibbar gemacht - unnötiges Risiko.
Stattdessen: SQLite liegt jetzt in data/db.sqlite3, einem eigenen, isolierten
Verzeichnis (wird von Django automatisch angelegt). Nur dieses eine
Verzeichnis muss www-data gehören, der Rest des Projekts bleibt root-only.
- piomint/settings.py: DATABASES zeigt auf DATA_DIR (BASE_DIR/data), die per
Path.mkdir(exist_ok=True) beim Settings-Import automatisch angelegt wird
- .gitignore: /data/ und db.sqlite3 ergänzt - die echte Datenbank darf nie
ins Repo gelangen (Sessions/User-Daten)
- Alte, ungenutzte db.sqlite3 (leerer Platzhalter) aus dem Repo entfernt
Lokal getestet: frisches migrate legt data/db.sqlite3 automatisch an,
Track-Endpoint und Dashboard-Auth-Schutz funktionieren mit dem neuen Pfad.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>