tange 发表于 2020-6-29 14:25

在群晖NAS上用docker安装UniFi控制器完全教程

目录
一、前言      3
二、什么是Docker      3
三、安装Docker      3
四、安装UniFi控制器      5
五、升级UniFi控制器      17
五、Docker的UniFi控制器常见问题      22
1. 无法启动控制器      22
2.发现不了设备      22
3. 设备“正在采用”、“已断开”(无限循环)      23
4. 远程访问      29
5. 通过APP随时管理UniFi      32
6.NAS上的防火墙配置      36


文章较长,65张图,需要的可下载文档阅读。
**** Hidden Message *****

更多教程请关注本站微信公众号,订阅UBNT教程,更详细更全面的专业教程!
https://www.anywlan.com/link/UBNT-wechat_RSS.png
相关教程链接:

使用Linux平台安装控制器的请查看:阿里云Centos 7.8安装UniFi控制器教程
群晖NAS解决docker仓库无法下载注册表的问题
UniFi网关家族参数对比一览表
UBNT UniFi全系AP参数对比一览表
UBNT UniFi CloudKey家族参数对比表
UBNT UniFi Protect家族参数对比一览表
UBNT室内AP安装和拆卸详细教程
UBNT AP连接和供电教程

static/image/hrline/line3.png

一、前言
在NAS上安装UniFi控制器,可以实现UCK(UniFi Cloud Key)完全一样的功能。除了折腾一下下,还能省钱省地方^_^
UCK的通用功能:

[*]管理UniFi的AP、交换机和网关
[*]搭建云控制器,随时随地可通过PC、APP远程控制
[*]热点认证和计费


本文以群晖NAS为例,详细说明安装UniFi Controller的步骤及常遇到的问题解决方法。

二、什么是Docker

通俗地讲Docker是一个运行在Linux下的虚拟机程序,类似Windows下的vmware。Docker是Linux 容器的一种封装,提供简单易用的容器使用接口。
我们用的NAS基本上都是基于Linux开发的,Docker支持X86-64、ARM及PPC等系统平台,docker里提供了丰富的各种应用程序,包括今天要讲的UniFi控制器。
举一反三,广泛地讲,只要是支持docker的设备均可以安装UniFi控制器,比如openwrt路由器……


三、安装Docker
打开“套件中心”,搜索docker并安装:





tange 发表于 2020-6-29 14:25

四、安装UniFi控制器
Step1:打开刚安装的docker


Setp2:下载unifi映像
提示:docker被土啬,已无法直接下载映像。《群晖NAS解决docker仓库无法下载注册表的问题》。2023年8月
在左侧注册表里,搜索unifi,找到jacobalberty/unifi:

Docker提供的映像中,还包括UniFi Video Controller即UniFi安防控制器,如果您使用了UniFi摄像头可按本文教程安装。本文安装的是UniFi SDN。
点右键或双击下载此映象:


选择版本,选择最新的SC稳定版(Stable Candidate),觉得这个版本不爽也可选择别的再安装,NAS折腾不坏:


在映像中会显示正在下载:




Setp4:创建容器
下载完成后,在映像中,选择启动该映像:


容器名称:为应用起个名字以便标识,这里我们起名UniFi-Controller,不支持中文和空格:


点击上图的“高级设置”,勾上“启用自动重新启动”:


“卷”,添加一个unifi的安装文件夹:


在docker目录下,“新建文件夹”,起名为unifi:


在装载路径输入/unifi:


切记:文件夹名称要设为全小写unifi,在后来测试UniFi升级中,来回折腾了5、6次升级控制器,配置文件都丢失,折腾得没脾气了,不小心才发现下图:

编译程序所生成的保存路径中全是小写的/unifi,这才解决问题。
另外,如果是跨大版本升级,也可能会丢失配置。所以在升级前务必备份控制器。具体备份教程请查看:《UniFi控制器的备份和还原》

网络:直接勾上“使用与Docker Host相同的网络”,则端口就和NAS的IP完全一样,安全性略差,但是对普通用户来更简单。对普通用户建议勾上,后面的使用会省事非常多,在下文会讲到原因。


如果网络不勾“使用与Docker Host相同的网络”,而在“端口设置”需要按下图设置:
本地端口不要使用自动,全部输入固定端口号。同时添加一个10001的UDP端口,用于发现unifi的设备。


应用返回到常规设置,并点下一步:


确认应用,创建新的容器


在容器中,可发现新建立的UniFi-Controller控制器已经运行。


Step5:打开和登陆控制器
在浏览器界面中输入https://<NAS的IP>:8443,打开控制器。首次打开会提示非私密证书:



首次登陆会默认运行设置向导,请查阅《UniFi Controller向导及设置教程》一文。

tange 发表于 2020-6-29 14:25

五、升级UniFi控制器
Docker运行的UniFi控制器,是不能在线升级的。

Docker的Unifi Controller软件存储在debian容器中的/var/lib/unifi中,而配置数据保存在/unifi/data,日志保存在/unifi/log目录。新创建容器时将控制器的目录挂载到Docker指定目录,在删除容器时会保留数据;而在新创建容器时将/unifi挂载回旧目录则可保持原配置而直接升级。


Docker的UniFi控制器升级有二种升级方法。
a. 通过配置文件升级
b. 保留配置直接升级
第一种方法是先删除再新创建控制器容器,并导入配置即可。主要步骤请查看本站《UniFi控制器的备份和还原》一文。

本文主要讲述第二种升级方法。
注意:在进行升级前,务必对原先控制器先作备份。

Step1:把容器停止运行


Step2:删除容器

