群晖 DSM:使用 Docker 部署 acme.sh 申请并配置域名 SSL 证书
准备工作
- 你的域名,并在你的 DNS 解析服务商中生成 API 密钥,保存备用。
- 群晖开启 SSH,并安装 Docker 套件。
- 群晖新建一个用户
acme
,密码保存备用,加入administrators
用户组,套件和共享文件夹权限可以全部禁掉。
配置 Docker
-
用 File Station 在共享文件夹
docker
里新建文件夹acme.sh。
-
在本机上创建
docker-compose.yml
,内容如下,根据自己情况修改。保存后将上传到刚才新建的
docker/acme.sh
文件夹里。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19services:
acme.sh:
image: neilpang/acme.sh:latest
container_name: acme.sh
environment:
- DP_Id=******
- DP_Key=************************ #准备工作中生成的DNS解析商的API密钥,此处以使用DNSPod为例
- SYNO_Scheme=http
- SYNO_Hostname=localhost
- SYNO_Port=5000
- SYNO_Username=acme
- SYNO_Password=**************** #填写群晖里新建的用户acme的密码
- SYNO_Certificate=example.com #你的域名
- SYNO_Create=1
volumes:
- ./data:/acme.sh
network_mode: host
command: daemon
restart: unless-stopped本配置以使用 DNSPod.cn 为例,关于其他域名的配置名,请参考 dnsapi。
请注意:变量值无需加引号或双引号。
-
打开 Docker 套件,在
注册表
中搜索 "acme.sh",双击neilpang/acme.sh
,标签选latest
,点确定下载映像。 -
SSH 连接群晖,挂载到刚刚新建的
docker/acme.sh
文件夹里,启动 docker 容器。1
2cd /volume1/docker/acme.sh
sudo docker-compose up -d如果无误,应该能在群晖 docker 套件中看到刚启动的容器
acme.sh
。
申请并配置证书
-
(可选)设置默认申请 Let’s Encrypt 证书。
1
sudo docker exec acme.sh --set-default-ca --server letsencrypt
如不修改,acme.sh 将默认申请 ZeroSSL.com 的证书。详见 ZeroSSL.com CA。
-
申请证书。以使用解析商 DNSPod.cn 为例。
请根据实际需要修改参数为自己的 DNS 解析商和域名。
1
sudo docker exec acme.sh --issue --dns dns_dp -d example.com
-
申请完成后,使用 deployhooks 将证书导入群晖。
请根据实际需要修改参数为自己的域名。
1
sudo docker exec acme.sh --deploy -d example.com --deploy-hook synology_dsm
-
群晖 DSM 中打开控制面板 - 安全性,根据自己需要设置新的证书。