dienst_echo_whatsappgroep/deploy/README.md

2.1 KiB

netcup-standby-guard (Mac LaunchDaemon)

Zet de wuzapi-multiplexer op netcup automatisch op STANDBY zodra netcup weer bereikbaar is, maar alleen als nextcloud actief is. Voorkomt dubbel-antwoorden in de WhatsApp-groepen wanneer netcup terugkomt terwijl nextcloud (na handmatige flip) de actieve node is.

Waarom / invariant

  • De multiplexer is de standby-guard (src/multiplexer.js): node zonder STANDBY routeert webhooks door, node met STANDBY=1 ACKt alleen (200).
  • Bij een netcup-uitval kan de netcup-unit niet op STANDBY gezet worden → na de handmatige flip van nextcloud naar ACTIEF zijn beide nodes bij netcup-comeback actief. Deze guard flipt netcup dan binnen één poll-interval (60 s) naar STANDBY.
  • Invariant: netcup wordt alleen naar STANDBY geflipt als nextcloud bevestigd ACTIEF is (geen STANDBY=1 in de nextcloud-unit). Staat nextcloud op STANDBY, dan is netcup-actief een bewuste failover (nextcloud-onderhoud) → geen flip.

Installatie (Mac)

sudo -A cp deploy/netcup-standby-guard.sh /usr/local/bin/netcup-standby-guard.sh
sudo -A chmod 755 /usr/local/bin/netcup-standby-guard.sh
sudo -A cp deploy/nl.eddydevink.netcup-standby-guard.plist /Library/LaunchDaemons/
sudo -A launchctl bootstrap system /Library/LaunchDaemons/nl.eddydevink.netcup-standby-guard.plist
sudo -A launchctl kickstart -k system/nl.eddydevink.netcup-standby-guard   # eerste run direct
  • Draait als eddy (UserName in plist) → gebruikt de aliassen uit ~/.ssh/config (netcup met key ~/.ssh/netcup_agent_ed25519 zonder passphrase, en nextcloud).
  • Notificatie via Gotify: token in ~/.netcup-guard.env (GOTIFY_TOKEN=..., mode 600, gitignored). Ontbreekt het bestand → alleen loggen.
  • Log: ~/Library/Logs/netcup-standby-guard.log; status: ~/.netcup-guard-state.

Handmatige test

/usr/local/bin/netcup-standby-guard.sh          # run als eddy
tail -5 ~/Library/Logs/netcup-standby-guard.log

Opruimen

sudo -A launchctl bootout system/nl.eddydevink.netcup-standby-guard
sudo -A rm /Library/LaunchDaemons/nl.eddydevink.netcup-standby-guard.plist /usr/local/bin/netcup-standby-guard.sh