v2.0.0-beta.1 (2026-10-13)
First prerelease of Scrutiny 2.0. It is published to the beta channel only: the latest, 1, and 1.76 image tags are unchanged. Read docs/UPGRADE_2.0.md before upgrading. To stay on 1.x, pin the :1 image tag.
Tracking issue: #965. Follow-ups: #973.
Breaking changes
- Authentication is on by default (#971). The omnibus image generates a token at
/opt/scrutiny/config/.auth-tokenand its built-in collector uses it automatically. Hub/spoke web containers refuse to start withoutSCRUTINY_WEB_AUTH_TOKEN; collectors need the same value inCOLLECTOR_API_TOKEN. Setweb.auth.enabled: falseto opt out. script://notification URLs are config-file only (#971). They are rejected through the UI and API, and existing database rows withscript://are skipped with a warning.- Request limits and proxies (#971): request bodies over 16 MiB (
web.listen.max_body_bytes) and login bodies over 64 KiB get 413;X-Forwarded-Foris trusted only fromweb.listen.trusted_proxies. - The PDF report directory is config-only (#971): the
report_pdf_pathsetting is removed; useweb.reports.path. - The web image runs as an unprivileged user (#972), uid 1000 by default (
PUID/PGID); root-owned volumes are handed over at startup.PUID=0keeps root. - Example deployments no longer publish InfluxDB port 8086 (#972).
- Collectors skip devices they cannot identify (#969): a failed
smartctl --infois reported as a scan error instead of registering a device without identity. Virtual disk models (QEMU HARDDISK,VBOX HARDDISK,Virtual Disk) are skipped unless listed explicitly orexclude_virtual_disks: false. - Concurrent on-demand collector runs return 409 (#975).
- Minimum upgrade-from version is 1.70.0 for SQLite databases (#977). Older databases are refused at startup without being changed; run the latest 1.76.x once first. AnalogJ/scrutiny databases are not affected.
Behavior changes to expect after upgrading
- Devices may change from passed to failed. Manufacturer SMART threshold failures (
when_failed: now) were never detected in 1.x and now are (#970). These are real failures and send notifications. - Attributes that failed a manufacturer threshold in the past (
when_failed: past) now produce a warning; with warn-level and repeat notifications enabled, such drives notify on every run (#970). - NVMe
critical_warningnow counts as a SMART failure, with the warning bits explained in the status reason (#970). - InfluxDB credentials are generated at first setup; existing installs keep using the legacy default token and log a warning to rotate it (#972).
- Default retention is raised to 21 days (daily) and 13 weeks (weekly) so a missed downsample run loses no history (#972).
New
- Named API tokens with
read,collector, andadminscopes, managed at/api/settings/tokens(#976). GET /api/versionwith the API version and, for authenticated callers, capability flags (#976).last_seenandstaleper device in/api/summary, and optional auto-archiving of silent devices withweb.devices.auto_archive_stale_days(#975, #977).- Collector
exclude:patterns and bounded parallel collection (commands.metrics_parallelism) (#969). - Collector image
HEALTHCHECK(#972). - New SQLite databases are created from a baseline schema instead of replaying the full migration history (#977).
Fixes
- Device status keeps a manufacturer SMART failure through override recalculation (#970).
- Changelog generation restored; entries for 1.69.0 through 1.76.5 backfilled (#967).
- Login token guidance, removal of the dead PDF directory setting, and visible errors for rejected notification URLs in the UI (#974).
- Prerelease tags no longer publish
latest, major, or minor image tags (#978). - Internal: maintained mock library, removal of deprecated
io/ioutil, new unit tests (#966); security scans now run on pull requests tobeta(#968).
Images
Use the rolling :beta-omnibus tag (or :beta-<image> for other images). Known issue: :2.0.0-beta.1 holds the web image, not omnibus, and no :2.0.0-beta.1-<image> tags were published; fixed for the next prerelease.