UNRAID修炼笔记003:DuckDNS+SWAG反向代理

2021-09-30 21:34:15 30点赞 156收藏 52评论

引言

照片管理、网盘、Overleaf、Code Server、笔记……在Unraid里搭建的各种应用,如果只能在家庭局域网中访问,瞬间就变得没那么有用了。另外,不同的应用运行在不同的端口、ip地址,虽然可以从Unraid的Docker列表中直接跳转,但总让人觉得有些散乱,同时,使用http协议的应用虽然配置起来简单,但http的明文传输带来许多安全隐患。本篇文章要介绍的SWAG容器提供的反向代理功能就是用来解决这些问题的。

什么是反向代理

SWAG容器是我们唯一暴露向公网的接口,我们连接在公网的设备通过https协议(加密的http协议)访问SWAG容器中运行的NGINX,NGINX根据请求的域名以及URL,将请求分发给相应的运行在内网中的各项应用(PhotoPrism、Nextcloud、Overleaf、wiznote……),这就叫做反向代理。

SWAGSWAG

准备

首先,你需要确认自己的路由器是有公网ip的,并且知道如何在自己的路由器上进行端口映射。验证自己知否有公网ip的方法是,登录百度,搜索“ip”,搜索结果中会包括“本机ip”,登录你的路由器管理页面,检查你的WAN口ip是否和百度显示的“本机ip”一致,如果一致,说明你拥有公网ip,如果不一致,说明没有。

获取域名

获取域名的方式有很多种,这里以免费的duckdns为例。

访问www.duckdns.org,创建账号并登录后,输入自己的子域名,然后点击add domain,比如我这里设置的是happynetwork。

Duck DNSDuck DNS

将自己的公网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”选择“是”。然后点击“应用”。

保留用户自定义网络保留用户自定义网络

第二步:接下来我们通过命令行创建一个用户自定义的Docker网络。首先在页面右上角找到终端按钮并打开终端。

终端按钮终端按钮

在终端中输入命令docker network create happynetwork,并按回车,执行完成后关闭终端即可。happynetwork是所创建网络的名字,可以任意。

创建网络创建网络

接下来我们就可以正式部署SWAG容器了。

部署SWAG

在unraid apps中搜索swag,点击install按钮,进入docker配置界面。

SWAGSWAG

配置如下

SWAG第一组配置SWAG第一组配置

  • 网络类型选择我们刚刚创建的用户自定义网络。

  • http和https:访问SWAG的两个端口,任意两个没有被占用的端口即可,在路由器上进行端口映射,将路由器的443端口映射到Unraid主机的在这里填写的https端口。

  • Domain Name:你在duckdns注册的域名。

  • Subdomain:填写wildcard,这样,你的证书就会包含所有的子子域名,例如abc.happynetwork.duckdns.org,def.happynetwork.duckdns.org……

  • Only Subdomains:填false。

第二组:

SWAG第二组配置SWAG第二组配置

  • 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替换为你自己的子域名,应该能看到:

SWAG成功页面SWAG成功页面

反向代理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、坚果云等网盘,给数据再上一道保险。

  • ……

展开 收起

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

2643元起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2399元起

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

3099元起

ZSpace 极空间 私有云Z2Pro 四核2盘位NAS

ZSpace 极空间 私有云Z2Pro 四核2盘位NAS

1099元起

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

2599元起

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

2267.51元起

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、32GB)

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、32GB)

4705元起

UGREEN 绿联 DXP2800 双盘位 私有云NAS存储(Intel N100、8GB)

UGREEN 绿联 DXP2800 双盘位 私有云NAS存储(Intel N100、8GB)

1799元起

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

3968元起

ZSpace 极空间 私有云Q2C 2盘位 Nas网络存储服务器

ZSpace 极空间 私有云Q2C 2盘位 Nas网络存储服务器

899元起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1565元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2848.99元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3199元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

2199元起

Synology 群晖 DS923+ 四盘位 NAS存储

Synology 群晖 DS923+ 四盘位 NAS存储

4949.99元起

UGREEN 绿联 DXP480T Plus 四盘位 私有云NAS存储(酷睿i5-1235U、8GB)

UGREEN 绿联 DXP480T Plus 四盘位 私有云NAS存储(酷睿i5-1235U、8GB)

