这是Ubiquiti Networks Unifi Controller的Docker化版本。
用Docker部署Unifi Controller,能省去版本兼容、Java依赖或操作系统更新的麻烦——容器把所有组件打包成一个经过充分测试的整体。安装只需几行命令,升级时停掉旧容器、启动新容器即可,就是这么简单。
该容器已在Ubuntu、Debian、macOS、Windows甚至树莓派上测试通过。
最新“稳定版”为Unifi Controller 7.1.68,目前无影响该版本的热修复或CVE安全警告。
先在“Docker主机”(运行Docker和Unifi Controller的机器)上安装Docker。可参考网上的安装指南,Windows用户可查看微软Docker安装教程。
在Docker主机上创建unifi目录,并在其中新建data和log子目录,用于存储配置和日志:
bashcd # 默认使用当前用户的家目录 mkdir -p unifi/data mkdir -p unifi/log
注:本文默认Linux/Unix/macOS用户使用家目录存放unifi目录。若需自定义路径,可参考下文“命令行选项”调整。
每次启动Unifi时,执行以下命令(各参数说明见下文“命令行选项”):
bashdocker run -d --init \ --restart=unless-stopped \ -p 8080:8080 -p 8443:8443 -p 3478:3478/udp \ -e TZ='Africa/Johannesburg' \ -v ~/unifi:/unifi \ --user unifi \ --name unifi \ jacobalberty/unifi
等待1-2分钟(Unifi Controller启动后),访问`[***]
如需修改启动参数,先停止并删除容器,再用新参数重新运行(docker rm仅删除容器名称,无需重建):
bashdocker stop unifi docker rm unifi
Unifi的配置和数据默认保存在Docker主机的~/unifi目录(容器内无数据留存)。升级只需拉取新版本容器,复用本地配置:
docker run命令(标签说明见下文“支持的标签”)。docker run命令的关键参数如下:
| 参数 | 说明 |
|---|---|
-d | 后台运行模式 |
--init | 推荐添加,确保进程退出后被正确回收 |
--restart=unless-stopped | 容器意外停止时自动重启(手动停止除外) |
-p 8080:8080 ... | 端口映射,8080/tcp(设备控制)、8443/tcp(Web界面)、3478/udp(STUN服务)为必选,其他可选端口见下文“暴露端口” |
-e TZ=... | 设置时区,格式如Asia/Shanghai,时区列表见*** |
-v ~/unifi:/unifi | 将主机~/unifi目录挂载到容器内/unifi目录(自定义路径需修改~/unifi部分) |
--user unifi | 以非root用户(uid/gid 999/999)运行,见下文“非root用户运行” |
jacobalberty/unifi | Docker镜像名称,从Dockerhub拉取,可通过标签指定版本 |
通过标签指定Unifi Controller版本,默认(无标签)为最新稳定版。常见标签如下:
| 标签 | 说明 | 更新日志 |
|---|---|---|
latest、7.1.68 | 当前稳定版:7.1.68(2022-07-29) | 7.1.68更新日志 |
rc | 最新候选版本:7.2.92-rc(2022-07-29) | 7.2.91-rc更新日志 |
stable6 | 稳定版6最终版:6.5.55 | 6.5.55更新日志 |
stable5 | 稳定版5最终版:5.4.23 | 5.14.23更新日志 |
所有镜像均支持amd64、armhf、arm64架构。armhf架构目前依赖MongoDB 3.4,因32位ARM缺乏MongoDB支持,后续可能逐步淘汰,但至少支持到Ubuntu 18.04停止维护。
Unifi设备需通过Docker主机IP找到控制器(容器默认IP为172.17.x.x,设备连接的是主机外部IP),需手动覆盖Inform Host:
docker stop unifi + docker run ...)。其他接入方法可参考Side Projects。
容器内/unifi目录包含以下关键子目录(数据持久化到主机~/unifi):
| 容器内路径 | 作用 | 原路径(旧版) |
|---|---|---|
/unifi/data | 配置数据存储 | /var/lib/unifi |
/unifi/log | 日志文件 | /var/log/unifi |
/unifi/cert | 自定义SSL证书存放 | /var/cert/unifi |
/unifi/init.d | 容器启动时执行的脚本 | - |
/var/run/unifi | 运行时信息(如PID文件) | - |
通过-e参数设置,常用变量如下:
| 变量 | 说明 | 默认值 |
|---|---|---|
TZ | 时区,如Asia/Shanghai | - |
UNIFI_HTTP_PORT | Web界面HTTP端口(会重定向到HTTPS) | 8080 |
UNIFI_HTTPS_PORT | Web界面HTTPS端口 | 8443 |
PORTAL_HTTP_PORT | 门户HTTP重定向端口 | 80 |
PORTAL_HTTPS_PORT | 门户HTTPS重定向端口 | 8843 |
UNIFI_STDOUT | 日志同时输出到stdout(除server.log外) | 未设置 |
LOTSOFDEVICES | 设备数量多或主机性能低时启用(如树莓派),优化JVM和数据库参数 | 未设置 |
JVM_MAX_HEAP_SIZE | JVM最大堆内存,大环境建议调大 | 1024M |
必选端口(启动命令已包含):
8080/tcp:设备控制8443/tcp:Web界面+API3478/udp:STUN服务可选端口(按需添加-p映射):
8843/tcp:HTTPS门户8880/tcp:HTTP门户6789/tcp:测速(仅unifi5)更多端口说明见UniFi - Ports Used。
默认容器以root运行,推荐用--user unifi(uid/gid 999/999)以非root用户启动。注意:
--sysctl net.ipv4.ip_unprivileged_port_start=0参数。自定义SSL证书需挂载卷到/unifi/cert,文件命名规则:
cert.pem:证书文件privkey.pem:私钥chain.pem:证书链如需自定义文件名,通过环境变量CERTNAME(证书名)和CERT_PRIVATE_NAME(私钥名)指定,如-e CERTNAME=my-cert.pem。Let's Encrypt证书会自动添加Identrust X3 CA链,若证书已包含链,可设CERT_IS_CHAIN=true。
本文已涵盖基础操作,更多技术细节可参考Side Projects and Background Info。
目前暂无待办事项,欢迎通过Issues提出建议。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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