Add phase 6: backup/restore scripts and full README

- backup.sh: pg_dump (custom format), media volume and .env in one
  archive with retention (KEEP), cron example
- restore.sh: confirmation, restores .env if missing, pg_restore
  --clean in one transaction, replaces media, restarts the app
- Fix: MEDIA_ROOT=/data/media in the image so photos land on the volume
- README: installation, Nginx/Cloudflare client-IP setup, configuration
  table, AI and Instagram notes, update, backup, troubleshooting, security
- Test settings independent of the local .env

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Kyle Dammann
2026-10-30 21:56:01 +01:00
co-authored by Claude Opus 5.5
parent 60785e2437
commit f96cbe965e
6 changed files with 305 additions and 31 deletions
+17
View File
@@ -15,3 +15,20 @@ STORAGES = {
# Static files are served by the finders in tests; no collectstatic needed.
WHITENOISE_USE_FINDERS = True
WHITENOISE_AUTOREFRESH = True
# Deterministic defaults, independent of a real .env (the Docker test service loads it).
import ipaddress # noqa: E402
OPENAI_API_KEY = ""
OPENAI_MODEL = "gpt-5-mini"
OPENAI_REASONING_EFFORT = "low"
AI_RATE_LIMIT_PER_USER_PER_DAY = 0
AI_RATE_LIMIT_GLOBAL_PER_DAY = 0
COMMENT_RATE_LIMIT_PER_HOUR = 30
LOGIN_MAX_FAILURES_PER_EMAIL = 5
LOGIN_MAX_FAILURES_PER_IP = 30
LOGIN_LOCKOUT_MINUTES = 15
IMAGE_MAX_UPLOAD_MB = 15
IMAGE_MAX_PER_RECIPE = 10
CLIENT_IP_HEADER = ""
TRUSTED_PROXIES = [ipaddress.ip_network(n) for n in ("127.0.0.0/8", "::1/128", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16")]