UNRAID修炼笔记003:DuckDNS+SWAG反向代理
引言
照片管理、网盘、Overleaf、Code Server、笔记……在Unraid里搭建的各种应用,如果只能在家庭局域网中访问,瞬间就变得没那么有用了。另外,不同的应用运行在不同的端口、ip地址,虽然可以从Unraid的Docker列表中直接跳转,但总让人觉得有些散乱,同时,使用http协议的应用虽然配置起来简单,但http的明文传输带来许多安全隐患。本篇文章要介绍的SWAG容器提供的反向代理功能就是用来解决这些问题的。
什么是反向代理
SWAG容器是我们唯一暴露向公网的接口,我们连接在公网的设备通过https协议(加密的http协议)访问SWAG容器中运行的NGINX,NGINX根据请求的域名以及URL,将请求分发给相应的运行在内网中的各项应用(PhotoPrism、Nextcloud、Overleaf、wiznote……),这就叫做反向代理。
准备
首先,你需要确认自己的路由器是有公网ip的,并且知道如何在自己的路由器上进行端口映射。验证自己知否有公网ip的方法是,登录百度,搜索“ip”,搜索结果中会包括“本机ip”,登录你的路由器管理页面,检查你的WAN口ip是否和百度显示的“本机ip”一致,如果一致,说明你拥有公网ip,如果不一致,说明没有。
获取域名
获取域名的方式有很多种,这里以免费的duckdns为例。
访问www.duckdns.org,创建账号并登录后,输入自己的子域名,然后点击add domain,比如我这里设置的是happynetwork。
将自己的公网ip输入到current ip,然后点击update ip,如果有ipv6地址,则把ipv6地址填入ipv6,然后点击update ipv6。
创建Docker网络
Docker默认的网络(就是我们在unraid中配置容器时选择的Network Type)不支持容器间的DNS服务,也就是说,从一个容器访问另一个容器必须指明另一个容器的ip地址(例如172.17.0.11),如此一来,许多配置写起来很不方便,所以我们先自己另外创建一个Docker网络,在此网络中我们是可以使用Docker的DNS服务的,也就是说,在原来需要写ip地址的地方,现在只需要写容器名(例如photoprism)就可以了。下面介绍具体步骤。
第一步:首先进入unraid的设置界面,选择Docker,修改配置前我们需要先停止Docker。所以,“启用Docker”选择“否”,然后点击“应用”。
点击右上角“基本视图”右边的切换按钮,进入“高级视图”,“保留用户自定义网络”选择“是”,“启用Docker”选择“是”。然后点击“应用”。
第二步:接下来我们通过命令行创建一个用户自定义的Docker网络。首先在页面右上角找到终端按钮并打开终端。
在终端中输入命令docker network create happynetwork,并按回车,执行完成后关闭终端即可。happynetwork是所创建网络的名字,可以任意。
接下来我们就可以正式部署SWAG容器了。
部署SWAG
在unraid apps中搜索swag,点击install按钮,进入docker配置界面。
配置如下
网络类型选择我们刚刚创建的用户自定义网络。
http和https:访问SWAG的两个端口,任意两个没有被占用的端口即可,在路由器上进行端口映射,将路由器的443端口映射到Unraid主机的在这里填写的https端口。
Domain Name:你在duckdns注册的域名。
Subdomain:填写wildcard,这样,你的证书就会包含所有的子子域名,例如abc.happynetwork.duckdns.org,def.happynetwork.duckdns.org……
Only Subdomains:填false。
第二组:
Validation:验证方式,填写duckdns,如果是其他方式得到的域名,这里要做相应修改。
AppData Config Path:填写/mnt/user/appdata/swag。我们之后要去这个目录里修改SWAG的配置,使其反向代理我们的应用。
DuckDNS Token:在duckdns.org上登陆后,可以看到自己的token。
配置完成后,点击应用,启动SWAG容器。点击Docker列表中SWAG的图标,点击日志,等待一段时间,如果看到“Server Ready”的字样,说明成功了。
如果你已经配置了路由器的端口映射,此时访问
https://www.nideyuming.duckdns.org
注意把nideyuming替换为你自己的子域名,应该能看到:
反向代理PhotoPrism
首先我们需要把之前部署的PhotoPrism容器移动到我们刚刚创建的网络中(happynetwork)。在Unraid的Docker页面点击PhotoPrism的图标,然后选择“编辑”。修改“网络类型”为我们新创建的用户自定义网络(例如我这里的happynetwork),修改后点击“应用”。
然后,我们对SWAG进行配置,让它反向代理PhotoPrism服务。用你喜欢的方式(例如可以把appdata这个share挂载到电脑上)打开文件:
/mnt/user/appdata/swag/nginx/proxy-confs/photoprism.subdomain.conf.sample
将在同一文件夹下另存为photoprism.subdomain.conf
如果你PhotoPrism的容器的名字就是photoprism,那么你不需要对这个文件做任何修改,否则,你需要把下图中红色圈出的部分修改为你的PhotoPrism的容器名。
保存文件,重启swag容器,等待一段时间后(或者查看swag日志,等到出现Server Ready后),访问https://photoprism.nideyuming.duckdns.org,注意把nideyuming替换为你自己的子域名。如果能看到PhotoPrism的登录页面,说明大功告成!
往期文章:
后续文章计划:
大家在评论区留言的问题。
除DuckDNS外的其他域名提供商的SWAG容器配置以及DDNS的配置、ipv6外网访问。
NextCloud+ONLYOFFICE:在线编辑网盘中的office文件。
code server:网页中的VS Code。
Plex/Emby
:私人影音中心。
rclone:备份OneDrive、坚果云等网盘,给数据再上一道保险。
……
值友4771069988
校验提示文案
JavyLiu
校验提示文案
-小踢-
校验提示文案
值友5811632825
校验提示文案
Txtoas
校验提示文案
conbbyn
校验提示文案
FH113
校验提示文案
utrue
conf的容器名和端口都按的应用来的,不知道怎么解决了。
校验提示文案
以后再买首发我是狗
校验提示文案
值友7494658055
校验提示文案
白哥
校验提示文案
AlDa
校验提示文案
文灬武
校验提示文案
一值不懈
校验提示文案
文灬武
校验提示文案
FH113
校验提示文案
yy915cn
校验提示文案
自在佛
校验提示文案
chowen
校验提示文案
舒蟲
去看看
:20443,可以输出:Welcome to your SWAG instance页面,我在proxy-conf里面配置好了calibre-web文件,输入calibre-web.xxx.top:20443,怎么还是输出:Welcome to your SWAG instance这个页面
校验提示文案
值友5642421621
校验提示文案
值友3805269504
校验提示文案
TigerXue
2 docker里 把kodexplorer加入自建的customer network,通过IP:port可以访问,但在swag里的proxy-conf里没有发现kodexplorer.subdomain.conf.sample文件,自己创建了一个,按教程改了后,敲去看看 出现502错误,不知道如何解决了
在路由器上做了https 443的端口转发,443 转发成unraid(也就是swag容器的) IP, 比如192.168.0.100 的10443端口,80 没有做端口转发
在阿里云dns解析服务里添加了CNMAE记录-kodexplorer.XXXX.top
abcde.XXXX.top会自动跳到路由器的web界面,应该是在阿里云的DNS解析里把路由器的公网地址配了,所以所有的泛域名都会指导路由器
不知道为什么不行,能帮忙看看吗
校验提示文案
大熊本熊
校验提示文案
值友7494658055
校验提示文案
舒蟲
去看看
:20443,可以输出:Welcome to your SWAG instance页面,我在proxy-conf里面配置好了calibre-web文件,输入calibre-web.xxx.top:20443,怎么还是输出:Welcome to your SWAG instance这个页面
校验提示文案
chowen
校验提示文案
自在佛
校验提示文案
以后再买首发我是狗
校验提示文案
yy915cn
校验提示文案
FH113
校验提示文案
文灬武
校验提示文案
一值不懈
校验提示文案
utrue
conf的容器名和端口都按的应用来的,不知道怎么解决了。
校验提示文案
FH113
校验提示文案
文灬武
校验提示文案
conbbyn
校验提示文案
AlDa
校验提示文案
Txtoas
校验提示文案
白哥
校验提示文案