Changeset 5462bab in Klonkt for deploy


Ignore:
Timestamp:
07/31/2026 01:52:04 PM (6 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
f434294
Parents:
ccaa530
Message:

Fix 500 op de Uiterlijk-pagina na een halve update (boiert.eu)

Bart kreeg een 500 op /admin/sites/<slug>/edit. Oorzaak was een gemengde
staat: zijn klonkt-update was gegenereerd voor de oude single-service-layout
en herstart nog klonkt.service, de unit die de migratie juist heeft
uitgezet. De code op schijf werd dus wel bijgewerkt, maar het draaiende
proces nooit herstart. De oude route rendert dan het nieuwe template, dat
een variabele verwacht die de oude route niet meegeeft: ReferenceError, en
Express cachet het gecompileerde template tot de volgende herstart.

Drie lagen gefixt:

  1. Het aliasveld degradeert bij een ontbrekende variabele naar leeg in plaats van de hele pagina mee te nemen (typeof-guard, zelfde patroon als auth-register). Een deploy-moment mag nooit een 500 opleveren.
  2. De nieuw-site-form gaf dezelfde ReferenceError ook met volledig nieuwe code: de /new-route rendert hetzelfde template maar gaf apAliases niet mee. Lokaal gereproduceerd en bevestigd gefixt (beide pagina's 200).
  3. De wortel: een gedeeld script dat /usr/local/bin/klonkt-update herschrijft voor de actuele layout. De migratie draait het voortaan zelf, install.sh genereert de updater er ook mee (kan nooit meer uiteenlopen), en al gemigreerde servers repareren het met een los commando.

Changed files:
src/routes/admin-sites.js

  • /new geeft apAliases mee aan het template

src/views/pages/admin-site-edit.ejs

  • typeof-guard op apAliases met uitleg waarom

scripts/klonkt-migrate-data.sh

  • herschrijft de updater na de unit-omschakeling; waarschuwt als het script in een oudere checkout ontbreekt

scripts/install.sh

  • inline updater-generatie vervangen door het gedeelde script

deploy/MULTI-INSTANCE.md

  • reparatie-instructie voor servers die voor deze fix zijn gemigreerd

New file:
scripts/klonkt-refresh-updater.sh

  • idempotent; detecteert de branch uit de checkout; herstart alle klonkt@<slug>-instances, of klonkt.service als er geen zijn

-robo
Co-Authored-By: Claude Fable 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • deploy/MULTI-INSTANCE.md

    rccaa530 r5462bab  
    133133```
    134134
     135**Migrated before August 2026?** Then your `klonkt-update` still restarts the
     136retired `klonkt.service`: the code updates but the running process never
     137follows, and after the next update the site can 500 on pages whose template
     138and route no longer match. Repair it once:
     139
     140```bash
     141sudo systemctl restart klonkt@<slug>                        # load the current code now
     142sudo bash /opt/klonkt/scripts/klonkt-refresh-updater.sh     # fix the updater for good
     143```
     144
     145The migration script does this by itself nowadays.
     146
    135147That pulls the code once into `/opt/klonkt`, reinstalls dependencies only when
    136148`package-lock.json` changed, and restarts every instance it finds under
Note: See TracChangeset for help on using the changeset viewer.