Secrets — /root/secrets/
Centrální místo pro všechny credentials na sentinelu. Nikdy nevěřit .env.example — vždy real soubor zde.
Struktura
/root/secrets/
├── auth/
│ ├── .env.hub
│ └── .env.prod
├── badwolf/
│ ├── .env.hub
│ └── .env.prod
├── billit/
│ ├── .env.hub
│ ├── .env.prod
│ ├── .env.prod.debug # debug DB user
│ └── .env.*.do-backup # zálohy z DO PG éry
├── glitchtip/
├── hetzner-pg/
│ └── admin.env # pg-alfa root credentials
├── mail/
├── n8n/
│ ├── .env.hub
│ ├── .env.prod
│ └── .env.*.do-backup
├── pulse/
├── s60-cs/
├── uptime-kuma/
├── venom/
└── ...
Naming konvence
- Per-service folder:
<service>/ - Per-env file:
.env.<env>(env:hub,prod, případnědev) - Backup:
.env.<env>.<source>-backup(např..env.prod.do-backup= zálohy z přechodu DO → Hetzner) - Specialty:
.env.<env>.debug= RO debug user,.env.<env>.audit= audit accounts
Permissions
/root/secrets/— ownerroot, mode700- Per-service folders —
700 - Files —
600
Co tam patří
- DB credentials (host, user, password, dbname)
- API keys třetích stran (Resend, Sentry, GoPay, …)
- JWT secrets
- N8N encryption keys (kritické, bez něj nelze dešifrovat workflow credentials)
- pgBouncer admin credentials
Co tam nepatří
- Public konfigurace (URLs, ports, feature flags) — to do
deploy.ymlnebo per-service docs - Test/dev credentials — ty zůstávají na cerebro (
/root/dev/.env)
Jak používat v deploy.sh
deploy.sh scp real .env.<env> z /root/secrets/<service>/.env.<env> na cílový server (/opt/<service>/.env) — uživatel kontejneru ho čte přes env_file: .env v deploy.yml.
Co v .env v běžícím containeru
Příklady:
ssh root@100.78.87.88 "docker exec s60-billit-api env | grep DB_"
ssh root@100.68.138.14 "docker exec s60-pulse env | grep -E '^(DB_|REDIS_)'"
N8N encryption key
⚠️ KRITICKÉ: N8N_ENCRYPTION_KEY zálohovat — bez něj nelze dešifrovat workflow credentials. Záloha v .env.*.do-backup z přechodu DO→Hetzner.
Pravidla
- NIKDY necommitovat secrets do gitu
- NIKDY posílat secrets přes
send-message.shv plaintextu — místo toho posílat cestu k souboru (/root/secrets/billit/.env.prod) - Runner API kanál (Tailscale-only) JE bezpečný pro credentials (orthogonal:
feedback_relay_safe.md) - PG přístupy — vždy schválit s Liborem (
feedback_pg_access_approval.md)