Step3:下载新版本的UniFi映像

Step4:创建新的UniFi容器
在映像中,对新下载的映像按第一章教程进行设置,在“高级设置”,“卷”的保存目录时使用之前所设置的/unifi目录:

可以看到之前绑定的unifi目录有原先的数据存在,绑定到原先的数据目录:

装载路径输入/unifi

其它按上文步骤操作,生成容器并运行,登陆UniFi控制器界面可发现原先配置还保留。

tange 发表于 2020-6-29 14:53

4. 远程访问
NAS设置好DDNS后,可以在外面直接访问NAS的控制器,轻松将UniFi控制器变成云控制器。ddns选个简单好记的域名:

ddns也可以在路由器操作,点击查看EdgeRouter路由器如何实现DDNS的有关教程。
需要在路由器设置端口转向:

[*]OpenWRT在防火墙中添加端口转向


[*]EdgeRouter路由器如何添加端口转向


设置好端口转向后,在浏览器输入https://DDNS域名:8443,熟悉的证书警告页面就出现了:


5. 通过APP随时管理UniFi
虽然可以用浏览器通过ddns来登陆管理UniFi控制器,但手机端还是诸多不便的。UniFi提供APP端管理UniFi,在任何一个地方只要手机有网,都可以管理UniFi控制器。



下载移动端APP,苹果商店请直接搜索UniFi,安装如下图标的UniFi Network:


https://itunes.apple.com/cn/app/unifi-network/id1057750338

https://play.google.com/store/ap ... .easyunifi&hl=en_US
IOS版本APP有中文界面,安卓版目前只有英文的,国内市场更新没IOS频繁。
安卓APK本站下载地址:https://www.anywlan.com/xiazai_2701.html


6.NAS上的防火墙配置
如果NAS开启了防火墙功能,需要开放UniFi Controller使用的端口才可以正在使用。若未启用防火墙,则略过本步骤。

点“新增”,“端口”自定义,添加TCP端口:8080,8443,8843,8880,6789;同理添加UDP端口:3478,10001。


Docker UniFi控制器参考资料:
https://github.com/jacobalberty/ ... ob/master/README.md


tange 发表于 2020-6-29 14:26

五、Docker的UniFi控制器常见问题
更多常见问题,请关注本站公众号本文
1. 无法启动控制器
打开控制器时显示错误:HTTP Status 400 – Bad Request

未包含MongoDB,请选择包含数据库的SC标签的稳定版本安装。
UniFi运行时自动启动私有MongoDB数据库实例,不能外链到别的MongoDB。如果下载安装的映像中未包含MongoDB会运行不了。

2.发现不了设备
UniFi控制器需要使用10001 UDP端口来发现设备,请检查在创建容器时是否添加对了此端口:


3. 设备“正在采用”<->“已断开”(无限循环)


如果在创建容器时勾上了“使用与Docker Host相同的网络”,是不存在此问题的,所以会省却很多烦心事。如果您不想输下面这些命令,那么就把容器删除,重新创建新的容器绑定到unifi安装目录并勾上“使用与Docker Host相同的网络”。
Docker平台下的控制器不能直接采用到设备,需要修改AP的管理地址来完成采用。有二种方法修改设备的管理地址:


[*]通过SSH修改

Setp1:需要下载putty:https://www.anywlan.com/xiazai_182.html
通过ssh来修改控制器的管理地址:

Setp2:打开putty,在Host Name输入AP的IP地址,IP地址如上图,在控制器列表中可以查看到:

登陆的用户名和密码默认都为ubnt:

Setp3:登陆成功后,输入控制器的管理地址,格式如下:
set-inform http://<控制器URL>:8080/inform
本例中我的NAS IP是192.168.2.88,则输入如下:

如果是通过云访问的,可输入域名:
set-inform http://anywlan.synology.me:8080/inform

注意需要在路由器先对8080做端口转向,控制器很快就会显示同步中。如果还不行,重复Setp3



[*]使用UniFi Discovery修改

如果在电脑安装了UniFi Controller,则附带有UniFi Discovery Utility,也可以手动下载UniFi Discovery Utility修改。如果没装UniFi Controller则建议用SSH修改方便些。
UniFi Discovery的打开方式:

[*]Windows:开始菜单->Ubiquiti UniFi->UniFi-Discover
[*]Mac OSX:启动台 ->UniFi-Discover
[*]运行 "java -jar <unifi_base>/lib/ace.jar discover"


Setp1:打开UniFi Discovery搜索设备


Setp2:在需要采用的设备上,点manage按钮
在Set Inform URL中,输入控制器的管理IP,格式如下:
set-inform http://<控制器URL>:8080/inform

Setp3:点“Apply”应用保存。

Setp4:应用后正常控制器即可同步UAP,如果不行,重复Setp2。若反复不行,按下面步骤操作:在控制器将UAP移除;将AP复位;重复Setp2,在“正在采用”时再执行Setp2一次。



nnsat 发表于 2020-6-29 19:37

知识贴,谢谢楼主

luckce 发表于 2020-6-30 11:35

谢谢分享

wxd327 发表于 2020-7-3 21:10

找了很久,终于找到合适的文章了

ppdd 发表于 2020-7-14 03:42

谢谢分享,弄的我又想把黑裙整起来了:lol

brokenyouth1992 发表于 2020-7-17 13:38

感谢大神!

尛吳 发表于 2020-7-21 22:04

感谢分享·····························

浩然_a4mt4 发表于 2020-7-29 12:09

精品帖子,必然是要读一读的
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 在群晖NAS上用docker安装UniFi控制器完全教程