群晖 DSM 7.1 域名远程HTTPS访问(DDNS+SSL泛域名)

本文解决了利用域名解析到群晖的ipv4或ipv6地址,来实现外网访问群晖。同时开始ssl泛域名证书实现https的加密安全访问。

一、动态域名解析(DDNS-GO)

跳过群晖Docker容器安装jeessy2/ddns-go,这是一个提供自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务的项目,并且支持消息推送等进阶功能。同时在Mac、Windows、Linux系统都可以使用,下面的项目链接。

1.docker安装

先在群晖Docker套件->注册表中搜索jeessy/ddns-go,并下载最新版本。

然后在->映象中双击安装,选择“使用与Docker Host相同的网络”

选择“启用自动重新启动”

接下来全部下一步直到完成,我们可以在->容器中看到刚刚安装的jeessy-ddns-go1

2.配置容器

运行容器后,访问网页地址http://你的群晖ip地址:9876,进入DDNS-GO的配置界面

选择你是DNS服务商并输入密钥。
以腾讯云Dnspod为例,打开域名管理平台的API密钥界面,创建新DNSpod Token密钥,将获得的ID和Token分别填入ID和Token。

然后根据需要选择是否需要ipv4与ipv6的解析,并填入要对应的二级域名,注意格式为“XXX.一级域名”,不要填“http://,https://”等其他内容。

配置消息推送等其他功能后,点击最下方的“Save”保存。

稍作等待刷新页面,我们可以在右侧看到日志信息,配置消息推送的可以看到推送出的消息,我这里因为之前配置过所以显示ipv6未变化。当你的公网ip变化时它会实时更新,相比群晖自带的DDNS,它的更新速度会快很多。

然后别忘了在路由器中配置端口转发,将群晖的5000(http访问)、5001(https访问)端口转发出来。
我这里为方便演示将两个端口都转发了,如果你只需要http访问那你输入网址“http://域名:外部端口”就可以直接访问了,这种情况就不需要转发5001端口,如果你跟随下文成功配置ssl证书后,再将5000端口删除保证安全。

二、HTTPS访问(ssl泛域名证书)

1. 说明

由于本次使用的脚本会替换群晖默认证书,所以如果你之后需要用到群晖的默认证书(如QuickConnect服务,但我们都决定用公网ip了谁还用QuickConnect呢?),请在控制面板->安全性->证书中随意上传一份证书以供替换

2. 下载脚本

项目名称:andyzhshg/syno-acme

下载最新的项目压缩包,解压后上传到 NAS 的任意目录下,大概有如下文件。

3. 配置脚本参数

编辑脚本的配置文件 config:

如图所示,需要编辑的我用箭头指出来了。

首先是 DO­MAIN,也就是你的域名,由于是申请泛域名证书,所以你上文解析的是b.a.com,这里只需要填一级域名“a.com”即可,最后申请的证书包括所有*.a.com的域名。

然后是 DNS 的类型,根据服务商的不同,DNS 类型各不相同,比如阿里云(dns_ali),Dns­pod(dns_dp),Go­daddy(dns_gd)等,具体不多赘述与上文类似。

需要指出的是,我给出的配置文件模板并没有给出所有 acme.sh 支持的域名服务商,config 模板中没有的服务商,请大家自行完善。可点击这里查看有无你需要的域名服务商。一般情况下,这个页面每个文件对应一个域名服务商,比如 dns_ali.sh 就是对应阿里云,文件名去掉.sh 扩展名就是 DNS 类型,比如阿里云的 DNS 类型就是 dns_ali

4. 配置定时任务

首先查看脚本具体所在位置并复制

打开 控制面板->任务计划->新增->计划的任务->用户定义的脚本

设置任务名称和用户账户,需要注意的是用户账户要选择root

设置计划的时间和周期,由于Let’s En­crypt证书有效期为三个月,所以这里可以每个月执行一次

设置执行脚本,脚本路径是上文查看的,这里我们将脚本的输出重定向到了一个log.txt的文件中,是为了方便后期查看脚本的执行情况

注意
上图中用户定义的脚本没有换行!
/volume2/docker/syno-acme/cert-up.sh update >> /volume2/docker/syno-acme/log.txt 2>&1

可以在新建的任务上点击右键立即执行任务,这样脚本就会运行,自动更新证书,并重启 web 服务器加载新的脚本。以后,NAS会每隔一个月执行一次该脚本,自动更新证书。

注意
脚本首次运行时需要下载最新依赖,需要等待一会,如果不成功可以查看日志寻找原因

最后在控制面板->登录门户->DSM中强制开启https

在地址栏输入“https://ipv4域名:5001对应的外部端口”或“https://ipv6域名:5001”访问成功并看到这样一个小锁的图形则说明配置成功

另外脚本里提供了回滚命令,可以通过 ssh 登录到 nas,定位到对应目录,执行如下命令回滚证书目录到备份的状态:

/volume2/docker/syno-acme/cert-up.sh revert
上一篇
下一篇