From 79942525b12808673754792d4fcf6e1cde08b3ca Mon Sep 17 00:00:00 2001 From: counterweight Date: Fri, 11 Sep 2026 22:43:15 +0200 Subject: [PATCH] archive: record Uptime Kuma monitors and setup before decommissioning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Captured from the live instance rather than the repo: the playbooks created 17 monitors, the server had 75. The rest existed only in the UI. Push tokens are excluded deliberately — they are live credentials. Co-Authored-By: Claude Opus 5 (1M context) --- archive/uptime_kuma/MONITORS.md | 152 +++ archive/uptime_kuma/README.md | 51 + .../deploy_uptime_kuma_playbook.yml | 0 archive/uptime_kuma/monitors.json | 1202 +++++++++++++++++ .../setup_backup_uptime_kuma_to_lapy.yml | 0 .../uptime_kuma/uptime_kuma_vars.yml | 0 6 files changed, 1405 insertions(+) create mode 100644 archive/uptime_kuma/MONITORS.md create mode 100644 archive/uptime_kuma/README.md rename {ansible/services => archive}/uptime_kuma/deploy_uptime_kuma_playbook.yml (100%) create mode 100644 archive/uptime_kuma/monitors.json rename {ansible/services => archive}/uptime_kuma/setup_backup_uptime_kuma_to_lapy.yml (100%) rename {ansible/services => archive}/uptime_kuma/uptime_kuma_vars.yml (100%) diff --git a/archive/uptime_kuma/MONITORS.md b/archive/uptime_kuma/MONITORS.md new file mode 100644 index 0000000..53b1d89 --- /dev/null +++ b/archive/uptime_kuma/MONITORS.md @@ -0,0 +1,152 @@ +# Uptime Kuma — monitor inventory (archived) + +Captured from the live instance at `https://uptime.contrapeso.xyz` on 2026-09-11, +immediately before decommissioning. This is the **authoritative** record: most of +these monitors existed only in the Uptime Kuma UI and were never described by any +playbook in this repo. + +**75 monitors total** — 16 group, 8 http, 3 port, 48 push. All were active. + +Push tokens are deliberately **not** recorded here: they are live credentials, and +anything holding one could report a false 'up'. They die with the server. + +--- + +## arbret - production *(7 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| arbret.com - arbret-analytics | push | — | 120s | Healthy when timer is scheduled and last run succeeded | +| arbret.com - arbret-backup | push | — | 120s | Healthy when timer is scheduled and last run succeeded | +| arbret.com - arbret-server | push | — | 120s | Healthy when arbret-server.service is active | +| arbret.com - arbret-worker | push | — | 120s | Healthy when arbret-worker.service is active | +| arbret.com - health | push | — | 120s | Healthy when GET /api/health returns status ok | +| arbret.com - https | push | — | 120s | Healthy when HTTPS front-door returns 200 | +| arbret.com - postgresql | push | — | 120s | Healthy when postgresql.service is active | + +## arbret - staging *(7 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| arbretstaging.contrapeso.xyz - arbret-analytics | push | — | 120s | Healthy when timer is scheduled and last run succeeded | +| arbretstaging.contrapeso.xyz - arbret-backup | push | — | 120s | Healthy when timer is scheduled and last run succeeded | +| arbretstaging.contrapeso.xyz - arbret-server | push | — | 120s | Healthy when arbret-server.service is active | +| arbretstaging.contrapeso.xyz - arbret-worker | push | — | 120s | Healthy when arbret-worker.service is active | +| arbretstaging.contrapeso.xyz - health | push | — | 120s | Healthy when GET /api/health returns status ok | +| arbretstaging.contrapeso.xyz - https | push | — | 120s | Healthy when HTTPS front-door returns 200 | +| arbretstaging.contrapeso.xyz - postgresql | push | — | 120s | Healthy when postgresql.service is active | + +## arbret-staging-box - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-arbret-staging-box-root | push | — | 960s | upside-down, Disk Usage: arbret-staging-box (/) - Alerts when usage excee | +| system-healthcheck-arbret-staging-box | push | — | 90s | System Healthcheck: arbret-staging-box - Regular healthcheck | + +## forgejo-runner-box - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-forgejo-runner-box-root | push | — | 960s | upside-down, Disk Usage: forgejo-runner-box (/) - Alerts when usage excee | +| system-healthcheck-forgejo-runner-box | push | — | 90s | System Healthcheck: forgejo-runner-box - Regular healthcheck | + +## fulcrum-box - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-fulcrum-box-root | push | — | 960s | upside-down, Disk Usage: fulcrum-box (/) - Alerts when usage exceeds 80% | +| system-healthcheck-fulcrum-box | push | — | 90s | System Healthcheck: fulcrum-box - Regular healthcheck ping e | + +## knots-box - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-knots-box-root | push | — | 960s | upside-down, Disk Usage: knots-box (/) - Alerts when usage exceeds 80% | +| system-healthcheck-knots-box | push | — | 90s | System Healthcheck: knots-box - Regular healthcheck ping eve | + +## memos-box - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-memos-box-root | push | — | 960s | upside-down, Disk Usage: memos-box (/) - Alerts when usage exceeds 80% | +| system-healthcheck-memos-box | push | — | 90s | System Healthcheck: memos-box - Regular healthcheck ping eve | + +## mempool-box - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-mempool-box-root | push | — | 960s | upside-down, Disk Usage: mempool-box (/) - Alerts when usage exceeds 80% | +| system-healthcheck-mempool-box | push | — | 90s | System Healthcheck: mempool-box - Regular healthcheck ping e | + +## nodito - infra *(4 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| UPS ONLINE | push | https:// | 90s | — | +| cpu-temp-nodito | push | — | 120s | upside-down, CPU Temperature: nodito - Alerts when temperature exceeds 80 | +| system-healthcheck-nodito | push | — | 300s | System Healthcheck: nodito - Regular healthcheck ping every | +| zfs-health-nodito | push | — | 90000s | ZFS Pool Health: nodito - Daily health check for pool proxmo | + +## nonkeiwaisi-box - infra *(0 monitors)* + +_(empty)_ + +## prd-arbret - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-prd-arbret-root | push | — | 960s | upside-down, Disk Usage: prd-arbret (/) - Alerts when usage exceeds 80% | +| system-healthcheck-prd-arbret | push | — | 90s | System Healthcheck: prd-arbret - Regular healthcheck ping ev | + +## prd-spacey - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-prd-spacey-root | push | — | 960s | upside-down, Disk Usage: prd-spacey (/) - Alerts when usage exceeds 80% | +| system-healthcheck-prd-spacey | push | — | 90s | System Healthcheck: prd-spacey - Regular healthcheck ping ev | + +## prd-vipy - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-prd-vipy-root | push | — | 960s | upside-down, Disk Usage: prd-vipy (/) - Alerts when usage exceeds 80% | +| system-healthcheck-prd-vipy | push | — | 90s | System Healthcheck: prd-vipy - Regular healthcheck ping ever | + +## prd-watchtower - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-prd-watchtower-root | push | — | 960s | upside-down, Disk Usage: prd-watchtower (/) - Alerts when usage exceeds 8 | +| system-healthcheck-prd-watchtower | push | — | 90s | System Healthcheck: prd-watchtower - Regular healthcheck pin | + +## services *(19 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| Forgejo | http | https://forgejo.contrapeso.xyz/api/healthz | 90s | — | +| Headscale | http | https://headscale.contrapeso.xyz/health | 60s | — | +| LNBits | http | https://wallet.contrapeso.xyz/api/v1/health | 60s | — | +| Memos | http | https://memos.contrapeso.xyz/healthz | 60s | — | +| Mempool Public Access | http | https://mempool.contrapeso.xyz | 60s | — | +| Personal Blog | http | https://pablohere.contrapeso.xyz | 60s | — | +| Vaultwarden | http | https://vault.contrapeso.xyz/alive | 60s | — | +| ntfy-emergency-app | http | https://avisame.contrapeso.xyz | 60s | — | +| Bitcoin Knots P2P Public | port | 167.172.107.33:8333 | 60s | — | +| DATUM Stratum (public) | port | 167.172.107.33:23334 | 60s | — | +| Fulcrum SSL Public | port | 167.172.107.33:50002 | 60s | — | +| Bitcoin Knots | push | — | 90s | — | +| DATUM Gateway | push | — | 90s | — | +| Fulcrum | push | — | 90s | — | +| Mempool Backend | push | — | 180s | — | +| Mempool Frontend | push | — | 90s | — | +| Mempool MariaDB | push | — | 90s | — | +| Phoenixd | push | — | 90s | — | +| forgejo-runner-healthcheck | push | — | 90s | Forgejo Runner healthcheck - ping every 60s | + +## small-backups-box - infra *(2 monitors)* + +| Monitor | Type | Target | Interval | Notes | +|---|---|---|---|---| +| disk-usage-small-backups-box-root | push | — | 960s | upside-down, Disk Usage: small-backups-box (/) - Alerts when usage exceed | +| system-healthcheck-small-backups-box | push | — | 90s | System Healthcheck: small-backups-box - Regular healthcheck | + diff --git a/archive/uptime_kuma/README.md b/archive/uptime_kuma/README.md new file mode 100644 index 0000000..5405ae0 --- /dev/null +++ b/archive/uptime_kuma/README.md @@ -0,0 +1,51 @@ +# Uptime Kuma — archived + +Uptime Kuma was the monitoring stack for this infrastructure until **2026-09-11**, when +it was decommissioned. Everything that referenced it has been removed from the live +playbooks; this folder is the record of what it was, kept so the setup can be understood +later without digging through git history. + +## Contents + +| File | What it is | +|---|---| +| `MONITORS.md` | Every monitor that existed, grouped as it was in the UI. The authoritative record. | +| `monitors.json` | The same data, machine-readable, as returned by the API. | +| `deploy_uptime_kuma_playbook.yml` | How the server itself was deployed (Docker Compose on `monitoring`, behind Caddy). | +| `uptime_kuma_vars.yml` | Variables the deploy playbook needed — it is unreadable without these. | +| `setup_backup_uptime_kuma_to_lapy.yml` | How its data was backed up, and to where. Useful when disposing of the old volumes. | + +## Why the inventory was captured from the live server, not the repo + +The playbooks only ever created **17** monitors. The live instance had **75**. The +difference was created by hand in the UI and existed nowhere else — so a repo-derived +list would have silently lost two thirds of the picture. `MONITORS.md` is a snapshot of +the real thing, taken immediately before removal. + +Push tokens are deliberately excluded. They are live credentials — anything holding one +can report a false "up" — and they become meaningless once the server is gone. + +## What removal did NOT do + +Removing the playbook code does not touch the machines. **48 push monitors** were driven +by scripts and systemd timers installed *on the hosts*, which keep firing on their +schedule and curling an endpoint that no longer answers. They are harmless but they are +still there, writing logs and failing quietly. + +Left behind, per host: + +- `/opt/disk-monitoring` + `disk-usage-monitor.{service,timer}` — on all 12 `managed` hosts +- `/opt/system-healthcheck` + `system-healthcheck.{service,timer}` — on all 12 `managed` hosts +- `/opt/nodito-monitoring` + `nodito-cpu-temp-monitor.{service,timer}` — `nodito` +- `/opt/zfs-monitoring` — `nodito` +- `/opt/ups-monitoring` — `nodito` +- `bitcoin-knots-healthcheck.{service,timer}` — `bitcoin` +- `datum-gateway-healthcheck.{service,timer}` — `bitcoin` +- `fulcrum-healthcheck.{service,timer}` — `electrum` +- `mempool-{backend,frontend,mariadb}-healthcheck.service` — `mempool` +- phoenixd and forgejo-runner healthcheck units — `edge`, `ci_runner` + +Note `nut-monitor.service` on `nodito` is **NUT's own daemon**, not a monitoring +leftover — do not remove it with the rest. + +Cleaning these up is a separate decommissioning pass and was not part of the removal. diff --git a/ansible/services/uptime_kuma/deploy_uptime_kuma_playbook.yml b/archive/uptime_kuma/deploy_uptime_kuma_playbook.yml similarity index 100% rename from ansible/services/uptime_kuma/deploy_uptime_kuma_playbook.yml rename to archive/uptime_kuma/deploy_uptime_kuma_playbook.yml diff --git a/archive/uptime_kuma/monitors.json b/archive/uptime_kuma/monitors.json new file mode 100644 index 0000000..d1b0b0a --- /dev/null +++ b/archive/uptime_kuma/monitors.json @@ -0,0 +1,1202 @@ +[ + { + "id": 1, + "name": "services", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 3, + "name": "Vaultwarden", + "type": "http", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": "https://vault.contrapeso.xyz/alive", + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 4, + "name": "prd-spacey - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 5, + "name": "prd-watchtower - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 6, + "name": "prd-vipy - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 7, + "name": "disk-usage-prd-vipy-root", + "type": "push", + "active": true, + "parent": 6, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: prd-vipy (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 8, + "name": "disk-usage-prd-watchtower-root", + "type": "push", + "active": true, + "parent": 5, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: prd-watchtower (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 9, + "name": "disk-usage-prd-spacey-root", + "type": "push", + "active": true, + "parent": 4, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: prd-spacey (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 10, + "name": "system-healthcheck-prd-vipy", + "type": "push", + "active": true, + "parent": 6, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: prd-vipy - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 11, + "name": "system-healthcheck-prd-spacey", + "type": "push", + "active": true, + "parent": 4, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: prd-spacey - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 12, + "name": "system-healthcheck-prd-watchtower", + "type": "push", + "active": true, + "parent": 5, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: prd-watchtower - Regular healthcheck ping every 60s", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 13, + "name": "Forgejo", + "type": "http", + "active": true, + "parent": 1, + "interval": 90, + "retries": null, + "url": "https://forgejo.contrapeso.xyz/api/healthz", + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 10, + "resendInterval": 0 + }, + { + "id": 14, + "name": "Personal Blog", + "type": "http", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": "https://pablohere.contrapeso.xyz", + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 15, + "name": "LNBits", + "type": "http", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": "https://wallet.contrapeso.xyz/api/v1/health", + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 16, + "name": "ntfy-emergency-app", + "type": "http", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": "https://avisame.contrapeso.xyz", + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 17, + "name": "Headscale", + "type": "http", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": "https://headscale.contrapeso.xyz/health", + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 18, + "name": "knots-box - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 19, + "name": "disk-usage-knots-box-root", + "type": "push", + "active": true, + "parent": 18, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: knots-box (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 20, + "name": "system-healthcheck-knots-box", + "type": "push", + "active": true, + "parent": 18, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: knots-box - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 21, + "name": "nodito - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 22, + "name": "system-healthcheck-nodito", + "type": "push", + "active": true, + "parent": 21, + "interval": 300, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: nodito - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 23, + "name": "cpu-temp-nodito", + "type": "push", + "active": true, + "parent": 21, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "CPU Temperature: nodito - Alerts when temperature exceeds 80\u00b0C", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 24, + "name": "Bitcoin Knots", + "type": "push", + "active": true, + "parent": 1, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 25, + "name": "fulcrum-box - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 26, + "name": "disk-usage-fulcrum-box-root", + "type": "push", + "active": true, + "parent": 25, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: fulcrum-box (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 27, + "name": "system-healthcheck-fulcrum-box", + "type": "push", + "active": true, + "parent": 25, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: fulcrum-box - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 28, + "name": "Fulcrum", + "type": "push", + "active": true, + "parent": 1, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 35, + "name": "mempool-box - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 36, + "name": "disk-usage-mempool-box-root", + "type": "push", + "active": true, + "parent": 35, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: mempool-box (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 37, + "name": "system-healthcheck-mempool-box", + "type": "push", + "active": true, + "parent": 35, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: mempool-box - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 38, + "name": "Mempool MariaDB", + "type": "push", + "active": true, + "parent": 1, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 39, + "name": "Mempool Backend", + "type": "push", + "active": true, + "parent": 1, + "interval": 180, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 40, + "name": "Mempool Frontend", + "type": "push", + "active": true, + "parent": 1, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 41, + "name": "Mempool Public Access", + "type": "http", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": "https://mempool.contrapeso.xyz", + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 42, + "name": "memos-box - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 43, + "name": "disk-usage-memos-box-root", + "type": "push", + "active": true, + "parent": 42, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: memos-box (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 44, + "name": "system-healthcheck-memos-box", + "type": "push", + "active": true, + "parent": 42, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: memos-box - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 45, + "name": "Memos", + "type": "http", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": "https://memos.contrapeso.xyz/healthz", + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 46, + "name": "Bitcoin Knots P2P Public", + "type": "port", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": null, + "hostname": "167.172.107.33", + "port": 8333, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 47, + "name": "Fulcrum SSL Public", + "type": "port", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": null, + "hostname": "167.172.107.33", + "port": 50002, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 49, + "name": "zfs-health-nodito", + "type": "push", + "active": true, + "parent": 21, + "interval": 90000, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "ZFS Pool Health: nodito - Daily health check for pool proxmox-tank-1", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 50, + "name": "UPS ONLINE", + "type": "push", + "active": true, + "parent": 21, + "interval": 90, + "retries": null, + "url": "https://", + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 51, + "name": "forgejo-runner-box - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 52, + "name": "disk-usage-forgejo-runner-box-root", + "type": "push", + "active": true, + "parent": 51, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: forgejo-runner-box (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 53, + "name": "system-healthcheck-forgejo-runner-box", + "type": "push", + "active": true, + "parent": 51, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: forgejo-runner-box - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 55, + "name": "forgejo-runner-healthcheck", + "type": "push", + "active": true, + "parent": 1, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Forgejo Runner healthcheck - ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 59, + "name": "arbret-staging-box - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 60, + "name": "disk-usage-arbret-staging-box-root", + "type": "push", + "active": true, + "parent": 59, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: arbret-staging-box (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 61, + "name": "system-healthcheck-arbret-staging-box", + "type": "push", + "active": true, + "parent": 59, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: arbret-staging-box - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 66, + "name": "arbret - staging", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 67, + "name": "arbretstaging.contrapeso.xyz - health", + "type": "push", + "active": true, + "parent": 66, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when GET /api/health returns status ok", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 68, + "name": "arbretstaging.contrapeso.xyz - https", + "type": "push", + "active": true, + "parent": 66, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when HTTPS front-door returns 200", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 69, + "name": "arbretstaging.contrapeso.xyz - postgresql", + "type": "push", + "active": true, + "parent": 66, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when postgresql.service is active", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 70, + "name": "arbretstaging.contrapeso.xyz - arbret-server", + "type": "push", + "active": true, + "parent": 66, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when arbret-server.service is active", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 71, + "name": "arbretstaging.contrapeso.xyz - arbret-worker", + "type": "push", + "active": true, + "parent": 66, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when arbret-worker.service is active", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 72, + "name": "arbretstaging.contrapeso.xyz - arbret-analytics", + "type": "push", + "active": true, + "parent": 66, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when timer is scheduled and last run succeeded", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 73, + "name": "arbretstaging.contrapeso.xyz - arbret-backup", + "type": "push", + "active": true, + "parent": 66, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when timer is scheduled and last run succeeded", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 74, + "name": "prd-arbret - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 85, + "name": "disk-usage-prd-arbret-root", + "type": "push", + "active": true, + "parent": 74, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: prd-arbret (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 86, + "name": "system-healthcheck-prd-arbret", + "type": "push", + "active": true, + "parent": 74, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: prd-arbret - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 87, + "name": "arbret - production", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 88, + "name": "arbret.com - health", + "type": "push", + "active": true, + "parent": 87, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when GET /api/health returns status ok", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 89, + "name": "arbret.com - https", + "type": "push", + "active": true, + "parent": 87, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when HTTPS front-door returns 200", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 90, + "name": "arbret.com - postgresql", + "type": "push", + "active": true, + "parent": 87, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when postgresql.service is active", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 91, + "name": "arbret.com - arbret-server", + "type": "push", + "active": true, + "parent": 87, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when arbret-server.service is active", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 92, + "name": "arbret.com - arbret-worker", + "type": "push", + "active": true, + "parent": 87, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when arbret-worker.service is active", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 93, + "name": "arbret.com - arbret-analytics", + "type": "push", + "active": true, + "parent": 87, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when timer is scheduled and last run succeeded", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 94, + "name": "arbret.com - arbret-backup", + "type": "push", + "active": true, + "parent": 87, + "interval": 120, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "Healthy when timer is scheduled and last run succeeded", + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 95, + "name": "small-backups-box - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 96, + "name": "disk-usage-small-backups-box-root", + "type": "push", + "active": true, + "parent": 95, + "interval": 960, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": true, + "description": "Disk Usage: small-backups-box (/) - Alerts when usage exceeds 80%", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 97, + "name": "system-healthcheck-small-backups-box", + "type": "push", + "active": true, + "parent": 95, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": "System Healthcheck: small-backups-box - Regular healthcheck ping every 60s", + "maxretries": 1, + "resendInterval": 0 + }, + { + "id": 109, + "name": "DATUM Gateway", + "type": "push", + "active": true, + "parent": 1, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 111, + "name": "DATUM Stratum (public)", + "type": "port", + "active": true, + "parent": 1, + "interval": 60, + "retries": null, + "url": null, + "hostname": "167.172.107.33", + "port": 23334, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 112, + "name": "Phoenixd", + "type": "push", + "active": true, + "parent": 1, + "interval": 90, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 3, + "resendInterval": 0 + }, + { + "id": 113, + "name": "nonkeiwaisi-box - infra", + "type": "group", + "active": true, + "parent": null, + "interval": 60, + "retries": null, + "url": null, + "hostname": null, + "port": null, + "upsideDown": false, + "description": null, + "maxretries": 1, + "resendInterval": 0 + } +] diff --git a/ansible/services/uptime_kuma/setup_backup_uptime_kuma_to_lapy.yml b/archive/uptime_kuma/setup_backup_uptime_kuma_to_lapy.yml similarity index 100% rename from ansible/services/uptime_kuma/setup_backup_uptime_kuma_to_lapy.yml rename to archive/uptime_kuma/setup_backup_uptime_kuma_to_lapy.yml diff --git a/ansible/services/uptime_kuma/uptime_kuma_vars.yml b/archive/uptime_kuma/uptime_kuma_vars.yml similarity index 100% rename from ansible/services/uptime_kuma/uptime_kuma_vars.yml rename to archive/uptime_kuma/uptime_kuma_vars.yml