Thema
Fase 4 · Geoptimaliseerde deployment
Map: deployment/ · Vraag: waar draait het, en draait het écht?
De laatste fase brengt het product live — achter TLS, met gecontroleerde secrets, declaratief geregistreerd en geverifieerd. "Geoptimaliseerd" slaat op het uitgangspunt: niet één product per host, maar meerdere producten die een host delen, elk met eigen stack-unieke aliassen achter één reverse proxy.
Verantwoordelijkheid
| Bezit | De connectie-artefacten (co-host docker-compose.yml, proxy/Caddyfile, deploy.env, registry-CI), platform.yaml, provisioning, secrets-store, status/health/TLS/in-sync, audit + rollback. |
| Doet NIET | App-code of productdefinitie schrijven — expliciet out-of-scope in onboard-solution. |
| Levert op | Een live, geverifieerd, declaratief geregistreerd product. |
onboard-solution — de skill van deze fase
De skill die naad B overbrugt. Hij onboardt een solution end-to-end op het tofu-deploy-platform, startend vanaf de productdefinitie:
- Leidt de deployconfiguratie af uit de specs
- Genereert de ontbrekende connectie-artefacten — compose,
deploy.env, Caddyfile met stack-unieke aliassen - Registreert het product in
platform.yaml - Wired de secrets
- Deployt en verifieert
- Begeleidt de gebruiker door de stappen die alleen die kan zetten: domeinen, secret-waarden, DNS
De begeleiding is onderdeel van de skill
Punt 6 is geen bijzaak. De skill weet welke stappen menselijk zijn en stopt daar — dat is de gate-logica ingebakken in de uitvoering.
Geen Node-project
deployment/ is OpenTofu + docker-compose + YAML. Het bestaat uit CLI's onder bin/:
| Commando | Doet |
|---|---|
bin/platform-validate | platform.yaml toetsen aan platform.schema.json |
bin/platform-gen | Artefacten genereren uit de declaratie |
bin/tofu-deploy | Plannen en uitrollen (host, stack, proxy) |
bin/platform-secrets | Secrets uit de fleet-store halen/zetten |
bin/platform-dashboard | Statusoverzicht (dashboard.html) |
bin/leak-scan | Controleren dat er geen secrets lekken |
bin/install-hooks | Git-hooks installeren |
De deploy-volgorde
host apply— provisioneert een host. Alleen nodig bij een nieuwe context. Kost geld → gate.plan— toont wat er zou veranderen.up— rolt uit. Productie → gate.verify— health, TLS en in-sync controleren.
platform.yaml — de declaratie
Elk live product staat als declaratieve registratie in platform.yaml, met platform.schema.json ernaast. Dat bestand beantwoordt: wat draait er, waar, en hoort dat zo?
De producten wonen buiten deze repo
platform.yaml beheert negen live producten. Die staan in ~/Projects/seifer-projects/…; deployment/ verwijst ernaar via paden. De repo bevat de besturing, niet de producten.
De gates
| Gate | Wat |
|---|---|
| Kosten | Een nieuwe host aanzetten |
| Productie | Daadwerkelijk uitrollen |
| Secrets | De waarden zelf — Hetzner-token, GHCR-token, Resend-key |
| Domein + DNS | Registreren en wijzen |
Voorbereidende skills
Staat de deploy-vraag nog open, dan zijn dit de skills die hem beantwoorden vóór onboard-solution begint:
| Skill | Beslissing |
|---|---|
cicd-pipeline-design | Hoe de pipeline eruitziet |
iac-planning | Infrastructure-as-code-aanpak |
environment-strategy | Dev / staging / productie |
secrets-management-design | Waar secrets wonen en hoe ze roteren |
cloud-architecture-design · networking-design | De hostomgeving |
zero-trust-architecture | Het toegangsmodel |
disaster-recovery-planning · support-rollback-planning | Wat er gebeurt als het misgaat |
sla-definition · slo-sli-definition | Wat je belooft en hoe je het meet |
observability-strategy | Wat je ziet als het draait |