# Ahel monitoring server — Raspberry Pi (moved off M1 2026-07-26)

The Pi (192.168.8.240 / ts 100.91.6.75) runs the whole monitoring server
stack, so alerting no longer shares fate with the M1 gateway it watches:

| Service | Port | Unit | Config |
|---|---|---|---|
| Prometheus | :9090 | `prometheus` (Debian pkg) | `/etc/prometheus/prometheus.yml` + `ahel-rules.yml` |
| Alertmanager | :9093 | `prometheus-alertmanager` | `/etc/prometheus/alertmanager.yml` |
| ntfy | :8099 | `ntfy` (custom unit, /usr/local/bin) | `/etc/ntfy/server.yml` |
| Pushgateway | :9091 | `prometheus-pushgateway` | defaults |
| M1 watchdog | timer 60s | `ahel-watchdog.timer` | `/usr/local/bin/ahel-watchdog.sh` |
| Loki (asset logs) | :3100 | `loki` (/usr/local/bin) | `/etc/loki/loki.yml` — see `../loki/README.md` |

Still on M1: autoheal (`com.ahel.autoheal`, :9096 — holds the assets' ssh keys;
Alertmanager webhooks to it), the pushgateway FEEDERS (`ahel-nas-stats.sh`,
`ahel-speedtest.sh` — repointed to the Pi, `.bak-pimove` backups beside them),
and node-exporter/poolstat collectors on every node.

M1's retired daemons are tombstoned as
`/Library/LaunchDaemons/com.ahel.{prometheus,alertmanager,ntfy}.plist.retired-2026-07-26`
and `~/Library/LaunchAgents/com.ahel.pushgateway.plist.retired-2026-07-26` —
rename back + bootstrap to revert the whole move.

**Phone:** subscribe ntfy to `http://192.168.8.240:8099/erebor`
(or `http://100.91.6.75:8099/erebor` over Tailscale) — the old M1 :8099 URL is dead.
