群晖通过 docker 更新和部署 letsencrypt 证书

2022-05-23 17:26:13 +08:00
 goodryb

群晖使用了 letsencrypt 的免费证书,3 个月要更新一次,之前是在 Mac 上更好证书,手动通过群晖 web 页面进行替换。

本着能不动手就自动化的目标,查找了一些资料,加上实际测试,现在已经能通过 docker 来申请并且在群晖上自动部署证书。

前置条件

  1. 准备好域名托管站点的 id 和 key ,我用的阿里云
  2. 准备好群晖的账户,建议不要用默认管理员,新建一个账户,加入管理员组,毕竟这个只在本地使用。
  3. 群晖安装 docker 组件,下载好对应的 docker 镜像:neilpang/acme.sh
  4. 准备一个目录,映射到容器中保存证书文件,这里是:/volume2/docker/acme

更新脚本如下

#!/bin/bash
export DOMAIN='abc.com'

docker run --rm \
-v "/volume2/docker/acme":/acme.sh \
-e Ali_Key="*" \
-e Ali_Secret="*" \
--net=host \
neilpang/acme.sh \
--issue --dns dns_ali --dnssleep 60 -d "${DOMAIN}" -d "*.${DOMAIN}" --server letsencrypt

sleep 5

docker run --rm -v "/volume2/docker/acme":/acme.sh -e SYNO_Username="*" -e SYNO_Password="*" -e SYNO_Certificate="caupdate"  -e SYNO_Scheme="http" -e SYNO_Create=1 --net=host neilpang/acme.sh --deploy -d "${DOMAIN}" -d "*.${DOMAIN}" --deploy-hook synology_dsm

其中

  1. DOMAIN 按照实际来写
  2. Ali_Key 、Ali_Secret 按照实际来写,用法和 acme.sh 参数是一样的
  3. 群晖部分 SYNO_Username 用户名、SYNO_Password 密码、SYNO_Certificate 证书名称

其他部分保持默认,保存后添加脚本执行权限,本地跑一遍测试下,没问题就可以添加到计划任务,定期运行。

2183 次点击
所在节点    分享发现
2 条回复
4363fsdtrt
2023-11-11 15:29:31 +08:00
非常有用感谢,已成功运行
Subdue
2023-11-24 18:22:41 +08:00
最新版本的 acme 有点点毛病,我的群辉 918 用不了,我倒回旧版 acme 镜像,重新做了调整



#!/bin/bash





export ZEROSSL_EMAIL="**********************"


export DOMAIN="**********************"


export SYNO_USERNAME="**********************"
export SYNO_PASSWORD="**********************"


export DNS="dns_cf"
export CF_KEY="**********************"
export CF_EMAIL="**********************"








echo "${SYNO_PASSWORD}" | sudo -S docker run --rm -v "/volume1/docker/acme":"/acme.sh" --net=host neilpang/acme.sh:3.0.6 --register-account -m "${ZEROSSL_EMAIL}" --server zerossl

sleep 30

echo "${SYNO_PASSWORD}" | sudo -S docker run --rm -v "/volume1/docker/acme":"/acme.sh" -e CF_Key="${CF_KEY}" -e CF_Email="${CF_EMAIL}" --net=host neilpang/acme.sh:3.0.6 --issue --dns "${DNS}" --dnssleep 60 -d "${DOMAIN}" -d "*.${DOMAIN}" --keylength 4096 --force

sleep 600

echo "${SYNO_PASSWORD}" | sudo -S docker run --rm -v "/volume1/docker/acme":"/acme.sh" -e SYNO_Hostname="${DOMAIN}" -e SYNO_Port="5001" -e SYNO_Username="${SYNO_USERNAME}" -e SYNO_Password="${SYNO_PASSWORD}" -e SYNO_Scheme="https" -e SYNO_Certificate="caupdate" -e SYNO_Create=1 --net=host neilpang/acme.sh:3.0.6 --deploy -d "${DOMAIN}" -d "*.${DOMAIN}" --deploy-hook synology_dsm --insecure








exit 0

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/854756

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX