Skip to content

v2.0.0-beta.1

Pre-release
Pre-release

Choose a tag to compare

@Starosdev Starosdev released this 13 Oct 23:06
· 2 commits to beta since this release

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-token and its built-in collector uses it automatically. Hub/spoke web containers refuse to start without SCRUTINY_WEB_AUTH_TOKEN; collectors need the same value in COLLECTOR_API_TOKEN. Set web.auth.enabled: false to opt out.
  • script:// notification URLs are config-file only (#971). They are rejected through the UI and API, and existing database rows with script:// 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-For is trusted only from web.listen.trusted_proxies.
  • The PDF report directory is config-only (#971): the report_pdf_path setting is removed; use web.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=0 keeps root.
  • Example deployments no longer publish InfluxDB port 8086 (#972).
  • Collectors skip devices they cannot identify (#969): a failed smartctl --info is 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 or exclude_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_warning now 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, and admin scopes, managed at /api/settings/tokens (#976).
  • GET /api/version with the API version and, for authenticated callers, capability flags (#976).
  • last_seen and stale per device in /api/summary, and optional auto-archiving of silent devices with web.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 to beta (#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.