v1.1.0 Phase 2: container hardening, backups, CD rollback #95
No reviewers
Labels
No labels
area:ai
area:ci-cd
area:notifications
area:observability
area:public-pages
backlog
bug
duplicate
enhancement
help wanted
invalid
question
type:decision
type:feature
type:infra
type:maintenance
type:security
v1.0.1
v1.1.0
v1.2.0
v1.3.0
v2.0.0
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/WeatherBot!95
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/v1.1.0-phase2-infra"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Infra & deployment hardening — the second v1.1.0 slice.
#64 — Container hardening
gosuentrypoint that chowns the mounted cache volumes and drops privileges.DATABASE_URLfromPOSTGRES_*components with a URL-encoded password (so@ : / %in the password no longer breaks the DSN); an explicitDATABASE_URLstill wins (CI/tests/dev unaffected)./health; port bind defaults to 127.0.0.1 (overrideAPP_BIND=0.0.0.0); configurablemem_limit.#67 — Postgres backups
scripts/backup.sh(pg_dump → gzip → prune, host or direct mode) + an opt-indb-backupcompose profile writing to./backups(outside the DB volume). README documents enabling it (or host cron) and the restore procedure. Complementary to any Proxmox/VM snapshots.#66 — CD rollback + prod docs
cd.ymlcaptures the deployed ref before pulling; if the post-deploy health check fails, it rolls back to that ref and rebuilds (failing the run) instead of leaving the dev box mid-deploy. Happy path unchanged.Verified on the dev server (real docker build + run)
uvicorn, Uid 10001 (non-root); a special-character DB password round-trips through the encoded DSN (p%40s%3Aw%2Frd%25%23); migrations run and/healthreturns 200; non-root volume writes work.Note
The loopback-bind default is a deliberate hardening change. I've already set
APP_BIND=0.0.0.0in the dev server's.envso this branch's CD deploy keeps the dev app reachable on the LAN; production should sit behind a TLS reverse proxy.Closes #64, #67, #66
🤖 Generated with Claude Code