此镜像正在替代marthoc/deconz镜像。
如果要将现有marthoc/deconz安装迁移到deconzcommunity/deconz,必须稍微修改配置。请仔细按照以下步骤操作:
marthoc/deconz更改为deconzcommunity/deconz。可用标签见此处。/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,更多信息见***文档在运行创建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,详见:[***] |
-e DECONZ_UID=1000 | 设置deCONZ卷的用户ID。 |
-e DECONZ_GID=1000 | 设置deCONZ卷的组ID。 |
-e DECONZ_START_VERBOSE=0 | 设置此选项为0以禁用启动脚本的详细输出,设置为1以启用set -x日志记录。 |
此镜像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中定义的其他服务。
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)上测试并验证可用。
但请注意,此固件刷新方式不保证一定有效。若有效,将加快整个过程;若无效,则需按照以下链接手动更新固件:
[***]
这可能需要将设备插入未运行Docker的其他系统(如Windows)。
该脚本调用刷新工具GCFFlasher_internal,将输出任何失败信息。在某些情况下,刷新工具运行成功但之后无法启动deCONZ(显示"disconnected device")。此时,可多次尝试该过程或调整retries和timeout参数。
使用脚本更新固件,请按照以下说明操作:
输入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
bashdocker stop [容器名称]
或
bashdocker-compose down
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 | - |
请注意,脚本仍会询问设备和固件文件的值,但您的选项将作为默认值。
/dev/ttyUSB0)。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 Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429