前言

最近这段时间感觉unifi-controller使用起来有点小bug小问题,不过也没有影响到网络就没有太在意,直到早两天看了下docker下的image发现unifi-controller这个镜像包竟然都是今年1月的,大半年都没有自动更新了。 最开始还以为是linuxserver摆烂了,要不就换回jacobalberty的镜像包好了,直到我找到这个声明 https://info.linuxserver.io/issues/2023-09-06-unifi-controller/

大概就是说由于什么原因,unifi-controller不更新了,要换到unifi-network-application这个镜像,需要数据库支持。

不是,我就两个ap两个sw,这咋还要外挂数据库呢,最开始想着换回到jacobalberty算了,但是去他家的镜像页面看了下,虽然一直在更新,好像支持的版本也不高,那数据库就数据库吧,还是更换到linuxserver的unifi-network-application吧。

步骤

首先需要备份配置,备份之后就先把docker里的旧容器直接删了,反正删了容器也不影响设备和网络的使用,为了不引起端口冲突,就先删掉容器。

1:创建一个数据库文件夹

mkdir /opt/mongo
mkdir /opt/mongo/data

2:创建数据库配置文件

cd /opt/mongo
nano init-mongo.js

在文件中输入以下内容

db.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"}]});

3:创建数据库容器

docker run -d \
  --name unifi-db \
  -v /opt/mongo/data:/data/db \
  -v /opt/mongo/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro \
  --restart unless-stopped \
  docker.io/mongo:3.6.23

4:创建unifi容器

docker run -d \
  --name=unifi-network-application \
  -e TZ=Asia/Shanghai \
  -e MONGO_USER=MONGO_USER \
  -e MONGO_PASS=MONGO_PASS \
  -e MONGO_HOST=unifi-db \
  -e MONGO_PORT=27017 \
  -e MONGO_DBNAME=MONGO_DBNAME \
  -p 8443:8443 \
  -p 3478:3478/udp \
  -p 10001:10001/udp \
  -p 8080:8080 \
  -v /opt/unifi:/config \
  --link unifi-db\
  --restart unless-stopped \
  lscr.io/linuxserver/unifi-network-application:latest

5:恢复备份之后就完成了。

关于新旧镜像的文件夹我试了好像是不通用的,最开始用旧的镜像文件夹是打不开的web页面的,后来我move旧的,重新建了文件夹才打开了web。

完成之后看了下版本,旧的版本是停留在V8.0.24,新的版本是V8.3.32。

来源引用:

1、在Homeassistant OS中运行Unifi-Network-Application

2、linuxserver/unifi-network-application - Docker Image

3、linuxserver/unifi-controller - Docker Image

4、jacobalberty/unifi - Docker Image