Skip to main content

Deployment Patterns ๐ŸŸข

Patterns shared across all RMM self-hosted deployments.

Canonical shapeโ€‹

Internet โ”€โ”€โ–ถ nginx (TLS + rate limits) โ”€โ”€โ–ถ Docker Compose services โ”€โ”€โ–ถ Postgres/Redis/Qdrant

Naming & versionsโ€‹

  • Deploy from git tags, never from branch tips.
  • Pin image versions in compose; :latest is forbidden in production.
  • One directory per stack: docker-compose.yml + .env.example + README.md.

Zero-downtime upgradesโ€‹

  1. Pull tag, build image alongside running container (docker compose build).
  2. Run migrations (idempotent, expand/contract pattern).
  3. Recreate services one at a time behind the proxy (docker compose up -d --no-deps <svc>).
  4. Smoke-test health endpoints; roll back by re-pointing compose to previous tag.

Backupsโ€‹

DataCadenceRetention
PostgresNightly dump + weekly restore test30 days local, 90 days offsite
RedisRDB snapshot (cache data โ€” rebuildable)7 days
QdrantSnapshot weekly4 weeks
Secrets storeEncrypted export weeklyoffsite

Restore tests are mandatory weekly. An untested backup is a hope, not a backup.