Docker
A guide to install CUBE OS using Docker on Linux systems.
Install CUBE OS as a Docker container on a Linux host. This method works well for home servers, NAS devices, and always-on Linux machines.
1. Preparation
Check the host architecture
CUBE Docker supports these Linux architectures:
amd64 (
x86_64) — PCs, servers, Synology NAS, and similar devicesarm64 (
aarch64) — Raspberry Pi 4/5, Orange Pi, and other ARM hosts
Check the Linux kernel version
Kernel 4.15 or later is required.
uname -rSome NAS devices ship with older kernels, such as 4.4.x. These hosts are not compatible with CUBE Docker. In that case, run CUBE OS in a Linux virtual machine instead.
Install Docker Engine
Install Docker Engine on the host before you continue.
Use the official Docker installation guide.
Check required ports
Make sure ports 80 and 1883 are free on the host.
sudo lsof -i :80
sudo lsof -i :188380 — CUBE OS web UI
1883 — MQTT broker
If another service is using these ports, stop it first.
Prepare a Zigbee dongle if needed
If you plan to add Zigbee devices, connect a compatible Zigbee dongle to the host.
Tested Zigbee dongles include:
SONOFF ZBDongle-MAX SONOFF ZBDongle-PMG24 SONOFF ZBDongle-LMG21 SONOFF ZBDongle-E SONOFF ZBDongle-P Others listed by developer @darkxst
For more information on Zigbee support, refer to this guide.
2. Pull the image
Download the latest image
docker pull ghcr.io/ewelinkcube/cube-os:latest
3. Start CUBE OS
Create a data directory
mkdir -p ~/cubeos-dataThis directory stores your devices, scenes, and settings.
Check the Zigbee device path if you use one(optional)
Common device paths are:
ls /dev/ttyUSB* /dev/ttyACM*Use the correct path in the next command.
Start the container
Use this command as a baseline:
docker run -d \
--name cubeos \
--privileged \
--net=host \
-v ~/cubeos-data:/data \
--device /dev/ttyUSB0:/dev/ttyUSB0 \
-v /run/dbus/system_bus_socket:/host_dbus/system_bus_socket:ro \
ghcr.io/ewelinkcube/cube-os:latest
Understand the main parameters
--privileged— required for hardware access--net=host— required for LAN discovery and MQTT-v ~/cubeos-data:/data— keeps your data after container restarts--device /dev/ttyUSB0:/dev/ttyUSB0— passes through a Zigbee dongle-v /run/dbus/system_bus_socket:/host_dbus/system_bus_socket:ro— enables D-Bus access for supported features
4. Access CUBE OS
Confirm that the container is running
docker psThe container status should show Up.
Open the web UI
Open a browser on the same network and visit one of these addresses:
http://<HOST_IP>/
Replace <HOST_IP> with the Linux host IP address.
Use the short local address later
After setup, you can find the short ID on the settings page.
You can then use cube-{short-id}.local to identify this CUBE OS instance on your LAN.
5. Update CUBE OS
The Docker deployment does not support OTA updates from the web UI.
To update manually:
Your data stays in ~/cubeos-data, so devices, scenes, and settings remain after the update.
6. Limitations
Due to container isolation, these features are not available in Docker deployments:
Add-ons — cannot install or manage add-ons
Bluetooth Speaker — Bluetooth passthrough is not supported
System Update — OTA updates in the web UI are disabled
Reboot / Shutdown — system-level power controls are unavailable
7. Raspberry Pi note
If you run Docker on a Raspberry Pi, make sure the page size is 4096:
Last updated