nas-doctor

nas-doctor

Docker app from mcdays94's Repository

Overview

NAS Doctor is a local diagnostic and monitoring tool for your NAS. It runs periodic health checks — analyzing SMART data, disk usage, Docker containers, GPU, network, kernel logs, temperatures, ZFS pools, UPS power, and Unraid parity — then presents findings in a beautiful web dashboard with actionable recommendations backed by Backblaze failure rate data.

Features:

  • 20+ diagnostic rules with automatic root-cause correlation
  • SMART health with Backblaze failure-rate thresholds (337k+ drives)
  • Top Processes with Docker container attribution (cgroup matching)
  • Historical trend sparklines (CPU, memory, I/O, drive temps)
  • Full stats page with trend charts and process CPU history
  • GPU monitoring (NVIDIA, Intel, AMD)
  • Speed test scheduling (Ookla CLI)
  • ZFS pool health (vdev tree, scrub/resilver, ARC stats)
  • UPS / power monitoring (NUT and apcupsd)
  • NAS OS update check (notifies when behind latest stable)
  • Parity check speed trend analysis (Unraid)
  • 2 dashboard themes (Midnight and Clean)
  • Export professional PDF diagnostic reports
  • Multi-server fleet monitoring (monitor all your NAS instances)
  • Prometheus /metrics endpoint (120+ gauges)
  • Webhook alerts: Discord, Slack, Gotify, Ntfy, generic HTTP
  • Automatic backups with configurable schedule and location
  • Data lifecycle management (retention policies, DB size cap)
  • Dashboard section visibility toggles and multi-column layout

Runtime arguments

Web UI
http://[IP]:[PORT:8060]
Network
host
Privileged
true
Extra Params
--pid=host

Template configuration

Web UI PortVariable

HTTP listen address (host networking). Change to e.g. :8067 to avoid port conflicts. If you type a bare number like 8067, it will be normalized to :8067 automatically. After changing, update the WebUI URL (container settings, Advanced View) to match.

Target
NAS_DOCTOR_LISTEN
Default
:8060
Value
:8060
Data DirectoryPathrw

Persistent data (SQLite database, config, backups)

Target
/data
Default
/mnt/user/appdata/nas-doctor
Value
/mnt/user/appdata/nas-doctor
Docker SocketPathro

Docker socket for container monitoring

Target
/var/run/docker.sock
Default
/var/run/docker.sock
Value
/var/run/docker.sock
Emhttp StatusPathro

Unraid emhttp status (required for merged drive view)

Target
/var/local/emhttp
Default
/var/local/emhttp
Value
/var/local/emhttp
Device NodesPathro

Device nodes (required for SMART and GPU access)

Target
/dev
Default
/dev
Value
/dev
SysfsPathro

Sysfs (required for SMART, GPU, and drive mapping)

Target
/sys
Default
/sys
Value
/sys
Boot ConfigPathro

Unraid boot config (parity logs, ident)

Target
/host/boot
Default
/boot
Value
/boot
System LogsPathro

System log files (syslog, messages)

Target
/host/log
Default
/var/log
Value
/var/log
Unraid VersionPathro

Unraid version file (for OS update detection)

Target
/etc/unraid-version
Default
/etc/unraid-version
Value
/etc/unraid-version
Host MountsPathro

Host disk mounts (for per-disk space monitoring)

Target
/host/mnt
Default
/mnt
Value
/mnt
Tailscale SocketPathro

Required ONLY for Tailscale peer detection (tailscale-nas-util plugin OR network_mode: host Tailscale Docker container). Leave unset if you don't use Tailscale.

Target
/var/run/tailscale
Default
/var/run/tailscale
Value
/var/run/tailscale
Scan IntervalVariable

How often to run diagnostic scans (e.g. 30m, 1h, 6h, 24h)

Target
NAS_DOCTOR_INTERVAL
Default
30m
Value
30m
TimezoneVariable

Container timezone (e.g. Europe/London, America/New_York)

Target
TZ
Default
UTC
Value
UTC
Borg Repo Path (optional)Pathro

Optional bind-mount for External Borg Monitoring. Mount your host Borg repo path here as Read Only — NAS Doctor uses `borg --bypass-lock` so it never writes to the repo, making RO mounts safe. After adding the mount, configure the repo in Settings → Advanced → Backup Monitors → Borg. Leave blank if you don't use Borg or don't want to monitor external repos. No host binary mount needed — borg is bundled in the image.

Target
/mnt/user/appdata/borg
Borg Passphrase (optional)Variable

Optional passphrase for an encrypted Borg repo configured in Settings → Advanced → Backup Monitors → Borg. NAS Doctor reads this env var by name (configurable per-repo if you have multiple passphrases). Leave blank if your repos are unencrypted or if you don't use external Borg monitoring.

Target
BORG_PASSPHRASE

Details

Repository
ghcr.io/mcdays94/nas-doctor:latest
Last Updated2026-05-31
First Seen2026-04-18

Run nas-doctor on Unraid.

nas-doctor is listed in Community Apps for Unraid OS. Explore Unraid to build a flexible home server, NAS, or homelab.