5.7 KiB
Go-live checklist — Helvoirt Gevelreiniging
Concrete, kant-en-klare stappen om de site live te zetten op helvoirtgevelreiniging.nl.
De code-laag is af + gedeployed (preview: https://helvoirt-gevelreiniging.mike-197.workers.dev);
hieronder staat alleen wat nog externe input/toegang vereist. Achtergrond: newsite.md §12.
Windows/corporate, elke
astro/wrangler-call: zet eerst$env:NODE_OPTIONS="--use-system-ca"(+$env:CLOUDFLARE_ACCOUNT_ID="41972f4905f2c83f51111b80283e030b"voor wrangler). Tools vianode node_modules/<tool>/bin/....
Vooraf aanleveren (collega / klant)
- Mailbox
info@helvoirtgevelreiniging.nl: wachtwoord + SMTP-host (bv.mail.helvoirtgevelreiniging.nl, poort 465) + DKIM-record uit DirectAdmin. (Collega maakt het account aan.) - DNS-toegang: nameservers naar Cloudflare (collega) → de zone
helvoirtgevelreiniging.nlverschijnt in het account. Voor DNS-records: dashboard of een API-token met Zone.DNS:Edit. - SEO-partij e-mailadres(sen) voor de CMS-login.
- Klantcontent: echte e-mail/KvK/BTW/openingstijden, Google-reviews + URL + score, FAQ-teksten, foto's, evt. GTM-container-ID en eigen logo.
1. Mail-secret zetten (na mailbox)
Het wachtwoord is het enige geheim. Via bash printf, nooit via PowerShell-pipe (BOM → 535).
printf '%s' '<mailbox-wachtwoord>' | NODE_OPTIONS=--use-system-ca \
node node_modules/wrangler/bin/wrangler.js secret put CONTACT_SMTP_PASS
Wijkt host/gebruiker/inbox af van de defaults (mail.helvoirtgevelreiniging.nl,
info@helvoirtgevelreiniging.nl)? Zet dan ook CONTACT_SMTP_HOST / CONTACT_SMTP_USER /
CONTACT_EMAIL_TO als secret/var. Testen (na deploy): doe een test-aanvraag op /contact en kijk
in wrangler tail naar [contact] mail-sent melding-klant + bevestiging-aanvrager. Ruim de testrij
op uit contact_submissions.
2. CMS-gebruiker SEO-partij aanmaken
$ulid = node --input-type=module -e "import {ulid} from 'ulidx'; console.log(ulid())"
node node_modules/wrangler/bin/wrangler.js d1 execute helvoirt-db --remote --command `
"INSERT INTO users (id, email, role, email_verified, disabled, created_at, updated_at) VALUES `
('$ulid','<email-lowercase>',40,1,0,strftime('%Y-%m-%dT%H:%M:%fZ','now'),strftime('%Y-%m-%dT%H:%M:%fZ','now'))"
Rol 40 = EDITOR (content + SEO, geen gebruikers/instellingen), 50 = ADMIN. Inloggen daarna via
/_emdash/admin/login → "Sign in with email link" (magic-link werkt zodra stap 1 gezet is).
3. Domein koppelen ✅ GEDAAN (17-06-2026) — site live op https://helvoirtgevelreiniging.nl
Zone actief,
routestoegevoegd + rebuild + deploy gedaan; apex+www live, www→apex + http→https werken. Hieronder ter referentie wat er is gebeurd: Voeg dit blok toe aanwrangler.jsonc(naastmain/compatibility_date):
"routes": [
{ "pattern": "helvoirtgevelreiniging.nl", "custom_domain": true },
{ "pattern": "www.helvoirtgevelreiniging.nl", "custom_domain": true }
],
Daarna VERPLICHT rebuilden (de adapter genereert dist/server/wrangler.json; zonder rebuild
deployt wrangler stale config):
$env:NODE_OPTIONS="--use-system-ca"; $env:CLOUDFLARE_ACCOUNT_ID="41972f4905f2c83f51111b80283e030b"
node node_modules/astro/bin/astro.mjs build
node node_modules/wrangler/bin/wrangler.js deploy
⚠️ Voeg de routes pas toe als de zone bestaat, anders faalt de deploy. Tot dan blijft
wrangler.jsonczonderroutes(preview op*.workers.dev).
4. Mail-DNS (dashboard of Zone.DNS:Edit-token)
| Type | Naam | Waarde | Prio |
|---|---|---|---|
| MX | @ |
<smtp-host, bv. mail.helvoirtgevelreiniging.nl> |
10 |
| TXT (SPF) | @ |
v=spf1 mx ~all (of het SPF-record van de hoster) |
— |
| TXT (DMARC) | _dmarc |
v=DMARC1; p=none; rua=mailto:info@helvoirtgevelreiniging.nl |
— |
| TXT (DKIM) | <selector>._domainkey |
public key uit DirectAdmin | — |
MX = DNS-only (geen Cloudflare-proxy). Verifieer via DoH (corporate-DNS blokkeert poort 53):
curl -sk "https://dns.google/resolve?name=helvoirtgevelreiniging.nl&type=MX".
5. HTTPS / security (dashboard)
- SSL/TLS → Edge Certificates → Always Use HTTPS aan, daarna HSTS aan.
- SSL-modus op Full (strict) (niet Flexible → redirect-loop).
src/middleware.tsdoet al http→https + www→apex (301); security-headers staan inpublic/_headers.
6. Verifiëren (corporate-DNS resolvet het nieuwe domein niet → forceer CF-IP)
$ip = (Invoke-RestMethod "https://dns.google/resolve?name=helvoirtgevelreiniging.nl&type=A").Answer[0].data
curl.exe -sk --resolve helvoirtgevelreiniging.nl:443:$ip https://helvoirtgevelreiniging.nl/
Checklist: homepage 200 · /sitemap.xml (root-URL's, incl. CMS-locaties) · /robots.txt ·
www → apex 301 · http → https 301 · JSON-LD in de head · contactformulier → 2× mail.
7. Klantcontent in het CMS (Instellingen)
Echte e-mail/KvK/BTW/openingstijden, Google-reviews + URL + score, GTM-container-ID (wordt
automatisch in de <head> gezet), evt. OG-image/logo. Daarna: Search Console + sitemap indienen +
PageSpeed-meting.
Status van de code-laag (af, 17-06-2026, deploy ná OG/JSON-LD-pass)
✅ robots.txt · sitemap.xml (vaste routes + live CMS-paginas/locaties) · site: in config ·
JSON-LD HomeAndConstructionBusiness (site-breed) + Service/BreadcrumbList (dienstpagina's) ·
GTM-renderblok · gebrande 1200×630 OG-image · privacy/voorwaarden + footer-links ·
mail (lib/smtp.ts + contact.ts → D1 contact_submissions + 2 mails) · magic-link-plugin ·
middleware (http→https/www→apex) · _headers (caching + security).
Open = alleen bovenstaande externe stappen + optioneel: CMS-migratie Wave 3/2b, self-hosted fonts,
Lighthouse-meting, checklist.xlsx.