Skip to content

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/ — owner root, mode 700
  • 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.yml nebo 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

# Real check (žádný .env.example):
ssh root@<server> "docker exec <container> env | grep <PATTERN>"

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

/root/secrets/n8n/.env.<env>

⚠️ 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.sh v 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)