1. VAPID-Keys aus docker-compose.yml und docker-compose.staging.yml
entfernt. Werden jetzt aus .env gelesen (env_file war schon da,
nur die environment-Override hat die .env-Werte überschrieben).
.env auf DS um die 3 Keys ergänzt:
- VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_CONTACT
Erst Compose-Änderung wirksam — Push-Notifications funktionieren
weiter weil die .env die Werte liefert.
2. Dockerfile-Hardening: Non-root USER appuser.
- groupadd/useradd appuser (UID/GID 1000 für DS-Kompatibilität)
- chown -R appuser:appuser /app /data nach mkdir
- USER appuser vor CMD
Memory says DSM ACLs könnten Probleme machen. Falls Container
nicht startet → Rückbau. Bei Deploy genau hinsehen.
3. E-Mail-Änderungs-Audit-Punkt: kein Vulnerability gefunden.
ProfileUpdate-Schema enthält kein 'email'-Feld. User können
ihre E-Mail-Adresse aktuell gar nicht ändern → kein Takeover-
Vektor wie im Audit vermutet.
- push.py: /vapid-key, /subscribe, /unsubscribe + send_push_to_user/all Helpers
- VAPID Keys in docker-compose.yml (Public + Private)
- Giftköder-Meldung löst automatisch Push an alle Subscriber aus
- ON CONFLICT(endpoint) für idempotentes Re-Subscribe
- Abgelaufene Subscriptions werden bei HTTP 410 auto-gelöscht