@cryptotaxi247 / netdata-1 / commits / 592058210

fix(docker): add netdata user to nvidia device group on non-Debian systems (#21358)

Ilya Mashchenko committed Nov 27, 2025 at 15:09 UTC 5920582109d9b1a190a99ba7baeb9b91fb63b0b6
1 file changed +34
packaging/docker/run.sh
+34
@@ -12,6 +12,9 @@ fi
12
13 # Needed to read Proxmox VMs and (LXC) containers configuration files (name resolution + CPU and memory limits)
14 function add_netdata_to_proxmox_conf_files_group() {
15 + [ "${DOCKER_USR}" = "root" ] && return
16 +
17 + local group_guid
18 group_guid="$(stat -c %g /host/etc/pve 2>/dev/null || true)"
19 [ -z "${group_guid}" ] && return
20
@@ -32,6 +35,34 @@ function add_netdata_to_proxmox_conf_files_group() {
35 fi
36 }
37
38 +# Needed to access NVIDIA GPU monitoring
39 +function add_netdata_to_nvidia_group() {
40 + [ "${DOCKER_USR}" = "root" ] && return
41 +
42 + local group_gid
43 + group_gid="$(stat -c %g /dev/nvidiactl 2>/dev/null || true)"
44 + [ -z "${group_gid}" ] && return
45 +
46 + # Skip if the device is owned by root group
47 + [ "${group_gid}" -eq 0 ] && return
48 +
49 + if ! getent group "${group_gid}" >/dev/null; then
50 + echo "Creating nvidia-dev group with GID ${group_gid}"
51 + if ! addgroup --gid "${group_gid}" "nvidia-dev"; then
52 + echo >&2 "Failed to add group nvidia-dev with GID ${group_gid}."
53 + return
54 + fi
55 + fi
56 +
57 + if ! getent group "${group_gid}" | grep -q "${DOCKER_USR}"; then
58 + echo "Assigning ${DOCKER_USR} user to group ${group_gid}"
59 + if ! usermod --append --groups "${group_gid}" "${DOCKER_USR}"; then
60 + echo >&2 "Failed to add ${DOCKER_USR} user to group with GID ${group_gid}."
61 + return
62 + fi
63 + fi
64 +}
65 +
66 if [ ! "${DISABLE_TELEMETRY:-0}" -eq 0 ] ||
67 [ -n "$DISABLE_TELEMETRY" ] ||
68 [ ! "${DO_NOT_TRACK:-0}" -eq 0 ] ||
@@ -88,6 +119,9 @@ if [ "${EUID}" -eq 0 ]; then
119 if [ -d "/host/etc/pve" ]; then
120 add_netdata_to_proxmox_conf_files_group || true
121 fi
122 + if [ -e "/dev/nvidiactl" ]; then
123 + add_netdata_to_nvidia_group || true
124 + fi
125 else
126 echo >&2 "WARNING: Entrypoint started as non-root user. This is not officially supported and some features may not be available."
127 fi