暂无报价
52评论

  • 精彩
  • 最新
  • 真棒👏🏻,虽然我看不懂,但老公就是棒👍🏻

    校验提示文案

    提交
    老婆总是第一个👍🏻

    校验提示文案

    提交
    已关注你老婆,但是没有关注你 [龇牙]

    校验提示文案

    提交
    收起所有回复
  • 看起来是类似于宝塔的东西啊,不过应该轻量化了很多,对我这样的菜鸡来说比起手撸 Nginx 应该简单了不少

    校验提示文案

    提交
    宝塔之前没接触过,以后看看~

    校验提示文案

    提交
    收起所有回复
  • 没太明白,这样操作完外网访问还需要加端口号吗?

    校验提示文案

    提交
    不需要在URL中加上端口号,因为我们在路由器上用的是https默认的443端口。

    校验提示文案

    提交
    那不映射443 用别的端口 可以在外网用域名加端口号访问么

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 与我的需求相反

    校验提示文案

    提交
    你的需求是什么呀?

    校验提示文案

    提交
    收起所有回复
  • 忘了说最重要的一点 swag就是以前的letsencrypt……

    校验提示文案

    提交
    嗯嗯 没错,我入坑比较晚,它已经改名了,哈哈哈

    校验提示文案

    提交
    收起所有回复
  • 家宽443端口基本不能用,你这怎么代理的

    校验提示文案

    提交
    我自己是校园网,所以写的时候没注意,别的端口也可以,加上端口号即可。

    校验提示文案

    提交
    收起所有回复
  • 请教下楼主,因为我的路由只要重启,公网IP就会变。那duckdns怎么填入哦?

    校验提示文案

    提交
    那你需要用到动态dns,来自动更新IP地址,这篇文章中没有提到,后面我再写篇分享~你是openwrt路由器吗?是的话可以在openwrt里配置,更加方便,不是的话也没关系,可以在unraid上配置。

    校验提示文案

    提交
    我是openwrt设置了自动更新ip,ip不是固定的话,duckdns怎么填入呢?

    校验提示文案

    提交
    还有6条回复
    收起所有回复
  • 按教程到配置文件修改了。WWWW能转到welcome,换别的子域名就502了。
    conf的容器名和端口都按的应用来的,不知道怎么解决了。 [喜极而泣]

    校验提示文案

    提交
    1. 去看看可以访问welcome页面对吗?abcde.nideyuming.duckdns.org可以访问到welcome页面吗?abcde可以替换成任意字符串。这一步是用来确定duckdns的配置是否正确。
    2. 通过ip地址和端口映射能访问PhotoPrism吗?这一步是要确定PhotoPrism本身是正常运行的。
    3. 确定swag和PhotoPrism的Network Type都是你新创建的那个容器网络吗?即文中说的Custom:happynetwork

    校验提示文案

    提交
    谢谢楼主的热心分享。自己搞定了,配置文件不用改,文件名和端口都不动,把容器的名字改成配置内的名字就没问题了。试了emby和bitwarden都正常访问, [高兴]
    期待楼主后续的其他域名提供商的SWAG容器配置,自己注册了freenom的cf域名,ddns也弄好了,SWAG不会设置。 [喜极而泣]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 大佬,这样设置完能在我家网络环境访问,不能在其他网络访问是咋回事

    校验提示文案

    提交
    哦应该是封锁了443端口,这该怎么办?

    校验提示文案

    提交
    可以用别的端口,比如一万以上的,然后访问的时候在域名的后面也加上端口号。
    去看看:10086/someurl

    校验提示文案

    提交
    收起所有回复
  • ipv6的啥时候出啊。我没ipv4。

    校验提示文案

    提交
  • 和npm那个好点

    校验提示文案

    提交
  • 不错,另一种反向代理玩法 [赞一个]

    校验提示文案

    提交
  • 赞一个,老哥继续。正好最近在部署自己的nas,正好学习。

    校验提示文案

    提交
  • 老大,是不是Authelia也安排上,带我们玩玩

    校验提示文案

    提交
  • IPV6可以用吗?

    校验提示文案

    提交
  • 再次请教楼主,有试过swag反向代理访问群晖么?看自带的配置文件,没有群晖的sample [大囧]

    校验提示文案

    提交
  • DuckDNS试了没问题,用阿里云就不行,已经在/dns-conf里的aliyun.ini填好了key和secret,报错:Encountered exception during recovery: requests.exceptions.ConnectionError: HTTPSConnectionPool(host='alidns.aliyuncs.com', port=443): Max retries exceeded with url:

    校验提示文案

    提交
    配置SWAG docker的时候,VALIDATION填DNS,然后下面的DNSPLUGIN填aliyun。再修改aliyun.ini之后重启docker就行了。

    校验提示文案

    提交
    收起所有回复
  • seafile的docker版本用过吗?按照你这样的操作,大部分都可以正常访问,唯独seafile和wiznote访问不了,文章中提到的方法都试过了,不行。楼主有空试一下?

    校验提示文案

    提交
  • 这篇文章的最大收获,overleaf居然有docker版,岂不是在自己服务器上不会受编译时间限制了 [傻笑]

    校验提示文案

    提交
  • 我用的阿里云,正确配置了,比如输入
    去看看
    :20443,可以输出:Welcome to your SWAG instance页面,我在proxy-conf里面配置好了calibre-web文件,输入calibre-web.xxx.top:20443,怎么还是输出:Welcome to your SWAG instance这个页面

    校验提示文案

    提交
    同样的问题,无论怎么配置端口从外网打开的都是swag页面无法转发进入对应的docker。

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
156
扫一下,分享更方便,购买更轻松