Skip to content

feat(apps): add Scrutiny omnibus S.M.A.R.T. monitor - #32

Merged
anatolinicolae merged 1 commit into
mainfrom
anatoli/happy-rubin-gm8hro
Oct 14, 2026
Merged

anatolinicolae merged 1 commit into
mainfrom
anatoli/happy-rubin-gm8hro

Conversation

@anatolinicolae

Copy link
Copy Markdown
Member

Summary

Adds Apps/Scrutiny using ghcr.io/analogj/scrutiny:master-omnibus (pinned to the amd64/arm64 manifest-list digest sha256:18689773150d…). This image runs the web dashboard, the S.M.A.R.T. collector and InfluxDB in one container.

  • Bridge mode, web UI on TCP 8080. InfluxDB 8086 is not published.
  • Persistent /DATA/AppData/scrutiny/{config,influxdb}, plus /run/udev mounted read-only.
  • /dev/sda is passed through by default with SYS_RAWIO. NVMe (/dev/nvme0 + SYS_ADMIN) is documented as opt-in.
  • cap_drop: ALL, adding back only the s6 init set (CHOWN, DAC_OVERRIDE, FOWNER, SETGID, SETUID) and SYS_RAWIO. Also sets no-new-privileges and a healthcheck on /api/health.
  • COLLECTOR_CRON_SCHEDULE can be edited (default is daily at midnight). The collector also runs once at startup.
  • Uses a counter version (1.0.0) because master-omnibus has no version tag, the same approach as TVHeadend.
  • Renovate: master-omnibus is added to the moving-tag rule so digest refreshes skip the release-age delay.
  • README: app list, hardware-exception list and a Scrutiny security note.

Validation

  • docker compose config -q passes for every app. reconcile_versions.py check passes.
  • The pinned ZimaOS builder (c9bb47f) builds 11 apps, and check-index passes.
  • I ran the stack locally with the hardened cap set: s6, InfluxDB, the web UI, cron and the startup collector all came up and the container reported healthy. I couldn't test real SMART reads because the test sandbox blocks raw block-device access, even with --privileged.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YCe5Nd61qXLLPNTNszwazD


Generated by Claude Code

Adds ghcr.io/analogj/scrutiny:master-omnibus, which bundles the web
dashboard, collector, and InfluxDB in one bridge-mode container on
TCP 8080. /dev/sda is passed through by default with SYS_RAWIO and a
read-only /run/udev; all other capabilities beyond the s6 init set are
dropped and InfluxDB is not published. Renovate refreshes the
master-omnibus channel immediately like other moving tags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YCe5Nd61qXLLPNTNszwazD
@anatolinicolae
anatolinicolae marked this pull request as ready for review October 14, 2026 17:39
@anatolinicolae
anatolinicolae merged commit 9c38eed into main Oct 14, 2026
1 check passed
@anatolinicolae
anatolinicolae deleted the anatoli/happy-rubin-gm8hro branch October 14, 2026 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants