github SikamikanikoBG/homelab-monitor v0.9.0
v0.9.0 — Container & Service vital signs

latest releases: v0.25.0, v0.24.0, v0.23.0...
one month ago

The Containers and Services tabs grow new vital-sign columns: Ports, Uptime, Memory, and Disk. Port chips are clickable and open host:port in a new tab.

Highlights

📦 Containers tab

Column What
Ports One pill per published host port. Click to open <host>:<port> in a new tab.
Uptime Parsed from Docker's own status string — no extra inspect calls.
Memory RSS minus page cache, like docker stats. Cached 30 s.
Disk Writable-layer size (SizeRw). Cached 30 s so the heavy scan doesn't run on every poll.

Image + Disk hide on viewports < 1100 px so the row still fits on a laptop. The Status column now drops the redundant "Up N days" prefix — uptime is its own column now.

🧩 Services tab

Column What
Ports LISTEN TCP/TCP6 ports owned by the unit's MainPID. Same clickable pill style as Containers.
Uptime From Unit.ActiveEnterTimestamp. Failed units show exit N instead.
Memory Prefers Service.MemoryCurrent when systemd has accounting on; otherwise falls back to /proc/<MainPID>/status VmRSS.

Enrichment runs only for the rows actually shown (admin/failed) — touching every loaded unit would mean hundreds of D-Bus round-trips per scan.

⚙️ Settings gear

Hosts and Alerts are set-once configuration, not live monitoring views. A new ⚙ gear in the topnav opens a small settings sub-nav with a "← Monitoring" link back. The main tab row drops to the six live tabs; deep links (#hosts, #alerts) still open in settings mode.

Other polish

  • Star button CTA: gentle "if it helps, a ⭐ helps me back" before starring, soft "thanks! got ideas? → CONTRIBUTING" after.
  • Memory + Disk values render uniformly as 0,00 GB across both tables (European decimal), so small footprints stay comparable to large ones at a glance.
  • Public website on GitHub Pages, auto-built on every push to main and every v* tag — homelab-monitor.dev if/when the DNS lines up.
  • Mobile-friendly landing page; dark-only color scheme; sharper screenshots with subtle borders; SVG architecture diagram.

⚠ Compose change required for Services Ports

To attribute LISTEN sockets to the right systemd unit, the container resolves /proc/<pid>/fd/* symlinks owned by other PIDs. That needs two things Docker doesn't grant by default:

cap_add:
  - SYS_PTRACE
security_opt:
  - apparmor=unconfined

Both are now in the upstream docker-compose.yml. If you keep a local override, add them — without these, the Services Ports column will stay empty (Memory still falls back to VmRSS, so it works in degraded mode). The container is already host-net, host-pid, host-root-RO, so the marginal trust delta is small; this is the standard pattern for monitoring stacks like cAdvisor.

Full changelog since v0.8.0

  • 33a6822 release: bump VERSION to 0.9.0 — Containers/Services columns (#43)
  • 9e3175b fix(compose): apparmor=unconfined so CAP_SYS_PTRACE actually takes effect (#42)
  • c8a797b fix(services/ui): cap_add SYS_PTRACE for Ports + GB,00 format for memory/disk (#41)
  • 8bfed34 fix(services): use /proc for ports + VmRSS fallback for memory (#40)
  • b645306 ui(containers/services): Ports/Uptime/Memory/Disk columns + clickable port pills (#39)
  • c7c44e9 Move Hosts & Alerts behind a Settings gear (#38)
  • 471c382 ui(dashboard): pre/post-star CTA — soft nudge before, ideas pointer after (#37)
  • 51b7618 ui(site): break 'HomeLab Monitor' on a word boundary
  • ea15dea ui(site): mobile media queries — tighter hero, stacked CTAs, narrower aurora
  • 355277e ui(site): 2px white-tinted borders on screenshots
  • c07d7bd ui(site): visible outlines on screenshots — dark-on-dark was blending
  • 4a6c9bb ci(docs): also fire the site deploy on every v* tag push
  • 0ea041f fix(docs): force dark scheme — the custom CSS is dark-only
  • d998629 ci(docs): mirror docs/*.svg into the site
  • b01c8ab docs: drop ASCII art for SVG + modern dev-tool aesthetic for the landing
  • 11e73a2 ci(docs): drop pip cache (no requirements file in this Docker-only repo)
  • d819777 docs: public website on GitHub Pages, auto-built on push to main

Upgrade

cd <your-clone-dir>
git pull
docker compose pull
docker compose up -d

Or if you're new:

curl -fsSLO https://raw.githubusercontent.com/SikamikanikoBG/homelab-monitor/main/docker-compose.yml
docker compose pull
docker compose up -d

Open http://<your-host-ip>:9800. Click any port chip on Containers or Services to jump straight to the service.

Image

Multi-arch (linux/amd64, linux/arm64) on Docker Hub:
sikamikaniko123/homelab-monitor:0.9.0 · also 0.9 and latest.

Don't miss a new homelab-monitor release

NewReleases is sending notifications on new releases.