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.mdprerequisites-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.