All apps · 0 apps
Nvidia-Status
Docker app from EddDeDuck's Repository
Overview
Readme
View on GitHubNvidia Status
NVIDIA GPU dashboard + exporter — shows the GDDR6 / GDDR6X VRAM & junction
temps that nvidia-smi hides on consumer RTX 30/40 cards (read straight off the
GPU's PCIe BAR0), plus detailed stats including per‑Docker‑container GPU usage.
Exports to Prometheus, a JSON API, MQTT (with Home Assistant auto‑discovery) and InfluxDB (v1/v2) out of the box — one small container for live viewing and long‑term analysis in Grafana.
Built for Unraid, works on any Linux host with the NVIDIA proprietary driver.

Why?
nvidia-smi cannot report memory‑junction temperature on consumer GeForce cards — yet
that's the number that actually throttles a 3090/4090 (GDDR6X junctions run 20–30 °C hotter
than the core and throttle around 95–110 °C). Nvidia Status reads it directly from the
memory‑controller registers, alongside everything nvidia-smi does expose, and presents
it all in one place — plus which Docker container is using the GPU and what codec
it's encoding.
Features
- Hidden temps: core + junction + VRAM (via BAR0) + all thresholds
- Power: draw, limit, min/max/default, and optional per‑GPU power‑limit control with a latch that re‑applies after a restart
- Clocks / utilisation / VRAM / fan / PCIe gen & width + live upload/download bandwidth
- Throttle reasons (power cap, thermal, power brake, …) as clear indicators
- Per‑process → container: each GPU process' VRAM / compute / encode / decode, mapped to the owning Docker container
- NVENC sessions: codec (H.264 / HEVC / AV1), resolution, fps — per session, per container
- Multi‑GPU aware throughout (per‑GPU cards, metrics, MQTT devices, InfluxDB rows, control)
- Five outputs: dashboard, Prometheus, JSON, MQTT/HA, InfluxDB — enable/disable each
- Built‑in Settings page — configure MQTT/InfluxDB and toggle features from the browser
GPU support
Everything except junction/VRAM temps works on any GPU the NVIDIA Linux driver supports. The BAR0 junction/VRAM read is architecture‑specific:
| Support | Cards |
|---|---|
| ✅ Tested | RTX 3090, 4060 Ti 16GB, 4060 |
| ✅ Expected | RTX 4090 / 4080 / 4070 series, 3080 variants, pro A‑series, L40S, A10 |
| 🟠 Partial | Blackwell / RTX 50 (core + hotspot only) |
| ❌ Unsupported | RTX 3070 / 3070 LHR; pre‑Ampere (RTX 20, GTX 16/10) |
On unsupported cards junction/VRAM simply show blank — everything else still works.
Install (Unraid)
- Install the Nvidia‑Driver plugin (Community Applications) if you haven't.
- Search Community Applications for Nvidia Status and install, or add this repo's template.
- Open the WebUI. Configure MQTT/InfluxDB from the Settings page if you want them.
docker run
docker run -d --name nvidia-status \
--runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all \
--cap-add SYS_RAWIO --device /dev/mem \
--pid=host --cgroupns=host \
-v /var/lib/docker/containers:/hostcontainers:ro \
-v /mnt/user/appdata/nvidia-status:/config \
-p 9835:9835 --restart unless-stopped \
edddeduck/nvidia-status:latest
Add -e ENABLE_POWER_LIMIT=1 --privileged to enable power‑limit control.
Endpoints
| Path | What |
|---|---|
/ |
Live dashboard |
/settings |
Configure MQTT / InfluxDB / toggles / power control |
/metrics |
Prometheus |
/json |
Full JSON snapshot |
/help |
Full field/metric/topic reference |
Integrations
Configure from the Settings page or via env vars.
- Prometheus / Grafana / Netdata / Telegraf → scrape
/metrics - Home Assistant → set
MQTT_HOST(+ user/pass); sensors auto‑appear via MQTT discovery, grouped as one device per GPU — including the hidden junction temp - InfluxDB → Grafana → set
INFLUX_URL(+ v1INFLUX_DBor v2INFLUX_TOKEN); writes line protocol directly, no Telegraf needed - Homepage / Dashy / Node‑RED → read
/json
Configuration
Everything has an env var (see the Unraid template / nvidia-status.xml), and can also be set
on the Settings page (persisted to /config/settings.json, which overrides env vars).
Key ones: NODE_NAME, INTERVAL, ENABLE_DASHBOARD/METRICS/JSON/MQTT/INFLUX,
MQTT_HOST/PORT/USER/PASS, INFLUX_URL/DB/USER/PASS (or v2 INFLUX_TOKEN/ORG/BUCKET),
ENABLE_POWER_LIMIT, PL_MIN/PL_MAX.
Security
- Reads the GPU's BAR0 via
SYS_RAWIO+/dev/mem— required to read the junction/VRAM temps that Nvidia doesn't expose. This grants the container raw physical‑memory read. - Per‑process → container names need
--pid=host+--cgroupns=host+ the read‑only/var/lib/docker/containersmount. - Power‑limit control additionally requires
--privilegedand is off by default. - Secrets you enter (MQTT/InfluxDB passwords) are stored in the container's
/configvolume.
Credits
- VRAM‑junction/hotspot reader:
gputempsby ThomasBaruzier (Apache‑2.0) — vendored asgputemps.c, seeGPUTEMPS-LICENSE.
License
MIT — see LICENSE. The vendored gputemps.c retains its Apache‑2.0 license.
Install Nvidia-Status on Unraid in a few clicks.
Find Nvidia-Status in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Download Statistics
Related apps
Explore more like this
Explore allDetails
edddeduck/nvidia-status:latestRuntime arguments
- Web UI
http://[IP]:[PORT:9835]/- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--runtime=nvidia --cap-add SYS_RAWIO --device /dev/mem --pid=host --cgroupns=host
Template configuration
Dashboard, /metrics, /json, /settings, /help
- Target
- 9835
- Default
- 9835
- Value
- 9835
Persists settings.json + the power-limit latch
- Target
- /config
- Default
- /mnt/user/appdata/nvidia-status
- Value
- /mnt/user/appdata/nvidia-status
Read-only mount so GPU processes can be mapped to container names
- Target
- /hostcontainers
- Default
- /var/lib/docker/containers
- Value
- /var/lib/docker/containers
Which GPUs to expose (all, or a UUID/index)
- Target
- NVIDIA_VISIBLE_DEVICES
- Default
- all
- Value
- all
Leave as all (needs compute+utility+video)
- Target
- NVIDIA_DRIVER_CAPABILITIES
- Default
- all
- Value
- all
prometheus = web/HTTP server (normal). json = print JSON lines to the log instead.
- Target
- MODE
- Default
- prometheus
- Value
- prometheus
Identifier used in MQTT topics, InfluxDB tags and the HA device name. Defaults to the hostname.
- Target
- NODE_NAME
How often stats are refreshed
- Target
- INTERVAL
- Default
- 5
- Value
- 5
Serve the web dashboard at / (1=on, 0=off)
- Target
- ENABLE_DASHBOARD
- Default
- 1
- Value
- 1
Serve Prometheus at /metrics (1=on, 0=off)
- Target
- ENABLE_METRICS
- Default
- 1
- Value
- 1
Serve the JSON snapshot at /json (1=on, 0=off)
- Target
- ENABLE_JSON
- Default
- 1
- Value
- 1
Publish to MQTT if a broker host is set below (1=on, 0=off)
- Target
- ENABLE_MQTT
- Default
- 1
- Value
- 1
Write to InfluxDB if a URL is set below (1=on, 0=off)
- Target
- ENABLE_INFLUX
- Default
- 1
- Value
- 1
MQTT broker IP/host. Blank = MQTT off.
- Target
- MQTT_HOST
MQTT broker port
- Target
- MQTT_PORT
- Default
- 1883
- Value
- 1883
MQTT username (if the broker needs auth)
- Target
- MQTT_USER
MQTT password
- Target
- MQTT_PASS
Home Assistant MQTT discovery prefix
- Target
- MQTT_DISCOVERY_PREFIX
- Default
- homeassistant
- Value
- homeassistant
e.g. http://host:8086 . Blank = InfluxDB off.
- Target
- INFLUX_URL
v1 database name
- Target
- INFLUX_DB
v1 username
- Target
- INFLUX_USER
v1 password
- Target
- INFLUX_PASS
How often to write to InfluxDB
- Target
- INFLUX_INTERVAL
- Default
- 10
- Value
- 10
v2 API token (presence selects the v2 API)
- Target
- INFLUX_TOKEN
v2 organisation
- Target
- INFLUX_ORG
v2 bucket
- Target
- INFLUX_BUCKET
Allow setting the GPU power limit from the Settings page. Also requires Privileged = ON (advanced view). Default 0 = read-only.
- Target
- ENABLE_POWER_LIMIT
- Default
- 0
- Value
- 0
Optional lower clamp (watts). Blank = use the GPU's own minimum.
- Target
- PL_MIN
Optional upper clamp (watts). Blank = use the GPU's own maximum.
- Target
- PL_MAX