beizhu
type
Post
status
Published
date
Apr 7, 2026
slug
summary
tags
群晖
category
研究
icon
password
环境信息
- 群晖 DSM 6(DS918+)
- Docker 版本:20.10.3(注意:此版本使用
docker-compose而非docker compose)
- DNS 托管:Cloudflare
- 域名示例:442973.xyz
一、SSH 登录群晖
二、安装 acme.sh
三、配置 Cloudflare DNS API
3.1 获取 API Token
- 登录 Cloudflare → 右上角头像 → My Profile → API Tokens
- 点击 Create Token
- 选择 编辑区域 DNS 模板 → 点击 使用模板
- 确认权限为 Zone - DNS - Edit,选择对应域名
- 创建后保存 Token
不要用 Global API Key,权限太大。用 API Token 更安全。
3.2 设置环境变量
四、申请证书
成功后输出类似:
五、找到群晖证书目录
记下 DEFAULT 文件中的 ID(例如
RV2fVA),后续替换使用。六、安装证书到群晖
6.1 复制到 _archive 目录
6.2 复制到 system/default 目录
6.3 同步到所有服务目录
七、修改 mkcert 防止证书被覆盖(关键步骤)
DSM 6 的
/usr/syno/bin/mkcert 脚本在每次 nginx 重启时会检查 system/default 目录,发现证书与 Synology CA 不匹配就会重新生成自签证书,覆盖掉 Let's Encrypt 证书。7.1 备份原文件
7.2 注释掉最后两行
7.3 验证修改
应该看到最后两行被注释了:
八、重启 nginx 并验证
应该输出:
用浏览器无痕模式访问
https://www.442973.xyz:5001 确认证书生效。九、配置自动续期
9.1 创建续期同步脚本
9.2 配置 acme.sh 续期后自动同步
9.3 验证 cron 定时任务
acme.sh 安装时已自动添加 cron,每天检查一次,到期前 30 天自动续期。
9.4 手动测试续期流程
十、其他 DNS 服务商配置
如果不用 Cloudflare,替换环境变量和 --dns 参数即可:
阿里云 DNS
腾讯云 DNSPod
查看所有支持的 DNS 服务商
注意事项
事项 | 说明 |
证书有效期 | Let's Encrypt 证书 90 天有效,acme.sh 自动续期 |
DSM 系统升级 | 可能还原 /usr/syno/bin/mkcert,升级后需重新注释最后两行 |
Docker 命令 | DSM 6 的 Docker 20.10.3 使用 docker-compose(带连字符),不支持 docker compose |
证书路径 | 证书存放在 /root/.acme.sh/442973.xyz_ecc/ |
恢复自签证书 | 如需恢复,执行 cp /usr/syno/bin/mkcert.bak /usr/syno/bin/mkcert && synoservicectl --restart nginx |