Ga naar inhoud

Onderhoudsmodus — publieke onderhoudspagina

Als je onderhoud doet dat de stack tijdelijk plat legt (image-update, herstart, migraties), kun je gebruikers een nette onderhoudspagina tonen in plaats van een foutmelding. Caddy serveert die pagina met HTTP 503 op de gebruikers- gerichte sites (portal.<domein> en formulieren.zgw.<domein>) zolang de modus aan staat.

Niet te verwarren met onderhoud.<domein> (= Adminer, de DB-tool, verderop).

Aan- en uitzetten

cd platform
make onderhoudsmodus-aan      # gebruikers zien de pagina (HTTP 503)
make onderhoudsmodus-uit      # sites weer normaal
make onderhoudsmodus-status   # toont AAN/UIT

Dit werkt instant en zonder reload/herstart: het zet (of verwijdert) het vlagbestand caddy/maintenance/.maintenance-on, en de (onderhoudsmodus)-snippet in caddy/Caddyfile checkt dat bestand per request. Typische volgorde rond onderhoud:

make onderhoudsmodus-aan
# ... onderhoud uitvoeren (bv. images bijwerken in zgw/portal) ...
make onderhoudsmodus-uit

Aanpassen

  • De pagina zelf: caddy/maintenance/index.html (zelfstandige HTML, inline CSS, ververst zichzelf elke 60s, dark-mode-vriendelijk). Wijzigingen zijn meteen actief.
  • Welke sites afgeschermd worden: voeg import onderhoudsmodus + een handle { reverse_proxy … } toe aan het betreffende site-blok in caddy/Caddyfile (zie portal / formulieren). De ZGW-API-subdomeinen en operaton.<domein> laten we standaard met rust.

Adminer — PostgreSQL web-UI

Adminer is een lichte web-UI om de PostgreSQL- databases te bekijken én te bewerken (rijen toevoegen/wijzigen/verwijderen, vrije SQL draaien). Hij draait als optionele service in de platform-stack en is bereikbaar op https://onderhoud.<domein> achter Basic Auth.

Activeren

cd platform
make onderhoud-setup    # genereert de Basic-Auth-login (toont het wachtwoord 1x)
make onderhoud-up       # start Adminer + herlaadt de proxy

Vereist: een A-record onderhoud.<domein> → server-IP, en dat de zgw- en portal-stacks draaien (Adminer hangt aan hun DB-netwerken).

Stoppen: make onderhoud-down.

Inloggen

  1. Ga naar https://onderhoud.<domein> → eerst de Basic Auth (gebruiker + wachtwoord uit make onderhoud-setup).
  2. Dan het Adminer-loginscherm. Vul in:
  3. Systeem: PostgreSQL
  4. Server: zgw-db-1 (de ZGW-databases) of portal-db-1 (portal + operaton)
  5. Gebruiker / Wachtwoord: een DB-account, bv. de superuser postgres met het wachtwoord uit de .env van die stack (POSTGRES_SUPERPASS), of een component-account (openzaak, portal, …) met zijn eigen wachtwoord.
  6. Database: leeg laten (dan zie je alle databases), of kies er één.
Server Databases
zgw-db-1 openzaak, opennotificaties, openklant, objects, objecttypes, openforms
portal-db-1 portal, operaton

Inlog onthouden (Permanent login)

Om niet bij elk bezoek server, database en wachtwoord opnieuw op te zoeken: vink op het Adminer-loginscherm "Permanent login" aan. Adminer onthoudt dan je server + database + inloggegevens (versleuteld in een cookie) — ook na het sluiten van de browser of een herstart van de Adminer-container. Na de Basic Auth kom je daarna direct binnen.

Dit werkt dankzij een stabiele sleutel: een kleine plugin (adminer/plugins-enabled/permanent-login.php) levert die uit de omgevings- variabele ADMINER_PERMANENT_KEY, die make onderhoud-setup eenmalig in .env zet. Zonder die sleutel wisselt Adminers sleutel per herstart en vervalt het onthouden telkens.

Het server-veld staat standaard al voor-ingevuld op zgw-db-1 (ADMINER_DEFAULT_SERVER). Voor portal-db-1 pas je dat één keer aan en onthoudt "Permanent login" het daarna.

Beveiliging

  • Tweelaags: Basic Auth (Caddy) + het DB-wachtwoord (Adminer-login).
  • De login-hash staat in caddy/sites.d/onderhoud.caddy (gitignored).
  • ⚠️ Je kunt hier productiedata wijzigen/verwijderen. Wees voorzichtig; de dagelijkse backups (zie back-ups.md) zijn je vangnet.
  • Wil je 'm niet permanent open hebben: make onderhoud-down als je klaar bent, en make onderhoud-up als je 'm weer nodig hebt.
  • Strenger alternatief: geen publiek subdomein maar alleen via een SSH-tunnel (publiceer Adminer dan op 127.0.0.1:8081 i.p.v. via Caddy).

Operaton-admin (procesengine)

De Operaton-webapps (cockpit / admin / tasklist — bv. om vastgelopen processen te bekijken) zijn gepubliceerd op https://operaton.<domein>. Er is geen Basic Auth: gebruikers loggen in met hun eigen Operaton-account op de loginpagina van de webapp.

De site staat vast in caddy/Caddyfile (reverse_proxy operaton:8080); Caddy bereikt de engine via het portal_internal-netwerk. Vereist een A-record operaton.<domein> → server-IP. Wijzigingen aan de proxy activeer je met make up.

Inloggen

Ga naar https://operaton.<domein> → de Operaton-login, log in met je eigen account (zelfde inlog als het portaal). De admin-webapp zit op /operaton/app/admin/, de cockpit op /operaton/app/cockpit/.

Het service-account OPERATON_SVC_USER (uit de portal-.env) is globale admin in de engine; gebruik een persoonlijk account waar mogelijk.

Beveiliging

De engine-webapp én de engine-REST (/engine-rest) zijn beschermd door de Operaton-eigen authenticatie (OPERATON_BPM_RUN_AUTH_ENABLED). Wil je het strenger: zet er alsnog Basic Auth voor (zoals bij Adminer in sites.d/), of publiceer niet en gebruik een SSH-tunnel: ssh -L 8092:127.0.0.1:8092 <server>http://localhost:8092/operaton/app/admin/.