This container runs OpenRGB in server mode, allowing you to control RGB components of any compatible device via network. Currently, it only supports Linux hosts. It is especially useful for managing RGB LEDs on devices such as NAS servers for status indication (e.g., temperature, RAM usage) through colors, brightness, and effects.
This container runs the OpenRGB TCP server (--server flag), which communicates over TCP/IP.
To control RGB devices remotely, you need a compatible OpenRGB client supporting the OpenRGB SDK.
This container handles hardware access, exposes the network interface, and provides CLI commands, making it a mandatory component for remote RGB control.
docker run -d \
--device /dev/bus/usb:/dev/bus/usb \
--name doganm95-openrgb-tcp-server \
--privileged \
--pull always \
-p 6742:6742 \
--restart always \
-v /sys:/sys:ro \
ghcr.io/doganm95/openrgb-tcp-server:latestThis container serves as a client for the TCP server, by providing a REST API to the user.
docker run -d \
-e "OPENRGB_HOST=10.0.0.200" \
-e "OPENRGB_PORT=6742" \
--name doganm95-openrgb-http-server \
--pull always \
-p 6744:3000 \
--restart always \
ghcr.io/doganm95/openrgb-http-server:latest-e "OPENRGB_HOST=<server>":<server>can be either an ip address (if running on another machine) or the name of the tcp-server container (if running on the same machine)-e "OPENRGB_PORT=<port>":<port>defines the port the tcp server serves on, in the example above exposed as6742-p x:3000:xdefines the port this http server should be accessible on, in this case 6744
GET /devices
Retrieves the full list of all compatible hardware on the host machine, returned as a JSON
GET /devices/:id
Retrieves the details for only the hardware specified by its id, returned as a JSON
POST /
Sets the RGB led light colors & effects for a specific or all led's at once.
Values are case insensitive, payload is an array of objects.
Most combinations just work out of the box, reading the examples should help understanding how.
Request Examples:
- Set Device 0's all zones to red (=ff0000) with static light (=direct)
- Set device 1 & 2's zones 0 & 2 to blue while keeping their current modes (effect)
- Set Device 3's individual led's 1,3,5 to green, also keeping current effect
[
{
"deviceIndices": [0],
"zoneIndices": [-1],
"color": "#ff0000",
"mode": "direct"
},
{
"deviceIndices": [1,2],
"zoneIndices": [0, 2],
"color": "#0000ff"
},
{
"deviceIndices": [3],
"ledIndices": [1, 3, 5],
"color": "#ff0000"
}
]
Use the index value -1 to reference all devices, all zones or all led's, e.g.
All devices (and all their led's) to red:
[
{
"deviceIndices": [-1],
"color": "#ff0000"
}
]
All zones of a specific device to red:
[
{
"deviceIndices": [0],
"zoneIndices": [-1],
"color": "#ff0000"
}
]
All led's of a specific zone to red:
[
{
"deviceIndices": [0],
"zoneIndices": [2],
"ledIndices": [-1],
"color": "#ff0000"
}
]
Check if your machine's RGB devices can be controlled inside the container. If OpenRGB works on your host, this usually works too.
-
Enter the container shell:
docker exec -it doganm95-openrgb-tcp-server /bin/bash -
Change the color of the first listed device to green (
00FF00):/opt/openrgb/AppRun -d 0 --mode static --color 00FF00 -v
For docker compatibility checks, run a temporary container to test device permissions and USB access:
docker run --rm -it \
--privileged \
--device /dev/bus/usb:/dev/bus/usb \
-v /sys:/sys:ro \
ubuntu:22.04 /bin/bash