
此镜像正在替代marthoc/deconz镜像。
如果要将现有marthoc/deconz安装迁移到deconzcommunity/deconz,必须稍微修改配置。请仔细按照以下步骤操作:
marthoc/deconz更改为deconzcommunity/deconz。可用标签见https://hub.docker.com/r/deconzcommunity/deconz/tags%E3%80%82/root/.local/share/dresden-elektronik/deCONZ更改为/opt/deCONZ。拉取新镜像并启动。
此Docker镜像容器化了Dresden Elektronik的deCONZ软件,该软件通过Conbee USB或RaspBee GPIO串口接口控制ZigBee网络。此镜像以"最小"模式运行deCONZ,支持通过WebUI("Wireless Light Control"和"Phoscon")、REST API和Websockets控制ZigBee网络,还可选择运行VNC服务器,用于通过deCONZ UI查看和交互ZigBee网格。
Conbee支持amd64、armhf/armv7和aarch64/arm64(如RaspberryPi 2/3B/3B+及其他arm64板)架构;RaspBee支持armhf/armv7和aarch64/arm64(有关配置Raspbian以允许访问RaspBee串口硬件的说明,请参见下文"为RaspBee配置Raspbian"部分)。
此镜像的构建版本可从Docker Hub或Github Container Registry拉取,标签如下:
| 标签 | 描述 |
|---|---|
| latest | deCONZ的最新版本(稳定版或测试版) |
| stable | 仅deCONZ的稳定版 |
| beta | 仅deCONZ的测试版 |
| version | deCONZ的特定版本(如2.13.02,仅在需要固定版本时使用) |
"latest"、"stable"和"version"标签支持amd64、armv7和arm64的多架构,因此指定这些标签将拉取对应架构的正确版本。
请查阅Docker Hub或Github Container Registry获取此镜像的最新可用版本。
docker pull deconzcommunity/deconz:latestdocker pull ghcr.io/deconz-community/deconz-docker:latest,更多信息见https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry前提条件
在运行创建deconz Docker容器的命令之前,可能需要将Linux用户添加到dialout组,以允许用户访问串口设备(如Conbee/Conbee II/RaspBee/RaspBeeII):
bashsudo usermod -a -G dialout $USER
对于Raspberry PI 4B上的RaspBee/Raspbee 2安装:确保Wiring Pi已更新到最新版本!
bashsudo apt install wiringpi
命令行
bashdocker run -d \ --name=deconz \ --restart=always \ -p 80:80 \ -p 443:443 \ -v /etc/localtime:/etc/localtime:ro \ -v /opt/deconz:/opt/deCONZ \ --device=/dev/ttyUSB0 \ deconzcommunity/deconz
命令行选项
| 参数 | 描述 |
|---|---|
--name=deconz | 将容器命名为"deconz"。 |
--net=host | 使用主机网络模式以实现正确的uPNP功能;默认情况下,Web UI和REST API监听80端口,Websockets服务监听443端口。若这些端口与主机上其他服务冲突,可通过下文环境变量DECONZ_WEB_PORT和DECONZ_WS_PORT更改。 |
--restart=always | Docker启动时(如开机/重启时)启动容器。 |
-v /etc/localtime:/etc/localtime:ro | 确保容器具有正确的本地时间(也可使用下文TZ环境变量)。 |
-v /opt/deconz:/opt/deCONZ | 将/opt/deconz(或您选择的目录)绑定挂载到容器中以实现持久存储。 |
--device=/dev/ttyUSB0 | 将ttyUSB0串口设备传递到容器供deCONZ使用(若同时使用其他USB串口设备,可能需要确认设备名称;默认ConBee=/dev/ttyUSB0,Conbee II=/dev/ttyACM0,RaspBee=/dev/ttyAMA0或/dev/ttyS0)。 |
deconzcommunity/deconz | 此镜像使用多架构清单列表;指定deconzcommunity/deconz:latest或deconzcommunity/deconz:stable将拉取对应架构的正确版本。 |
环境变量
使用以下环境变量可更改容器的默认行为。
| 参数 | 描述 |
|---|---|
-e DECONZ_WEB_PORT=8080 | 默认情况下,Web UI("Wireless Light Control"和"Phoscon")和REST API监听80端口;仅在需要更改监听端口时设置此环境变量。 |
-e DECONZ_WS_PORT=8443 | 默认情况下,Websockets服务监听443端口;仅在需要更改监听端口时设置此环境变量。 |
-e DEBUG_INFO=1 | 设置deCONZ命令行标志--dbg-info的级别(默认1)。 |
-e DEBUG_APS=0 | 设置deCONZ命令行标志--dbg-aps的级别(默认0)。 |
-e DEBUG_ZCL=0 | 设置deCONZ命令行标志--dbg-zcl的级别(默认0)。 |
-e DEBUG_ZDP=0 | 设置deCONZ命令行标志--dbg-zdp的级别(默认0)。 |
-e DEBUG_OTAU=0 | 设置deCONZ命令行标志--dbg-otau的级别(默认0)。 |
-e DEBUG_ERROR=0 | 设置deCONZ命令行标志--dbg-error的级别(默认0)。 |
-e DECONZ_DEVICE=/dev/ttyUSB1 | 默认情况下,deCONZ在/dev/ttyAMA0搜索RaspBee,在/dev/ttyUSB0搜索Conbee;当使用其他USB设备(如Z-Wave棒)时,deCONZ可能无法正确找到RaspBee/Conbee。将此环境变量设置为与--device传递的字符串相同,以强制deCONZ使用特定USB设备。 |
-e TZ=America/Toronto | 设置本地时区,使deCONZ具有正确时间。 |
-e DECONZ_VNC_MODE=1 | 设置此选项以启用对容器的VNC访问,用于查看deCONZ ZigBee网格。 |
-e DECONZ_VNC_PORT=5900 | VNC模式的默认端口为5900;此选项可用于更改此端口。 |
-e DECONZ_VNC_PASSWORD=changeme | VNC模式的默认密码为'changeme';此选项可(应)用于更改默认密码。 |
-e DECONZ_VNC_PASSWORD_FILE=/var/secrets/my_secret | 默认禁用,使用DECONZ_VNC_PASSWORD。有关为Docker容器创建密钥的详细信息,见官方文档对应部分 |
-e DECONZ_NOVNC_PORT=6080 | noVNC的默认端口为6080;此选项可用于更改此端口;将端口设置为0将禁用noVNC功能。 |
-e DECONZ_UPNP=0 | 设置此选项为0以禁用uPNP,详见:https://github.com/dresden-elektronik/deconz-rest-plugin/issues/274 |
-e DECONZ_UID=1000 | 设置deCONZ卷的用户ID。 |
-e DECONZ_GID=1000 | 设置deCONZ卷的组ID。 |
-e DECONZ_START_VERBOSE=0 | 设置此选项为0以禁用启动脚本的详细输出,设置为1以启用set -x日志记录。 |
Docker-Compose
此镜像GitHub仓库的根目录提供了完整的docker-compose.yml文件。您也可将以下内容复制粘贴到现有docker-compose.yml中,根据需要修改选项(省略version和services行,因为您的docker-compose.yml已包含这些)。
yamlversion: "2" services: deconz: image: deconzcommunity/deconz container_name: deconz restart: always ports: - 80:80 - 443:443 volumes: - /opt/deconz:/opt/deCONZ devices: - /dev/ttyUSB0 environment: - DECONZ_WEB_PORT=80 - DECONZ_WS_PORT=443 - DEBUG_INFO=1 - DEBUG_APS=0 - DEBUG_ZCL=0 - DEBUG_ZDP=0 - DEBUG_OTAU=0
然后,可执行docker-compose pull拉取最新的deconzcommunity/deconz镜像,docker-compose up -d启动deconz容器服务,docker-compose down停止deconz服务并删除容器。注意,这些命令也会拉取、启动和停止docker-compose.yml中定义的其他服务。
在Docker for Mac / Docker for Windows上运行
Mac/Windows尚不支持--net=host选项。要在这些平台上运行此容器,请在run命令中显式指定端口并省略--net=host:
bashdocker run -d \ --name=deconz \ -p 80:80 \ -p 443:443 \ --restart=always \ -v /opt/deconz:/opt/deCONZ \ --device=/dev/ttyUSB0 \ -e DECONZ_WEB_PORT=80 \ -e DECONZ_WS_PORT=443 \ deconzcommunity/deconz
Raspbian默认将蓝牙分配给/dev/ttyAMA0,并通过串口(tty)配置登录shell。必须禁用tty登录shell并启用串口硬件,同时将蓝牙交换到/dev/S0,以允许RaspBee在Docker下正常工作。
禁用串口登录shell并启用串口硬件:
sudo raspi-configInterfacing Options(接口选项)Serial(串口)No(否)Yes(是)将蓝牙交换到/dev/S0(将RaspBee移至/dev/ttyAMA0),运行以下命令并重启:
bashecho 'dtoverlay=pi3-miniuart-bt' | sudo tee -a /boot/config.txt
运行上述命令并重启后,RaspBee应可在/dev/ttyAMA0访问。
Web UI中的固件更新将静默失败。此Docker镜像提供了一个交互式实用脚本,可用于刷新设备固件。该脚本已在amd64 Debian Linux、armhf Raspbian Stretch(Conbee)和armhf Raspbian Stretch(RaspBee)上测试并验证可用。
但请注意,此固件刷新方式不保证一定有效。若有效,将加快整个过程;若无效,则需按照以下链接手动更新固件:
https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Update-deCONZ-manually
这可能需要将设备插入未运行Docker的其他系统(如Windows)。
该脚本调用刷新工具GCFFlasher_internal,将输出任何失败信息。在某些情况下,刷新工具运行成功但之后无法启动deCONZ(显示"disconnected device")。此时,可多次尝试该过程或调整retries和timeout参数。
使用脚本更新固件,请按照以下说明操作:
1. 检查deCONZ容器日志中的更新固件文件名:
输入docker logs [容器名称],查找日志开头附近如下行,记录列出的.GCF文件名(后续需要):
GW update firmware found: /usr/share/deCONZ/firmware/deCONZ_Rpi_0x261e0500.bin.GCF GW firmware version: 0x261c0500 GW firmware version shall be updated to: 0x261e0500
2. 停止运行中的deCONZ容器。必须执行此步骤,否则固件更新将失败:
bashdocker stop [容器名称]
或
bashdocker-compose down
3. 调用固件更新脚本:
bashdocker run -it --rm --entrypoint "/firmware-update.sh" --privileged --cap-add=ALL -v /dev:/dev -v /lib/modules:/lib/modules -v /sys:/sys deconzcommunity/deconz
若有多个USB设备,可映射对应Conbee/Raspbee的/dev/...卷以避免错误路径映射:
bashdocker run -it --rm --entrypoint "/firmware-update.sh" --privileged --cap-add=ALL -v /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DExxxxxxx-if00:/dev/ttyACM0 -v /lib/modules:/lib/modules -v /sys:/sys deconzcommunity/deconz
也可在调用末尾添加其他选项:
bashdocker run ... deconzcommunity/deconz [option1] [value1] [option2] [value2] ...
若这些是刷新工具的有效选项,将添加到调用中:
| 选项 | 描述 | 默认值(如有) |
|---|---|---|
-f [firmware] | 刷新固件文件路径 | - |
-d [device] | 使用的设备编号或路径,如0、/dev/ttyUSB0或RaspBee | DECONZ_DEVICE的值 |
-t [timeout] | 重试直到超时(秒) | 60 |
-R [retries] | 最大重试次数 | - |
-x [loglevel] | 调试日志级别0、1、3 | - |
请注意,脚本仍会询问设备和固件文件的值,但您的选项将作为默认值。
4. 按照提示操作:
/dev/ttyUSB0)。5. 重启deCONZ容器:
bashdocker start [容器名称]
或
bashdocker-compose up
固件刷新脚本常见问题
问:为什么脚本提示无法卸载ftdi_sio和usbserial模块,或无法重置设备?
答:要刷新设备,系统上不能有其他程序或设备使用这些内核模块或设备。停止任何可能使用模块或设备的程序/容器(可能是deCONZ),然后再次调用脚本。若错误持续,可能需要暂时移除其他USB串口设备以允许脚本完全卸载内核模块。
问:为什么即使指定了更长的超时,刷新运行仍在几秒后失败?
答:设置超时允许刷新工具在超时时间内多次尝试运行,单次运行的超时时间无法通过参数更改。
将环境变量DECONZ_VNC_MODE设置为1可启用容器中的VNC服务器;使用VNC客户端连接到此VNC服务器以查看deCONZ ZigBee网格。环境变量DECONZ_VNC_PORT可控制VNC服务器监听的端口(默认5900);环境
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务