Secrets a konfigurace
Kde leží tajné hodnoty, jak se dostanou na VM a jak se mění – jediný zdroj pravdy je GitHub environment production.
Na této stránce
V jedné větě: Netajná konfigurace produkce je v gitu (
deploy/production.env), tajné hodnoty jen v GitHub environmentuproduction; při každém nasazení z nichdeploy.shsestaví na VM soubor.env.
Tok konfigurace
flowchart LR
pe["deploy/production.env<br/>(git, netajné)"] --> sh["deploy.sh na VM"]
tag["IMAGE_TAG = sha-…<br/>(nasazovaný commit)"] --> sh
sec["GitHub environment production<br/>RABBITMQ_PASSWORD, BASIC_AUTH_HASH,<br/>HEALTHCHECKS_BACKUP_URL, SMTP_PASSWORD,<br/>INVENTORY_API_KEY"] -->|"stdin přes SSH"| sh
sh --> env[".env na VM<br/>práva 600, vlastník deploy"]
env --> compose["docker compose"]
compose --> cont["proměnné prostředí kontejnerů"]
click sh "/Docs/github/cd"
.envna VM se pokaždé sestaví znovu – ruční změny v něm nepřežijí další nasazení. Změna konfigurace = PR.- Aplikace čte všechno z proměnných prostředí (
ConnectionStrings__messaging,Documentation__Commit…) – stejný image běží lokálně i v cloudu (12-factor).
Secrets
| Secret | K čemu | Kde |
|---|---|---|
RABBITMQ_PASSWORD |
heslo účtu minishop v RabbitMQ |
GitHub production → .env na VM |
BASIC_AUTH_HASH |
bcrypt otisk hesla pro zámek v Caddy – od účtů kroku 9 jen před Aspire dashboardem | GitHub production → .env na VM |
HEALTHCHECKS_BACKUP_URL |
kam noční záloha hlásí průběh (volitelný) | GitHub production → .env na VM |
SMTP_PASSWORD |
heslo aplikace Gmailu pro odesílání e-mailů (E-maily); volitelný | GitHub production → .env na VM |
INVENTORY_API_KEY |
servisní klíč – Web ho posílá skladu, sklad bez něj vrátí 401 (Inventory); povinný | GitHub production → .env na VM → oba kontejnery |
DEPLOY_SSH_KEY |
soukromý klíč pro spuštění minishop-deploy |
GitHub production |
TS_OAUTH_CLIENT_ID, TS_OAUTH_SECRET |
připojení runneru do Tailscale | GitHub production |
GITHUB_TOKEN |
push image do GHCR | vytváří ho GitHub pro každý běh |
API klíč minishop-automation, klíč ke state |
OpenTofu a OCI CLI | jen PC správce (~/.oci/) |
Proměnné (netajné) v environmentu: DEPLOY_HOST (adresa VM v Tailscale), DEPLOY_KNOWN_HOSTS (otisk serveru).
Úplný registr včetně postupů výměny: docs/secrets.md. Nový secret = nový řádek tam.
Pravidla
- Nikdy v gitu (ani v historii) – hlídá secret scanning + push protection. Repozitář je veřejný.
- Nejmenší oprávnění – každý secret jen tam, kde je potřeba (např. VM nemá žádný klíč k úložišti záloh, používá identitu instance).
- Každý jde vyměnit bez přestavby serveru. Příklad – heslo RabbitMQ: změnit secret → spustit Deploy.
deploy.shnejdřív heslo vymění v běžícím RabbitMQ (rabbitmqctl change_password), pak teprve restartuje služby.
Nový secret aplikace
deploy.yml– přidat doenva doprintfposílaného na stdin.deploy.sh– novýcases kontrolou tvaru hodnoty a zápis do.env.compose.yaml– předat službě; dodeploy/.env.examplevzorovou hodnotu.- Řádek v docs/secrets.md.