Start Here

Do not jump straight to deploy commands.

Self-host reliability depends on clean boundaries:

  • what is product runtime state: Postgres, object storage, queues
  • what is operational desired state: Git plus Vault

First principle

You are operating a distributed product, not copying a demo stack.

Keep these responsibilities separate:

  • infra-ansible Git state declares topology and release pins
  • Vault holds secrets and mutable credentials
  • running hosts execute that declared state
  • product databases and object stores hold user data

When those boundaries blur, rollback and incident recovery stop being trustworthy.

Read these first

  • deployment-models-and-scope.md
  • prerequisites-checklist.md

Non-negotiable rule

Treat infra-ansible Git state as authoritative for deployment intent.

Manual control-plane UI edits are for break-glass debugging, not normal operations.