dienst_echo_whatsappgroep/deploy/README.md

47 lines
No EOL
2.1 KiB
Markdown

# 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)
```bash
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
```bash
/usr/local/bin/netcup-standby-guard.sh # run als eddy
tail -5 ~/Library/Logs/netcup-standby-guard.log
```
## Opruimen
```bash
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
```