feather security-check passes. Run it on the server against the live file:
feather security-check --env-file .envSECRET_KEY is a real random value, not the scaffolded placeholder.FLASK_CONFIG=production — set by compose. Confirm with
docker compose exec web printenv FLASK_CONFIGTRUSTED_HOSTS lists the hostnames you serve, so Host-header spoofing cannot forge
absolute URLs in emails and redirects.OAUTH_CALLBACK_URL uses https:// and the exact hostname, www included — and
matches the redirect URI in the Google Cloud Console.JOB_SERIALIZER=json — the default in the generated compose file. pickle will
unpickle arbitrary objects off Redis. Only switch if a job argument genuinely cannot be
JSON-encoded..env on the server is chmod 600 and not in git.feather env check reports no missing keys.A database that is not SQLite, with
deploy/backup.sh in cron and one restore
actually tested.An external uptime monitor pointed at
https://<domain>/healthdocker compose logs capped. The generated file sets max-size: 20m and
max-file: 3. Docker’s default grows until the disk fills.Server backups or snapshots enabled at the provider as well.
Upgrading from feather deploy render
0.9.7 removed feather deploy render. Your existing Dockerfile and render.yaml are
your files and keep working — nothing was deleted from your repo. To adopt the new
layout, run feather docker init; it will not overwrite anything without --force.