我正在尝试将 Unifi 控制器托管在 docker 容器中,但除非我将网络模式设置为“主机”,否则我无法采用新设备(接入点)。我已遵循多个指南并打开了列出的所有端口这里。可以管理已连接的设备并查找新设备,但采用它们会导致永无止境的“采用”状态。
第一个配置基于jacobalberty/unifi:
version: "3.7"
services:
controller:
image: jacobalberty/unifi:arm32v7
restart: unless-stopped
init: true
volumes:
- ./data:/unifi
environment:
TZ: "Europe/Stockholm"
ports:
- "3478:3478/udp"
- "5514:5514/udp"
- "8080:8080"
- "8443:8443"
- "8843:8843"
- "8880:8880"
- "6789:6789"
- "27117:27117"
- "5656-5699:5656-5699/udp"
- "1900:1900"
- "10001:10001/udp"
# network_mode: "host"
另一个是直接复制linuxserver.io例子:
version: "2.1"
services:
unifi-controller:
image: linuxserver/unifi-controller
container_name: unifi-controller
environment:
- PUID=1000
- PGID=1000
- MEM_LIMIT=1024M #optional
volumes:
- ./data:/config
ports:
- 3478:3478/udp
- 10001:10001/udp
- 8080:8080
- 8443:8443
- 1900:1900/udp #optional
- 8843:8843 #optional
- 8880:8880 #optional
- 6789:6789 #optional
- 5514:5514 #optional
restart: unless-stopped
Docker 容器在连接到有线网络的 Raspberry Pi 上运行。主机正在运行其他容器,但没有冲突的端口。如果存在端口冲突,则无论如何都无法启动容器。
答案1
问题是容器不知道主机的本地 IP 地址,因此它无法告诉 AP 应该使用哪个 IP 地址来重新连接。
要解决此问题,您必须手动设置控制器 IP 地址,Settings -> Controller -> Controller Hostname/IP
并且不要忘记检查Override inform host with controller hostname/IP
有关此内容的更多信息,请参阅jacobalberty/unifi 图像下采用接入点/交换机/安全网关。
编辑:现在它处于Settings -> System -> Advanced -> Override Inform Host
答案2
除了上述解决方案之外,我更新设置中的控制器 IP 后,必须重新启动 Docker 容器才能永久保存更改。还有一个好主意,即在您的 AP 中使用 SSH 并运行快速信息命令(登录后只需输入信息)以验证状态是否显示已连接并连接到正确的 IP,而不是内部 Docker 网络:
状态:已连接(http://192.168.1.X:8080/通知)
答案3
将 Synology 中的网络配置更改为静态 IP 以匹配 Unifi 默认值 192.168.1.1 对我来说也有效。