上一篇说了如何设置群晖DDNS,这一篇接着说群晖上如何安装使用SSL证书,并实现自动更新的问题。
此方法来自@oXnMe
注意:操作前建议先根据上一篇“群晖 Synology 一键配置Cloudflare DDNS 脚本”中的方法配置脚本!
通过 SSH 访问 NAS
- 登录到你的 DSM
- 转到 控制面板 > 终端机和 SNMP > 启动 SSH 服务
- 使用你的客户端通过 SSH 访问 NAS。
- 使用你的 NAS 管理员帐户进行连接。
- 注意:SSH下建议使用root权限执行操作,使用管理员账号密码连接SSH后,输入
sudo -i
切换到root用户。
证书注册&签发
- 注册Let’s Encrypt 证书
docker run --rm -v "/volume1/docker/acme":/acme.sh --net=host neilpang/acme.sh --register-account -m 你的邮箱 --server letsencrypt
- 注意:运行上述命令前,
/volume1/docker/acme
这个目录得先建好。
- 签发证书
docker run --rm -v "/volume1/docker/acme":/acme.sh -e CF_Token="你的CF Token" --net=host neilpang/acme.sh --issue --dns dns_cf --ocsp --server letsencrypt -d "NAS需要绑定的域名"
- 注意:如果提示
IP i/o timeout
,则需要科学上网或者把production.cloudflare.docker.com
加入到魔法规则里面。
*跑完上面的命令后看看/volume1/docker/acme/
目录下有没有你域名的证书,如果有则表示可以继续执行下一步了。
给群晖添加证书
docker run --rm -v "/volume1/docker/acme":/acme.sh -e SYNO_Username="登录NAS用户名" -e SYNO_Password="登录密码" -e SYNO_Scheme="https" -e SYNO_Port="NAS端口" -e SYNO_Certificate="证书描述" --net=host neilpang/acme.sh --deploy --insecure --deploy-hook synology_dsm -d "你的域名"
- 注意:执行完命令后转到DSM
控制面板 > 安全性 > 证书
下,查看是否有新增成功。
添加定时任务
- 登录到你的 DSM
- 转到 控制面板 > 任务计划
- 新增 > 计划的任务 > 用户定义的脚本(操作界面如下)
- 用户定义的脚本按照以下格式填入并确定
docker run --rm -v "/volume1/docker/acme":/acme.sh -e CF_Token="你的CF Token" --net=host neilpang/acme.sh --renew --force --dns dns_cf --ocsp --server letsencrypt -d "你的域名"
docker run --rm -v "/volume1/docker/acme":/acme.sh -e SYNO_Username="登录NAS用户名" -e SYNO_Password="登录密码" -e SYNO_Scheme="https" -e SYNO_Port="NAS端口" -e SYNO_Certificate="证书描述" --net=host neilpang/acme.sh --deploy --insecure --deploy-hook synology_dsm -d "你的域名"
自此,所有操作完成!
现在使用这个方法 默认拉取最新的acme镜像,但是此镜像有bug,https://github.com/acmesh-official/acme.sh/issues/2727,有没有办法用这个命令拉取3.0.6
加上对应的tag就行了,比如:–net=host neilpang/acme.sh:3.0.6
“”证书描述”,这里不知道要填啥。
随意,可以填你的域名
非常有用,这里要注意,最后的证书描述其实就是证书名称,需要在后端有对应的名称的自签证书或者其他证书,否则安装不上。
如果有多个域名的话,后面直接加多个-d “你的域名” 也是支持的
顺便问下博主,如果我docker和宿主机不在同一个host的话,如何自定义内网IP部署?
请问CF_Token是什么?怎么获取?