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.shheeft die.envgenereert (kopieer het patroon uit deportal- ofzgw-repo). Heeft de app ZGW-creds nodig? Voeg de map dan toe aan het rijtje datplatform/scripts/setup.shbedient (zie stap 4).
De containernaam waarop de proxy straks wijst, is
<servicenaam>op hetedge-netwerk. In het voorbeeld hierboven is datapp; 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):
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.shde nieuwe map toe aan dedistribute …-aanroepen, zodat de creds ook naar die.envgeschreven 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-aliasesinplatform/docker-compose.yml. Voor een gewone app die alleen door browsers benaderd wordt, is dit niet nodig.
5. Starten¶
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) |