Proxmox VE 9.1.1 โ Intel i9-13900H (20 threads) โ 128 GB RAM โ Kernel 6.17.2-1-pve
TODO: Lock SSH (22), Proxmox web UI (8006), and Cockpit (9090) to NetBird-only access. UFW rule:
allow from 100.64.0.0/10 to any port 22/8006/9090, then deny those ports from public. Apply same pattern to VPS (edge01). This makes every admin surface unreachable from the public internet โ only accessible via the NetBird mesh.
| Drive | Size | Type | ZFS Pool | Purpose |
|---|---|---|---|---|
| nvme0n1 | 1.8 TB | NVMe | โ | Boot (PVE root + LVM-thin) |
| nvme1n1 | 3.6 TB | NVMe | nvmepool (stripe) |
VMs, containers, sync, music, movies, books, photos, video |
| nvme2n1 | 3.6 TB | NVMe | nvmepool (stripe) |
โ |
| nvme3n1 | 3.6 TB | NVMe | nvmepool (stripe) |
โ |
| sda | 465.8 GB | NVMe (USB) | backups |
Vzdump backups, ISOs (Crucial P5 500GB in Sabrent USB enclosure, installed Apr 19 2026) |
| โ | 2ร 18.2 TB | HDD (TB3) | Biggest mirror-0 |
Archive/backup mirror (ORICO 9858T3 Thunderbolt 3 enclosure) |
| โ | 3ร 4 TB | HDD (TB3) | โ | 3 free bays in ORICO 9858T3 Thunderbolt 3 enclosure (Birch pool retired Apr 2026) |
Retired (Apr 2026):
BIGGIE(Seagate 5TB USB),Big(932GB SSD),Birch(3ร4TB RAIDZ1 โ pool destroyed, seedbox sync moved to nvmepool/ingest). Nextcloud removed.
| Pool | Size | Used | Health | Key Datasets |
|---|---|---|---|---|
nvmepool |
10.9 TB | ~6.4 TB (59%) | ONLINE | sync, music, movies, books, photos, video, audiobookshelf, bookshelf, tv, ingest, container-data, vms |
Biggest |
18.2 TB | ~16.2 TB (89%) | ONLINE | Maple (Amigo, Monte, Ichabod โ archive data), nvmepool-backup (nightly rsync of nvmepool), Kiwix |
Birch |
โ | โ | โ | RETIRED Apr 2026 โ pool destroyed. Seedbox sync moved to nvmepool/ingest. 3 free drive bays available in ORICO enclosure. |
backups |
464 GB | โ | ONLINE | dump, isos โ Crucial P5 500GB (CT500P5SSD8, serial 21022FE3A911) in Sabrent USB enclosure (Realtek bridge 0bda:9210). Replaced failed Samsung 980 1TB on Apr 19 2026 (original Samsung lasted 6 days). |
offsite |
18.2 TB | ~10.8 TB (59%) | ONLINE | maple (Biggest/Maple mirror), nvmepool-data (nvmepool backup copy), ct100-backups, seedbox |
Dataset breakdown (nvmepool):
| Dataset | Used | Mount | Purpose |
|---|---|---|---|
nvmepool/sync |
1.87 TB | /nvmepool/sync |
Mac Studio SYNC mirror |
nvmepool/music |
2.35 TB | /nvmepool/music |
Music library (Navidrome + Plex) |
nvmepool/movies |
1.83 TB | /nvmepool/movies |
Movie library (Plex) |
nvmepool/audiobookshelf |
24.7 GB | /nvmepool/audiobookshelf |
Audiobook library |
nvmepool/bookshelf |
6.24 GB | /nvmepool/bookshelf |
Readarr app data |
nvmepool/books |
33.2 GB | /nvmepool/books |
Calibre-Web library |
nvmepool/photos |
1.40 TB | /nvmepool/photos |
Photo library (Plex + Immich external library) |
nvmepool/video |
27.9 GB | /nvmepool/video |
Video library (Plex) |
nvmepool/tv |
187 GB | /nvmepool/tv |
TV library (Plex + Sonarr) |
nvmepool/ingest |
varies | /nvmepool/ingest |
Seedbox download landing zone (replaces retired Birch pool) |
nvmepool/container-data |
38.0 GB | /nvmepool/container-data |
Large container configs (Lidarr, Plex, CWA, Sonarr, Immich DB + uploads) โ moved off CT100 rootfs Apr 2026 |
nvmepool/vms |
95.4 GB | /nvmepool/vms |
VM/CT disk images |
Dataset breakdown (Biggest):
| Dataset | Used | Contents |
|---|---|---|
Biggest/Maple |
10.1 TB | Amigo (Cell Photos, ISO, TV, Video), Ichabod (Movies, Music, Databases, Podcasts), Monte (Dropbox, Mystuff, PDF, Photos) |
Biggest/nvmepool-backup |
5.81 TB | Nightly rsync mirror of all nvmepool datasets |
Biggest/Kiwix |
99 GB | Offline reference content (Wikipedia, Stack Exchange, Gutenberg) โ zstd compressed |
Biggest/media-staging |
empty | General staging area on mirrored drives |
Speedy, TimeMachineOne, Ichabod/Sort, Amigo/delgross, Amigo/Youtube, Possible Delete โ all deleted (Apr 7 and Apr 16 2026). Special vdev (Optane 110GB) and cache SSD (465GB) removed from pool.
Dataset breakdown (offsite):
| Dataset | Used | Contents |
|---|---|---|
offsite/maple |
6.23 TB | Mirror of Biggest/Maple โ irreplaceable archive data |
offsite/nvmepool-data |
4.55 TB | Backup copy of nvmepool media |
offsite/ct100-backups |
empty | CT100 vzdump backup destination |
offsite/seedbox |
empty | Seedbox data backup destination |
The offsite pool is a single 18.2 TB drive that travels intermittently to the farm for geographic redundancy. Manual sync before each departure.
CT 100 โ docker-host (primary media/apps container)
| Setting | Value |
|---|---|
| OS | Debian 12 (LXC) |
| Cores | 4 |
| RAM | 16 GB |
| Swap | 4 GB |
| Root disk | 48 GB on nvme-data (expanded from 32 GB Apr 2026) |
| IP | 192.168.8.100 |
| Features | Nesting, keyctl, privileged (unprivileged: 0) โ required for stable Docker networking |
| Autostart | Yes |
Bind mounts into CT 100:
| Host path | Container mount | Purpose |
|---|---|---|
/nvmepool/ingest |
/mnt/seedbox |
Seedbox downloads landing (Music + Books) |
/nvmepool/books |
/mnt/books |
Calibre-Web library |
/nvmepool/music |
/mnt/music |
Music library |
/nvmepool/audiobookshelf |
/mnt/audiobookshelf |
Audiobookshelf data |
/nvmepool/bookshelf |
/mnt/bookshelf |
Readarr app data |
/nvmepool/movies |
/mnt/movies |
Movie library |
/nvmepool/photos |
/mnt/photos |
Photo library |
/nvmepool/video |
/mnt/video |
Video library |
/nvmepool/tv |
/mnt/tv |
TV library |
/nvmepool/container-data |
/mnt/container-data |
Large container configs (Lidarr, Plex, CWA) |
/Biggest/Kiwix |
/mnt/kiwix |
Kiwix ZIM file storage (offline Wikipedia, etc.) |
CT 101 โ immich (dedicated Immich photo management host, created Apr 18 2026)
| Setting | Value |
|---|---|
| OS | Debian 12 (LXC) |
| Cores | 8 (bumped from 4 for faster initial ML scan) |
| RAM | 8 GB |
| Swap | 2 GB |
| Root disk | 32 GB on nvme-data |
| IP | 192.168.8.103 (originally .101, changed Apr 18 due to IP conflict with office-2.lan) |
| Features | Nesting, keyctl |
| Autostart | Yes |
| MAC | BC:24:11:D5:67:E8 |
Bind mounts into CT 101:
| Host path | Container mount | Purpose |
|---|---|---|
/nvmepool/photos |
/mnt/photos |
Immich external library (read-only, 1.4 TB) |
/nvmepool/container-data/immich |
/mnt/immich-data |
Immich uploads, postgres DB, thumbs, model cache |
Docker-specific notes: IPv6 disabled in /etc/docker/daemon.json (required โ ghcr.io was causing connection resets because CT101 has no IPv6 default route). DNS set to 8.8.8.8 + 1.1.1.1.
CT 105 โ roon (Roon Server, created May 2026)
| Setting | Value |
|---|---|
| OS | Debian 12 (LXC) |
| Cores | 4 |
| RAM | 8 GB |
| Root disk | 16 GB on nvme-ct |
| IP | 192.168.8.105 |
| Features | Nesting, privileged |
| Autostart | Yes |
| DNS | 192.168.8.53 (Pi-hole) |
| NetBird | Peer roon (100.123.169.114) in BeeDifferent group |
Bind mounts into CT 105:
| Host path | Container mount | Purpose |
|---|---|---|
/nvmepool/music |
/mnt/music |
Music library (shared with CT100 Plex/Navidrome) |
Services: Roon Server (/opt/RoonServer/start.sh) managed by systemd roonserver.service. Roon clients connect via mDNS discovery on LAN or via NetBird (Roon ARC for remote).
| Service | Image | Port | URL | Status |
|---|---|---|---|---|
| Plex | linuxserver/plex | 32400 | http://192.168.8.100:32400/web | Up |
| Calibre-Web (CWA) | calibre-web-automated | 8083 | http://192.168.8.100:8083 | Up |
| Portainer | portainer-ce:lts | 9443 | https://192.168.8.100:9443 | Up |
| Uptime Kuma | uptime-kuma:1 | 3001 | http://192.168.8.100:3001 | Up |
| Gotify | gotify/server | 8070 | http://192.168.8.100:8070 | Up |
| Gotify-Telegram Bridge | custom (Python) | โ | โ | Up |
| N8N | n8n:latest | 5678 | http://192.168.8.100:5678 | Up |
| Audiobookshelf | audiobookshelf:latest | 13378 | http://192.168.8.100:13378 | Up |
| Navidrome | navidrome:latest | 4533 | http://192.168.8.100:4533 | Up |
| Lidarr | lidarr:nightly | 8686 | lidarr.edmd.me | Up |
| Bookshelf | bookshelf:hardcover | 8787 | http://192.168.8.100:8787 | Up |
| Shelfmark | shelfmark | 8084 | http://192.168.8.100:8084 | Up |
| Radarr | linuxserver/radarr | 7878 | radarr.edmd.me | Up |
| Sonarr | linuxserver/sonarr | 8989 | sonarr.edmd.me | Up |
| Prowlarr | prowlarr | 9696 | prowlarr.edmd.me | Up |
| FreshRSS | freshrss | 8180 | http://192.168.8.100:8180 | Up |
| Kiwix | ghcr.io/kiwix/kiwix-serve | 8380 | http://192.168.8.100:8380 | Up |
| Wallabag | wallabag/wallabag | 8480 | http://192.168.8.100:8480 | Up |
| Wallabag DB | mariadb:11 | โ | internal | Up |
| Wallabag Redis | redis:7-alpine | โ | internal | Up |
| ConvertX | ghcr.io/c4illin/convertx | 3100 | http://192.168.8.100:3100 | Up |
| Aurral | ghcr.io/lklynet/aurral | 3002 | http://192.168.8.100:3002 | Up |
| Recyclarr | ghcr.io/recyclarr/recyclarr | โ | headless | Up |
| Dozzle | amir20/dozzle | 9999 | http://192.168.8.100:9999 | Up |
| Homepage | gethomepage.dev | 3000 | http://192.168.8.100:3000 | Up |
| FlareSolverr | flaresolverr | 8191 | http://192.168.8.100:8191 | Up |
| Watchtower | containrrr/watchtower | โ | headless | Up |
| Prometheus | prom/prometheus | 9090 | http://192.168.8.100:9090 | Up |
| Grafana | grafana/grafana | 3200 | grafana.edmd.me | Up |
| node-exporter | prom/node-exporter | โ | internal | Up |
| cAdvisor | gcr.io/cadvisor | โ | internal | Up |
| weather-exporter | custom (Python) | 9102 | internal | Up |
| Alertmanager | prom/alertmanager | โ | internal | Up |
| Alertmanager-Gotify Bridge | python:3.12-alpine | โ | internal | Up |
| Service | Image | Port | URL | Status |
|---|---|---|---|---|
| Immich Server | ghcr.io/immich-app/immich-server:release | 2283 | http://192.168.8.103:2283 | Up |
| Immich ML | ghcr.io/immich-app/immich-machine-learning:release | โ | internal | Up |
| Immich Postgres | ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0 | โ | internal | Up |
| Immich Redis | redis:6.2-alpine | โ | internal | Up |
Immich is a self-hosted photo and video management platform (Google Photos alternative). Deployed as a 4-container stack on CT 101 via Docker Compose at /opt/immich/. External library points at /nvmepool/photos (1.4 TB, ~134K files) in read-only mode so originals are never modified. Immich’s own data (uploads, thumbnails, transcoded video, Postgres DB, ML model cache) lives in /nvmepool/container-data/immich/. Admin account created on first web access. DB password stored in /opt/immich/.env. Image tag locked to :release.
Plex serves movies, music, photos, video, and audiobooks from nvmepool. Plexamp (iOS/Mac client) connects to it for music. Uses network_mode: host.
Radarr manages the movie library at /mnt/movies (nvmepool/movies). Searches via Prowlarr indexers, downloads via seedbox, auto-renames and organizes movies for Plex. API key: b117993eb50f465ea485654bc0118861. Compose at /opt/radarr/docker-compose.yml.
Filebot (v5.2.1) is installed as a system package on CT100 (/bin/filebot) for ad-hoc movie/media renaming. Not containerized.
Calibre-Web Automated (CWA) serves the book library from /mnt/books (nvmepool/books). Auto-ingests books dropped into /mnt/books/ingest, auto-converts 28 formats to epub, fetches metadata, detects duplicates. Calibre bundled. Default login: admin / admin123. Image: crocodilestick/calibre-web-automated:latest.
Kiwix serves offline reference content (Wikipedia, Stack Exchange, Project Gutenberg, etc.) from /mnt/kiwix (Biggest/Kiwix โ zstd compressed, 5.6TB available). ZIM files are downloaded manually from library.kiwix.org. A cron-based watcher (/usr/local/bin/kiwix-watcher.sh, every 5 min) detects new/changed ZIMs via MD5 hash of the file list and restarts the container to pick them up. Compose at /opt/kiwix/docker-compose.yml. Starter ZIM: wikipedia_en_simple_all_nopic_2026-02.zim (922 MB).
Wallabag is a self-hosted read-it-later service (alternative to Pocket/Instapaper). Stack: Wallabag app + MariaDB 11 (wallabag-db) + Redis 7 (wallabag-redis), all on dedicated wallabag-net bridge network. Compose at /opt/wallabag/docker-compose.yml. Secrets (DB password, Symfony secret) saved in /opt/wallabag/credentials.txt (root-only, chmod 600). Data persisted in named Docker volumes (wallabag-db, wallabag-redis, wallabag-images). Default admin account needs to be created on first visit. Browser extensions for Firefox/Chrome and mobile apps (iOS/Android) support direct capture.
ConvertX is a self-hosted file converter supporting 1000+ formats via FFmpeg, Pandoc, LibreOffice, GraphicsMagick, Inkscape, and more. Compose at /opt/convertx/docker-compose.yml. Data persisted in named volume convertx-data. Account registration disabled after first account creation (ACCOUNT_REGISTRATION=false). Converted files auto-delete after 24 hours (AUTO_DELETE_EVERY_N_HOURS=24). HTTP_ALLOWED=true set for local HTTP access.
| Share | Path | Access | Purpose |
|---|---|---|---|
Review |
/Biggest/Maple |
read/write, user: bee | Archive data on mirrored drives (Amigo, Ichabod, Monte) |
Sync |
/nvmepool/sync |
read-only, user: bee | Mac Studio SYNC mirror |
Music |
/nvmepool/music |
read/write, user: bee | Music library (33,654 tracks) |
Books |
/nvmepool/books |
read/write, user: bee | Book library |
Movies |
/nvmepool/movies |
read/write, user: bee | Movie library |
Video |
/nvmepool/video |
read/write, user: bee | Video library |
Seedbox |
โ | โ | โ |
Media Staging |
/Biggest/media-staging |
read/write, user: bee | Staging area on mirrored drives |
backups |
/backuppool |
read-only, user: bee | Proxmox dumps/ISOs |
nvmepool-backup |
/Biggest/nvmepool-backup |
read-only, user: bee | Nightly nvmepool backup |
All shares configured in /etc/samba/smb.conf (no registry shares). valid users = bee, ownership standardized to bee:bee across all datasets. Apple vfs objects = fruit streams_xattr for macOS compatibility.
Mac Finder access: smb://192.168.8.221/<share_name> or via Network โ PVE (Avahi/mDNS advertised).
The seedbox is a remote Usenet server at ismene.usbx.me (IP 46.232.210.50). NZBGet runs on the seedbox and downloads to categorized folders. Two SSH tunnels on Proxmox expose the seedbox UIs locally, and cron scripts pull completed files down.
Data flow:
- Sonarr/Radarr/Lidarr request content โ send to NZBGet (Usenet) or Transmission (torrents) on seedbox
- NZBGet/Transmission download to
completed/directories seedbox-sync.sh(every 15 min) pulls completed downloads to/nvmepool/ingest/- *arr apps detect, rename, and move files to final libraries (movies, tv, music, books)
- Plex library scan triggered automatically via *arr notification on import
- Plex/Navidrome serve from nvmepool
Download clients on seedbox (ismene.usbx.me):
| Client | Protocol | Local Tunnel | Seedbox Port | Auth |
|---|---|---|---|---|
| NZBGet | Usenet | 192.168.8.221:16789 | 13036 | โ |
| NZBHydra2 | Usenet meta | 192.168.8.221:15076 | 13033 | delgross |
| Transmission | Torrent | 192.168.8.221:13010 | 13010 | delgross |
Indexers (Prowlarr):
| Indexer | Protocol | Type | RSS | Auto-search |
|---|---|---|---|---|
| NZBgeek | Usenet | Private | On | On |
| NZBFinder | Usenet | Private | On | On |
| altHUB | Usenet | Private | Off | Off (interactive only โ API abuse prevention) |
| The Pirate Bay | Torrent | Public | On | On |
Mac Studio Sync:
| Script | Schedule | Source | Destination | Notes |
|---|---|---|---|---|
sync-mac.sh |
DISABLED (Apr 13, 2026) | bee@192.168.8.180:/Users/bee/SYNC/ |
/nvmepool/sync/ |
Was failing with rsync protocol error (exit 12). Syncthing may cover this path. |
Backups:
| Job | Schedule | Scope | Compression | Retention | Storage |
|---|---|---|---|---|---|
| vzdump-daily | 2:00 AM | All VMs/CTs | zstd | 3 copies | backup-hdd (/backups/dump/dump/) |
| Docker prune | Sundays 4:00 AM | CT100 | โ | โ | Cleans dangling containers, networks, images |
| Radarr start | Midnight | CT100 | โ | โ | Starts Radarr for nightly indexer hits |
| Radarr stop | 5:00 AM | CT100 | โ | โ | Stops Radarr to limit downloads to off-hours |
| CWA processed cleanup | 5:00 AM | CT100 | โ | โ | Clears calibre-web/processed_books |
| Kiwix ZIM watcher | Every 5 min | CT100 | โ | โ | Restarts kiwix-serve when ZIM file list changes (MD5 hash check) |
Offsite Backup:
A 20TB Seagate Exos (ST20000NM002C, serial ZXA0FLHC) in an ASMT105x USB 3.2 enclosure serves as the offsite backup drive. Formatted as ZFS pool offsite with zstd compression, atime=off, xattr=sa, ashift=12. Negotiates USB 3.2 Gen 2 (10 Gbps SuperSpeed Plus) on Bus 6 Port 1 โ critical to plug into the correct USB-A port: the other USB-A ports on the Minisforum Venus are USB 2.0 and will bottleneck transfers to ~42 MB/s. On the USB 3 port, rsync hits ~200 MB/s sustained (bottlenecked by spinning disk sequential write).
| Dataset | Source | Contents |
|---|---|---|
offsite/nvmepool-data |
/Biggest/nvmepool-backup/ |
Mirror of nvmepool (music, movies, books, sync, etc.) |
offsite/maple |
/Biggest/Maple/ |
Unique archive data (Amigo, Ichabod, Monte) |
offsite/seedbox |
โ | Seedbox downloads (placeholder โ seedbox now on nvmepool/ingest) |
offsite/ct100-backups |
/backups/dump/ |
Vzdump CT100 backups |
Script: /usr/local/bin/offsite-backup.sh โ rsync with --delete for incremental updates. Workflow: connect drive โ zpool import offsite โ offsite-backup.sh โ zpool export offsite โ disconnect and take offsite.
Health Monitoring (v2, updated Apr 18 2026):
Script: /usr/local/bin/system-health-check.sh โ runs every 15 min via /etc/cron.d/system-health-check. Pushes alerts to Gotify. Checks: root disk space, all 4 active ZFS pools (nvmepool, Biggest, backups, offsite โ health + suspended + capacity + removed/faulted vdevs), backup age/location, USB hub errors and pool suspension events, snapshot counts, key services (pveproxy, pvedaemon, smbd). Daily summary at 7 AM.
ZFS Maintenance:
| Task | Schedule | Pool |
|---|---|---|
| Auto-snapshot | Every 15 min (keep 4 frequent, 24 hourly, 31 daily, 8 weekly, 12 monthly) | All |
| Scrub Biggest | 1st of month, 3 AM | Biggest |
| Scrub nvmepool | 8th of month, 3 AM | nvmepool |
| Scrub backups | 22nd of month, 3 AM | backups |
| Service | Config |
|---|---|
| UFW | Active โ default DROP on INPUT. Allowed: SSH (22), Proxmox (8006), SMB (445, 139), VNC (5900-5999), Spice (3128), node-exporter (9100 from 192.168.8.0/24 โ added Apr 21 for Prometheus) |
| Fail2Ban | Active โ jails: proxmox, sshd |
| SSH | Key-based auth to seedbox (id_ed25519) and Mac Studio (id_rsa) |
Uptime Kuma (kuma.edmd.me) โ 60 monitors covering:
| Category | Monitors | Check Interval |
|---|---|---|
| Internet connectivity | Google, Cloudflare, DNS 8.8.8.8 | 60s |
| Network infrastructure | Router, CT100 ping | 60-120s |
| CT100 Docker services | Plex, Navidrome, CWA, Portainer, Gotify, FreshRSS, N8N, Audiobookshelf, Lidarr, Bookshelf, Shelfmark, Prowlarr, Radarr, Sonarr, Dozzle, FlareSolverr, Homepage, Prometheus, Grafana, Wallabag, Kiwix, ConvertX | 120s |
| CT101 Docker services | Immich | 60s |
| Proxmox host | Web UI, Cockpit, SMB, Syncthing, NZBGet tunnel, NZBHydra2 tunnel | 120-300s |
| Mac Studio | Ping, SSH, Life Archive API, Paperless-NGX, Syncthing, LM Studio, Embed Server, Hugo Bee Hub | 120-300s |
| VPS | Ping, Bee Hub (VPS) | 120-300s |
| SSL certificates | ha.edmd.me | 3600s |
| Keyword health checks | Plex API, Navidrome API, Portainer API | 300s |
| Farm | Home Assistant, Caddy, Pi-hole, Portainer, Uptime Kuma, Gotify (all via Caddy f-prefix URLs) | 120s |
| Seedbox | SSH | 300s |
| Weather | Davis VP2 (192.168.8.245/realtime.txt) | 300s |
Notification chain: Uptime Kuma โ Gotify (pri 8) โ Telegram bridge โ @beenetworkbot
Notification priority tiers:
| Priority | Tier | Telegram? | Sources |
|---|---|---|---|
| 8-9 | ๐ด Critical | Yes | Uptime Kuma down alerts, ZFS errors, Prometheus critical alerts (disk >90%, OOM, freeze), *arr health failures |
| 5-7 | ๐ก Warning | Yes | Prometheus warnings (disk >80%, high CPU/RAM), frost warning, cron errors |
| 2-3 | ๐ข Info | Gotify only | Grabs, downloads, daily health reports, Watchtower, books ingest, reboot notices |
| 0 | Silent | No | Watchtower container updates |
All *arr apps (Lidarr, Sonarr, Radarr, Bookshelf) have split Gotify notifications: “Gotify (Info)” at priority 2 for grabs/downloads, “Gotify (Alert)” at priority 8 for health issues and failures.
Cron errors on hpve and CT100 are captured by
cron-gotify-wrapper.shand pushed to Gotify at priority 5 (warning โ Telegram).MAILTO=""is set in both crontabs.
Gotify-Telegram Bridge (Docker, /opt/gotify-telegram/):
Polls Gotify every 10 seconds via client token. Three-tier priority filtering (Apr 21 2026): only messages with priority โฅ5 are forwarded to Telegram (๐ด โฅ8 critical, ๐ก 5-7 warning). Messages with priority <5 (grabs, routine reports, Watchtower) stay in Gotify only. This prevents notification floods from burying real alerts.
Prometheus + Alertmanager (Docker, monitoring_monitoring network):
19 alert rules across 4 severity groups: critical (host down, disk >90%, OOM, predictive fill), warning (disk >80%, high CPU/RAM/IO, container resource spikes), info (reboots, failed systemd units). Alertmanager routes to a custom Gotify webhook bridge (alertmanager-gotify container) that maps severity โ Gotify priority โ Telegram filtering. Prometheus scrapes 6 targets: itself, node-ct100, node-proxmox, cadvisor, weather-exporter, alertmanager. Retention: 5 years (1825d). Weather alerts: FrostWarning (<36ยฐF), FreezeAlert (<32ยฐF), HighWindAlert (>40mph gust), HeavyRain (>1in/hr).
| Setting | Value |
|---|---|
| Telegram Bot | @beenetworkbot |
| Telegram Chat ID | 5289824155 |
| Gotify App Token | ARCkVc0wf001L.e |
| Gotify Client Token | COXHgqAwb_mZdz0 |
Health Check Script (/usr/local/bin/system-health-check.sh):
Runs every 15 min via cron (wrapped with cron-gotify-wrapper.sh for stderr capture). Monitors root disk space, all 4 ZFS pools (nvmepool, Biggest, backups, offsite โ health/suspended/capacity/vdevs), backup age, USB hub errors, snapshot counts, key services. Daily summary at 7 AM. Alerts via Gotify โ Telegram. Updated Apr 18 2026.
| Method | Command / URL |
|---|---|
| Web UI | https://192.168.8.221:8006 |
| Cockpit | https://192.168.8.221:9090 |
| SSH | ssh root@192.168.8.221 |
| SMB (Music) | smb://192.168.8.221/Music (user: bee) |
| SMB (Movies) | smb://192.168.8.221/Movies (user: bee) |
| SMB (Books) | smb://192.168.8.221/Books (user: bee) |
| SMB (TV) | smb://192.168.8.221/TV (user: bee) |
| SMB (Review) | smb://192.168.8.221/Review (user: bee) |
| NZBGet UI | http://192.168.8.221:16789 (tunneled from seedbox) |
| NZBHydra2 UI | http://192.168.8.221:15076 (tunneled from seedbox) |
| Plex | http://192.168.8.100:32400/web |
| Calibre-Web | http://192.168.8.100:8083 |