群晖 DSM 6 使用 acme.sh + Let's Encrypt 配置 HTTPS 完整指南
2026-4-7
| 2026-4-7
字数 1030阅读时长 3 分钟
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

  1. 登录 Cloudflare → 右上角头像 → My Profile → API Tokens
  1. 点击 Create Token
  1. 选择 编辑区域 DNS 模板 → 点击 使用模板
  1. 确认权限为 Zone - DNS - Edit,选择对应域名
  1. 创建后保存 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

快速故障排查

  • 群晖
  • 智驾芯片祛魅:蔚来小鹏、特斯拉、英伟达, 5090 能不能装车PPT Agent
    Loading...