
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Unifi Network Application软件是一款功能强大的企业级无线软件引擎,非常适合需要低延迟和高 uptime 性能的高密度客户端部署场景。
我们利用 Docker 清单实现多平台支持。只需拉取 lscr.io/linuxserver/unifi-network-application:latest 即可获取适合您架构的正确镜像,也可通过标签拉取特定架构镜像。
支持的架构如下:
| 架构 | 可用 | 标签 |
|---|---|---|
| x86-64 | ✅ | amd64-<version tag> |
| arm64 | ✅ | arm64v8-<version tag> |
| armhf | ❌ |
设置完成后,Web UI 可通过 [***] 访问。可使用首次运行向导配置应用或恢复备份。
此容器需要外部 MongoDB 数据库实例。
官方仅支持 MongoDB 3.6 至 4.4,但有报告称新版本可工作。若选择使用新版本,请注意您将处于非支持配置状态。
确保固定数据库镜像版本,不要使用 latest,因为 MongoDB 不支持跨主版本自动升级。
如果使用 https://hub.docker.com/_/mongo/%EF%BC%8C%E5%8F%AF%E9%80%9A%E8%BF%87 init-mongo.js 文件创建用户,内容如下:
jsdb.getSiblingDB("MONGO_DBNAME").createUser({user: "MONGO_USER", pwd: "MONGO_PASS", roles: [{role: "dbOwner", db: "MONGO_DBNAME"}]}); db.getSiblingDB("MONGO_DBNAME_stat").createUser({user: "MONGO_USER", pwd: "MONGO_PASS", roles: [{role: "dbOwner", db: "MONGO_DBNAME_stat"}]});
确保将占位符替换为提供给 Unifi 容器的相同值,并将其挂载到 MongoDB 容器中。
例如:
yamlunifi-db: image: docker.io/mongo:<version tag> container_name: unifi-db volumes: - /path/to/data:/data/db - /path/to/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro restart: unless-stopped
注意:初始化脚本方法仅在首次运行时有效。如果启动 MongoDB 容器时未挂载初始化脚本,它将自动生成测试数据,您必须手动创建数据库,或使用干净的 /data/db 卷和挂载的初始化脚本重新启动。
如果使用初始化脚本方法,请勿同时设置 MONGO_INITDB_ROOT_USERNAME、MONGO_INITDB_ROOT_PASSWORD 或任何其他 "INITDB" 值,因为它们会导致冲突。
您也可以使用 mongo(<6.0)或 mongosh(>=6.0)直接对数据库运行命令。
要让 Unifi 采用其他设备(如接入点),需更改 inform IP 地址。由于 Unifi 默认在 Docker 内运行,使用的 IP 地址无法被其他设备访问。需进入设置 > 系统 > 高级,将 Inform Host 设置为设备可访问的主机名或 IP 地址。此外,必须勾选 "Override" 复选框,以便设备在 adoption 过程中能连接到控制器(设备在 adoption 期间使用 inform 端点)。
注意:必须使用 8080:8080 端口映射。如果必须更改端口,必须在两侧都更改,并在 system.properties 文件中手动修改,否则设备最初能通信,之后会中断。
请注意,Unifi 每隔几个版本会更改此选项的位置,若未在所述位置找到,可在设置中搜索 "Inform" 或 "Inform Host"。
手动 adopt 设备的步骤:
ssh ubnt@$AP-IP set-inform http://$address:8080/inform
默认设备密码为 ubnt。$address 是运行此容器的主机 IP 地址,$AP-IP 是接入点 IP 地址。
使用安全网关(路由器)时,网络连接设备可能无法获取 IP 地址。可通过在设置 > 网络 > network_name 下将 "DHCP Gateway IP" 设置为正确(且可访问)的 IP 地址来解决。
如果您使用 Unifi Controller 容器的 mongoless 标签,可直接切换到 Unifi Network Application 容器,无需执行任何迁移步骤。
不能从现有 Unifi-Controller 容器进行就地升级,必须执行备份然后恢复。
最简单的迁移方法是从 Unifi-Controller Web UI 进行完整备份(包括历史记录),然后关闭旧容器。
然后可启动新容器,使用干净的 /config 挂载(并配置数据库容器),通过设置向导执行恢复。
此镜像默认使用自签名证书,因此协议为 https。如果使用验证证书的反向代理,需为容器禁用此检查。
以下提供 docker-compose 和 docker cli 两种方式帮助您创建容器。
yaml--- services: unifi-network-application: image: lscr.io/linuxserver/unifi-network-application:latest container_name: unifi-network-application environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - MONGO_USER=unifi - MONGO_PASS= - MONGO_HOST=unifi-db - MONGO_PORT=27017 - MONGO_DBNAME=unifi - MEM_LIMIT=1024 #可选 - MEM_STARTUP=1024 #可选 - MONGO_TLS= #可选 - MONGO_AUTHSOURCE= #可选 volumes: - /path/to/data:/config ports: - 8443:8443 - 3478:3478/udp - 10001:10001/udp - 8080:8080 - 1900:1900/udp #可选 - 8843:8843 #可选 - 8880:8880 #可选 - 6789:6789 #可选 - 5514:5514/udp #可选 restart: unless-stopped
bashdocker run -d \ --name=unifi-network-application \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -e MONGO_USER=unifi \ -e MONGO_PASS= \ -e MONGO_HOST=unifi-db \ -e MONGO_PORT=27017 \ -e MONGO_DBNAME=unifi \ -e MEM_LIMIT=1024 `#可选` \ -e MEM_STARTUP=1024 `#可选` \ -e MONGO_TLS= `#可选` \ -e MONGO_AUTHSOURCE= `#可选` \ -p 8443:8443 \ -p 3478:3478/udp \ -p 10001:10001/udp \ -p 8080:8080 \ -p 1900:1900/udp `#可选` \ -p 8843:8843 `#可选` \ -p 8880:8880 `#可选` \ -p 6789:6789 `#可选` \ -p 5514:5514/udp `#可选` \ -v /path/to/data:/config \ --restart unless-stopped \ lscr.io/linuxserver/unifi-network-application:latest
容器通过运行时传递的参数进行配置(如上所示)。这些参数以冒号分隔,表示 <外部>:<内部>。例如,-p 8080:80 会将容器内的端口 80 暴露出来,可通过主机 IP 的端口 8080 访问。
| 参数 | 功能 |
|---|---|
-p 8443 | Unifi Web 管理端口 |
-p 3478/udp | Unifi STUN 端口 |
-p 10001/udp | AP 发现所需 |
-p 8080 | 设备通信所需 |
-p 1900/udp | "使控制器在 L2 网络上可发现" 选项所需 |
-p 8843 | Unifi 访客门户 HTTPS 重定向端口 |
-p 8880 | Unifi 访客门户 HTTP 重定向端口 |
-p 6789 | 移动吞吐量测试用 |
-p 5514/udp | 远程 syslog 端口 |
-e PUID=1000 | 用户 ID - 详见下方说明 |
-e PGID=1000 | 组 ID - 详见下方说明 |
-e TZ=Etc/UTC | 指定时区,参见列表。 |
-e MONGO_USER=unifi | MongoDB 用户名。仅在首次运行时评估。特殊字符必须进行 URL 编码。 |
-e MONGO_PASS= | MongoDB 密码。仅在首次运行时评估。特殊字符必须进行 URL 编码。 |
-e MONGO_HOST=unifi-db | MongoDB 主机名。仅在首次运行时评估。 |
-e MONGO_PORT=27017 | MongoDB 端口。仅在首次运行时评估。 |
-e MONGO_DBNAME=unifi | MongoDB 数据库名称(统计数据库自动后缀 _stat)。仅在首次运行时评估。 |
-e MEM_LIMIT=1024 | 可选:更改 Java 内存限制(以兆字节为单位)。设为 default 可重置为默认值 |
-e MEM_STARTUP=1024 | 可选:更改 Java 初始/最小内存(以兆字节为单位)。设为 default 可重置为默认值 |
-e MONGO_TLS= | MongoDB 启用 TLS。仅在首次运行时评估。 |
-e MONGO_AUTHSOURCE= | MongoDB authSource。对于 Atlas,设为 admin。默认为 MONGO_DBNAME。仅在首次运行时评估。 |
-v /config | 所有 Unifi 数据存储于此 |
您可以通过使用特殊前缀 FILE__ 从文件设置任何环境变量。
例如:
bash-e FILE__MYVAR=/run/secrets/mysecretvariable
这会根据 /run/secrets/mysecretvariable 文件的内容设置环境变量 MYVAR。
对于所有镜像,我们提供使用可选 -e UMASK=022 设置覆盖容器内启动的服务的默认 umask 设置的能力。请注意,umask 不是 chmod,它基于其值减去权限,而不是添加。请在请求支持前阅读此处。
使用卷(-v 标志)时,主机 OS 和容器之间可能出现权限问题,我们通过允许您指定用户 PUID 和组 PGID 来避免此问题。
确保主机上的任何卷目录都由您指定的同一用户拥有,任何权限问题都会神奇地消失。
在此示例中 PUID=1000 和 PGID=1000,要查找您的 ID,请使用 id your_user:
bashid your_user
示例输出:
textuid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
我们发布各种 https://github.com/linuxserver/docker-mods 以启用容器内的其他功能。可通过上方动态徽章访问此镜像可用的 Mods 列表(如有)以及可应用于我们任何镜像的通用 Mods。
容器运行时的 Shell 访问:
bashdocker exec -it unifi-network-application /bin/bash
实时监控容器日志:
bashdocker logs -f unifi-network-application
容器版本号:
bashdocker inspect -f '{{ index .Config.Labels "build_version" }}' unifi-network-application
镜像版本号:
bashdocker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/unifi-network-application:latest
我们的大多数镜像是静态的、版本化的,需要更新镜像并重新创建容器才能更新内部应用。除了某些例外情况(在相关 readme.md 中注明),我们不建议或支持在容器内更新应用。请查阅上方的应用设置部分,了解是否推荐对此镜像进行更新。
以下是更新容器的说明:
更新镜像:
所有镜像:
bashdocker-compose pull
单个镜像:
bashdocker-compose pull unifi-network-application
更新容器:
所有容器:
bashdocker-compose up -d
单个容器:
bashdocker-compose up -d unifi-network-application
还可以删除旧的悬空镜像:
bashdocker image prune
更新镜像:
bashdocker pull lscr.io/linuxserver/unifi-network-application:latest
停止运行中的容器:
bashdocker stop unifi-network-application
删除容器:
bashdocker rm unifi-network-application
使用上述相同的 docker run 参数重新创建新容器(如果正确映射到主机文件夹,您的 /config 文件夹和设置将被保留)
还可以删除旧的悬空镜像:
bashdocker image prune
提示:我们推荐 Diun 用于更新通知。不推荐或支持其他自动更新容器的工具。
如果您想对这些镜像进行本地修改以用于开发目的或自定义逻辑:
bashgit clone https://github.com/linuxserver/docker-unifi-network-application.git cd docker-unifi-network-application docker build \ --no-cache \ --pull \ -t lscr.io/linuxserver/unifi-network-application:latest .
可使用 multiarch/qemu-user-static 在 x8
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务