Nvidia-Status

Nvidia-Status

Docker app from EddDeDuck's Repository

Overview

NVIDIA GPU dashboard + exporter — shows the GDDR6/GDDR6X VRAM & junction temps that nvidia-smi hides on consumer RTX 30/40 cards, plus detailed stats including per-Docker-container resource usage. Exports to Prometheus, JSON, MQTT/Home Assistant and InfluxDB out of the box for long-term analysis. Reports (per GPU): core/junction/VRAM temps + thresholds, clocks, power + limits, utilisation, VRAM, fan, PCIe gen/width + live bandwidth, throttle reasons, per-process usage mapped to the owning Docker container, and NVENC sessions (codec + resolution). Optional per-GPU power-limit control. Multi-GPU aware. Configure from the built-in Settings page or the variables below. Requires the Unraid Nvidia-Driver plugin. SECURITY: reads GPU BAR0 via SYS_RAWIO + /dev/mem (needed for the hidden junction/VRAM temps). Per-process container mapping needs --pid=host + --cgroupns=host + the read-only docker containers mount (all pre-set below). Power-limit control additionally requires Privileged=on.

Nvidia 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.


Nvidia Status dashboard

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)

  1. Install the Nvidia‑Driver plugin (Community Applications) if you haven't.
  2. Search Community Applications for Nvidia Status and install, or add this repo's template.
  3. 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 (+ v1 INFLUX_DB or v2 INFLUX_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/containers mount.
  • Power‑limit control additionally requires --privileged and is off by default.
  • Secrets you enter (MQTT/InfluxDB passwords) are stored in the container's /config volume.

Credits

  • VRAM‑junction/hotspot reader: gputemps by ThomasBaruzier (Apache‑2.0) — vendored as gputemps.c, see GPUTEMPS-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.

Open the Apps tab on your Unraid server Search Community Apps for Nvidia-Status Review the template variables and paths Click Install

Requirements

Requires the Unraid **Nvidia-Driver** plugin (Community Applications).

Download Statistics

73
Total Downloads

Related apps

Details

Repository
edddeduck/nvidia-status:latest
Last Updated2026-07-11
First Seen2026-07-12

Runtime 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

WebUI / API PortPorttcp

Dashboard, /metrics, /json, /settings, /help

Target
9835
Default
9835
Value
9835
Config (appdata)Pathrw

Persists settings.json + the power-limit latch

Target
/config
Default
/mnt/user/appdata/nvidia-status
Value
/mnt/user/appdata/nvidia-status
Container names (ro)Pathro

Read-only mount so GPU processes can be mapped to container names

Target
/hostcontainers
Default
/var/lib/docker/containers
Value
/var/lib/docker/containers
GPUsVariable

Which GPUs to expose (all, or a UUID/index)

Target
NVIDIA_VISIBLE_DEVICES
Default
all
Value
all
Driver capabilitiesVariable

Leave as all (needs compute+utility+video)

Target
NVIDIA_DRIVER_CAPABILITIES
Default
all
Value
all
ModeVariable

prometheus = web/HTTP server (normal). json = print JSON lines to the log instead.

Target
MODE
Default
prometheus
Value
prometheus
Node nameVariable

Identifier used in MQTT topics, InfluxDB tags and the HA device name. Defaults to the hostname.

Target
NODE_NAME
Poll interval (s)Variable

How often stats are refreshed

Target
INTERVAL
Default
5
Value
5
Enable dashboardVariable

Serve the web dashboard at / (1=on, 0=off)

Target
ENABLE_DASHBOARD
Default
1
Value
1
Enable PrometheusVariable

Serve Prometheus at /metrics (1=on, 0=off)

Target
ENABLE_METRICS
Default
1
Value
1
Enable JSON APIVariable

Serve the JSON snapshot at /json (1=on, 0=off)

Target
ENABLE_JSON
Default
1
Value
1
Enable MQTTVariable

Publish to MQTT if a broker host is set below (1=on, 0=off)

Target
ENABLE_MQTT
Default
1
Value
1
Enable InfluxDBVariable

Write to InfluxDB if a URL is set below (1=on, 0=off)

Target
ENABLE_INFLUX
Default
1
Value
1
MQTT broker hostVariable

MQTT broker IP/host. Blank = MQTT off.

Target
MQTT_HOST
MQTT portVariable

MQTT broker port

Target
MQTT_PORT
Default
1883
Value
1883
MQTT usernameVariable

MQTT username (if the broker needs auth)

Target
MQTT_USER
MQTT passwordVariable

MQTT password

Target
MQTT_PASS
HA discovery prefixVariable

Home Assistant MQTT discovery prefix

Target
MQTT_DISCOVERY_PREFIX
Default
homeassistant
Value
homeassistant
InfluxDB URLVariable

e.g. http://host:8086 . Blank = InfluxDB off.

Target
INFLUX_URL
InfluxDB database (v1)Variable

v1 database name

Target
INFLUX_DB
InfluxDB user (v1)Variable

v1 username

Target
INFLUX_USER
InfluxDB password (v1)Variable

v1 password

Target
INFLUX_PASS
InfluxDB write interval (s)Variable

How often to write to InfluxDB

Target
INFLUX_INTERVAL
Default
10
Value
10
InfluxDB token (v2)Variable

v2 API token (presence selects the v2 API)

Target
INFLUX_TOKEN
InfluxDB org (v2)Variable

v2 organisation

Target
INFLUX_ORG
InfluxDB bucket (v2)Variable

v2 bucket

Target
INFLUX_BUCKET
Enable power-limit controlVariable

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
Power-limit min (clamp)Variable

Optional lower clamp (watts). Blank = use the GPU's own minimum.

Target
PL_MIN
Power-limit max (clamp)Variable

Optional upper clamp (watts). Blank = use the GPU's own maximum.

Target
PL_MAX