Ga naar inhoud

Een nieuwe app toevoegen

Sinds de overstap naar Caddy + het gedeelde edge-netwerk is een nieuwe app toevoegen veel simpeler dan met HestiaCP: geen proxy-templates, geen handmatige Let's Encrypt-stappen, geen vhost-config. Caddy haalt het certificaat automatisch op zodra DNS resolvet.

Stel: je wilt een nieuwe Laravel-app klantportaal toevoegen op klantportaal.<domein>.

1. Maak er een eigen stack van

Geef de app een eigen repo (of map) met een docker-compose.yml die:

  • de webcontainer aan het gedeelde externe netwerk hangt, met een vaste servicenaam (de "alias" waarmee de proxy 'm vindt) en een poort, bv:
name: klantportaal
services:
  app:
    build: ./laravel          # of image: ...
    restart: unless-stopped
    environment:
      # ... DB, APP_KEY, enz. (zie de portal-repo als voorbeeld)
    networks: [internal, shared]
    # GEEN host-poorten nodig: de proxy bereikt 'app' via het netwerk.

  # eventueel eigen db/redis op 'internal'
networks:
  internal:
    driver: bridge
  shared:
    name: ${SHARED_NETWORK:-edge}
    external: true
  • een scripts/setup.sh heeft die .env genereert (kopieer het patroon uit de portal- of zgw-repo). Heeft de app ZGW-creds nodig? Voeg de map dan toe aan het rijtje dat platform/scripts/setup.sh bedient (zie stap 4).

De containernaam waarop de proxy straks wijst, is <servicenaam> op het edge-netwerk. In het voorbeeld hierboven is dat app; geef hem een duidelijke naam of een network-alias (networks: shared: aliases: [klantportaal]) als je iets specifieks wilt.

2. DNS — één A-record toevoegen

Bij Hostinger (hPanel → DNS):

Type Naam Waarde
A klantportaal 72.62.60.239

(Valt de app onder de ZGW-laag? Dan dekt het bestaande wildcard *.zgw 'm al en hoef je niets toe te voegen.)

3. Caddy — één routeerregel toevoegen

In platform/caddy/Caddyfile (productie):

klantportaal.{$DOMAIN} {
    reverse_proxy klantportaal:80
}

En in platform/caddy/Caddyfile.local (lokaal, http) hetzelfde maar als http://klantportaal.localhost { reverse_proxy klantportaal:80 }.

Daarna Caddy herladen (haalt meteen het certificaat op):

cd platform
docker compose up -d caddy      # of: docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile

4. (Optioneel) gedeelde secrets / interne bereikbaarheid

  • Gedeelde secrets (bv. ZGW-creds): voeg in platform/scripts/setup.sh de nieuwe map toe aan de distribute …-aanroepen, zodat de creds ook naar die .env geschreven worden.
  • Interne bereikbaarheid via de publieke hostnaam (alleen nodig als ándere containers deze app via https://klantportaal.<domein> moeten bereiken): voeg de hostnaam toe aan de Caddy-aliases in platform/docker-compose.yml. Voor een gewone app die alleen door browsers benaderd wordt, is dit niet nodig.

5. Starten

cd klantportaal
make setup        # of: bash scripts/setup.sh
docker compose up -d --build

Klaar — de app is bereikbaar op https://klantportaal.<domein> met een geldig certificaat. Wil je 'm meenemen in de gezamenlijke start/stop, neem de map dan op in de up-all/down-all-targets van de platform-Makefile.

Samengevat

Stap HestiaCP (oud) Nu (Caddy + edge)
Routering proxy-template .tpl/.stpl maken 3 regels in Caddyfile
TLS-certificaat v-add-letsencrypt-domain + include-gotcha automatisch door Caddy
Netwerk host-poort + 127.0.0.1:<poort> servicenaam op edge
DNS A-record A-record (onveranderd)