Ga naar inhoud

Freeze-check

Korte go/no-go vóór taak 2.1. Geen nieuwe fase, geen herschrijving, geen extra features. Doel: bevestigen dat het handmatige pad nog groen is, en dat bekende vallen vastliggen voordat provisioning ze automatiseert.

Tijdbox: ruim een half uur. Faalt iets in A–C, dan eerst dat herstellen. D is noteren, niet oplossen.

Tenants in scope: pilot (pilot.okhema.studio) en rb-media (rbmedia.okhema.studio). verify heeft naast DATABASE_URL de vier build-vars nodig (S3_BUCKET, S3_REGION, S3_PUBLIC_URL, S3_FORCE_PATH_STYLE); die staan niet in de runtime-env van de container. Tunnel: Deploy.

Per tenant, geen SKIPs op media (beide sites hebben media):

  • verify --http https://pilot.okhema.studio --json → alles PASS
  • verify --http https://rbmedia.okhema.studio --json → alles PASS
  • curl -I op apex én admin. van beide tenants: HTTP 200, geldig certificaat
  • /robots.txt toont Sitemap: https://<SITE_DOMAIN>/sitemap.xml op beide
Terminal window
DATABASE_URL='' S3_BUCKET= S3_REGION=auto S3_PUBLIC_URL= S3_FORCE_PATH_STYLE=false \
pnpm --filter @platform/ops run verify -- --http https://<domein> --json

PRD-succescriterium: de site is opleverbaar en content is zelfstandig te beheren. Muteren mag op pilot. Op rb-media alleen kijken, geen theme of content wijzigen zonder de klant.

Op admin.pilot.okhema.studio:

  • Inloggen als admin
  • Primary-kleur wijzigen → publieke site verandert zonder rebuild
  • Nieuwsbericht publiceren → binnen een paar seconden live (richtgetal: < 2 s)
  • Contactformulier insturen → rij in form_submissions én echte mail in inbox
  • Wachtwoordreset aanvragen → echte resetmail in inbox (mail.ts faalt stil)

Op admin.rbmedia.okhema.studio:

  • Klant-admin kan inloggen — loginpagina 200, admin-account met wachtwoord bestaat; sessie niet zelf geopend
  • Bestaande pagina’s, media en navigatie zijn zichtbaar in het CMS
  • Geen mutatie

Geen alarmering (hoort bij 4.4). Iemand moet kijken.

Op de VPS:

  • /var/lib/media-backup/last-success jonger dan 26 u (cron 15 3 * * * UTC)
  • /var/lib/dump-verify/last-success van de 1e van deze of vorige maand (cron 0 4 1 * * UTC — ouder dan een dag is normaal)
  • Coolify per-database-planning bevat tenant_pilot én tenant_rb-media (dump-all dekt nieuwe tenants; deze lijst niet automatisch)
  • Nieuwste per-database-.dmp van vannacht bestaat voor beide tenants
Terminal window
stat -c '%y %n' /var/lib/media-backup/last-success /var/lib/dump-verify/last-success

D. Schuld voor 2.5 — vastleggen, niet fixen (~5 min)

Section titled “D. Schuld voor 2.5 — vastleggen, niet fixen (~5 min)”

Elk punt: gezien, en of het in 2.5/2.9 moet landen. Geen tickets nu, tenzij A–C faalt dóór dit punt.

  • Eerste deploy: Coolify slaat node /app/scripts/migrate.mjs over zonder draaiende container en meldt tóch “finished”. Provisioning moet migreren nádat de container bestaat, of de eerste keer zelf docker execen.
  • mail.ts faalt stil zonder Resend-config; een groene container bewijst geen mail.
  • Geen gebruikersbeheer-UI; accounts via create-user / --reset-password. Geen verplichte wachtwoordwijziging bij eerste login.
  • SHOW max_connections; op de Coolify-Postgres is daadwerkelijk 200 (kaart 3 noemde dit nog als nakijken).
  • Per-database-backuplijst is een handmatige stap bij elke nieuwe tenant; dump-all is het vangnet tot die lijst is bijgewerkt.

A–C groen, D ingevuld. Daarna 2.1. Niet wachten op fontstrategie, dark-logo, secret-rotatie of backup-alarmering — die staan bewust later.

Uitkomst: 2.1 mag starten. Twee restpunten, geen productgaten.

Beide verify --http --json volledig PASS, geen SKIPs. Apex 200, admin. 302 → /login (verwacht zonder sessie), Let’s Encrypt tot 9/11 nov 2026. robots.txt toont de juiste sitemap op beide.

Pilot: ingelogd als tijdelijke admin freeze-check@okhema.studio (daarna verwijderd). Primary via CMS van #ff0000#0ea5e9 → publieke CSS mee, daarna teruggezet naar #ff0000. Nieuws freeze-check-17-aug-2026 live in 148 ms. Contactinzending + Resend-id f8507257-… naar michaelvg94@gmail.com; resetmail Resend-id 3bdb8d7b-… naar hetzelfde adres. Kijk even in die inbox — de container logt verzenden, niet aankomst.

rb-media: geen mutatie. Publieke site, /nieuws, logo via /_image, loginpagina 200, admin mvangorkum@rb-media.nl met credential-account. Zelf even inloggen in het CMS om dat hokje af te vinken.

Media-stamp 17 aug 03:15 UTC (4,8 u oud). Dump-verify-stamp 12 aug 14:17 UTC (rehearsal; cron 0 4 1 * * heeft nog nooit gedraaid, /var/log/dump-verify.log is leeg, volgende run 1 sep). VERIFY_TENANTS default is alleen tenant_pilot.

Per-database-planning stond op postgres,tenant_pilottenant_rb-media ontbrak sinds go-live 13 aug. Hersteld in Coolify scheduled_database_backups.id=2 naar postgres,tenant_pilot,tenant_rb-media. Dump-all van vannacht bevat beide databases. Eerste per-database-.dmp voor rb-media volgt 30 3 * * * UTC (nacht van 17 op 18 aug).

  • Eerste Coolify-deploy slaat pre-deployment migrate.mjs over. Ongewijzigd.
  • mail.ts logt nu hard in de container, maar het contactformulier blijft 200 als mail niet gaat. Een healthy container bewijst geen inbox.
  • Geen gebruikersbeheer-UI; deze check had create-user nodig.
  • max_connections=200 bevestigd op de Coolify-Postgres.
  • Per-database-backuplijst is handwerk. Deze freeze-check liep erin: dump-all dekte rb-media, de restore-bron (.dmp) niet. 2.5 moet die lijst bijwerken of alleen op dump-all + operator-backup leunen.
  • www.rbmedia.okhema.studio heeft geen DNS. www.pilot redirect wel (307). Apex + admin. werken. Voor een echt klantdomein later wel www meenemen.