Ga naar inhoud

Omgevingen: lokaal vs. productie

Anders dan de oude opzet (aparte test/acc/prod-servers met HestiaCP) kent dit systeem nog maar twee soorten omgevingen, allebei volledig in Docker:

Lokaal Productie
Doel ontwikkelen / uitproberen op je eigen machine de echte, publiek bereikbare omgeving
Domein *.localhost een echt domein (bv. mc-dienstverlening.cloud)
TLS/HTTPS nee (gewoon http) ja, automatisch via Let's Encrypt
DNS nodig? nee ja (A-records → server-IP)
Poorten alleen 80 80 + 443 open naar internet
Starten make up-local-all make up-all

Beide omgevingen draaien dezelfde images en dezelfde configuratie; het enige verschil is DOMAIN in platform/.env en welke compose-override wordt gebruikt. "Werkt lokaal" betekent daardoor in de praktijk ook "werkt in productie".

Wil je een aparte test-omgeving naast productie? Draai die op een tweede host (of tweede domein) met exact dezelfde stappen. Er is bewust geen OTAP-straat meer op één server — dat maakte de oude opzet onnodig complex.

Lokaal opzetten

Vereisten: Docker + Docker Compose, en de drie repos naast elkaar (zie README).

cd platform
make setup            # .env met DOMAIN=localhost (default), secrets, netwerk
make up-local-all     # zgw + portal + proxy, http op *.localhost

Open daarna o.a.: - http://portal.localhost - http://openzaak.zgw.localhost, http://objecten.zgw.localhost, …

*.localhost resolvet niet?

De meeste browsers sturen *.localhost automatisch naar 127.0.0.1. Lukt dat niet (bv. bij sommige CLI-tools of Firefox), voeg de hosts dan toe aan /etc/hosts:

127.0.0.1 portal.localhost openzaak.zgw.localhost notificaties.zgw.localhost \
          openklant.zgw.localhost objecten.zgw.localhost \
          objecttypen.zgw.localhost formulieren.zgw.localhost

Productie opzetten

  1. DNS — zet bij je DNS-provider A-records naar het server-IP:
  2. portal.<domein>
  3. openzaak.zgw.<domein>, notificaties.zgw.<domein>, openklant.zgw.<domein>, objecten.zgw.<domein>, objecttypen.zgw.<domein>, formulieren.zgw.<domein>
  4. Tip: een wildcard *.zgw.<domein> dekt alle ZGW-subdomeinen in één record.
  5. Poorten — zorg dat 80 en 443 open zijn (Let's Encrypt heeft 80 nodig voor de uitgifte).
  6. platform/.env — zet:
    DOMAIN=mc-dienstverlening.cloud
    ACME_EMAIL=jij@example.com
    ALERT_EMAIL=jij@example.com
    
  7. Start:
    make setup      # (her)genereert/deelt secrets; veilig om opnieuw te draaien
    make up-all
    

Caddy vraagt bij de eerste start automatisch certificaten aan en vernieuwt ze daarna zelf. De certs leven in een Docker-volume (caddy-data), dus ze overleven herstarts.

Stoppen

make down-all     # stopt zgw + portal + platform
De data blijft in de Docker-volumes bewaard; opnieuw up pakt waar je was.