2026/08/16
群晖图床 + PicList + acme.sh 安全证书配置
1. SSH 登录群晖
ssh -p 2222 yourID@192.168.xx.xx
2222 = 群晖 - 控制面板 - 终端机与 SNMP - SSH 端口(根据实际修改);yourID = 你的管理级账号;192.168.xx.xx = 群晖本地 IP
1. 阿里云创建 AccessKey
进入:
阿里云控制台 → RAM 访问控制
创建专用 RAM 用户,例如:
acme-dns
为该用户开启 API AccessKey,并保存:
AccessKey ID
AccessKey Secret
给该 RAM 用户授予阿里云 DNS 解析相关权限。AccessKey Secret 不要公开或上传到文档、GitHub。
2. Container Manager 添加镜像仓库
进入:
Container Manager → 镜像仓库
设置 - 新增 - 添加镜像仓库:
https://docker.1ms.run
3. 下载 acme.sh 镜像
搜索并下载:
neilpang/acme.sh
使用:
latest
4. 创建 acme.sh 容器
建议配置:
网络:host
端口映射:无
命令:daemon
持久化目录:
群晖:/docker/acme
容器:/acme.sh
权限:读/写
环境变量:
LE_CONFIG_HOME=/acme.sh
HOME=/acme.sh
AUTO_UPGRADE=1
Ali_Key=你的 AccessKey ID
Ali_Secret=你的 AccessKey Secret
不要开启:
使用高权限执行容器
5. SSH 登录群晖
ssh -p 2222 yourID@192.168.xx.xx
2222 = 群晖 - 控制面板 - 终端机与 SNMP - SSH 端口号(根据实际修改),yourID = 你的 DSM 管理账号,192.168.xx.xx = 群晖本地 IP
6. 查看 acme.sh 容器名称
sudo docker ps
当前示例容器:docker-1ms-run-neilpang-acme-sh-1
7. 进入 acme.sh 容器
sudo docker exec -it docker-1ms-run-neilpang-acme-sh-1 sh
8. 检查 DNS
nslookup acme-v02.api.letsencrypt.org
9. 检查 Let’s Encrypt 网络连接
curl -I https://acme-v02.api.letsencrypt.org/directory
10. 检查阿里云 API 凭据
test -n "$Ali_Key" && echo "Ali_Key OK" || echo "Ali_Key missing"
test -n "$Ali_Secret" && echo "Ali_Secret OK" || echo "Ali_Secret missing"
如环境变量未保存,可临时设置:
export Ali_Key='你的 AccessKey ID'
export Ali_Secret='你的 AccessKey Secret'
11. 设置 Let’s Encrypt
acme.sh --set-default-ca --server letsencrypt
12. 签发泛域名证书(填自己域名)
根据实际需要可以只要 -d your.domain 或 -d ‘*.your.domain’
acme.sh --issue --dns dns_ali -d your.domain -d '*.your.domain'
强制重新签发:
acme.sh --issue --force --dns dns_ali -d your.domain -d '*.your.domain'
查看现有证书:
acme.sh --list
13. 证书文件位置
容器内:/acme.sh/your.domain_ecc/ (如果签发使用*.your.domain,文件夹会类似于此:_0MMOF~V)
群晖:/volume1/docker/acme/your.domain_ecc/
主要文件:
your.domain.key 私钥
your.domain.cer 证书
ca.cer 中间证书
fullchain.cer 完整证书链
14. DSM 手动导入证书
进入:
控制面板 → 安全性 → 证书 → 新增 → 导入证书
选择:
私钥:your.domain.key
证书:your.domain.cer
中间证书:ca.cer
15. DSM 分配证书
进入:
控制面板 → 安全性 → 证书 → 设置 / 配置
设置:
img.your.domain:80/443 → *.your.domain (图床网址,见16)
系统默认 → *.your.domain
其他 Synology 服务暂时保持原证书。
16. Web Station 图床服务
网页服务:
名称:picbed
文档根目录:web
HTTP 后端:Nginx
网站门户:
服务:picbed
类型:基于名称
主机名:img.your.domain
端口:80 / 443
17. 路由器端口映射
55001 → 192.168.xx.xx:5001
55575 → 192.168.xx.xx:80
55576 → 192.168.xx.xx:443
18. DSM 防火墙
允许:
Web Station HTTP 80
Web Station HTTPS 443
来源:所有。规则放在“全部拒绝”之前。
19. 阿里云 DNS
yun.your.domain → DDNS / 当前公网 IP
img.your.domain → CNAME → yun.your.domain
20. PicList SFTP
主机:192.168.xx.xx
端口:22
用户名:群晖DSM账号
密码:对应密码
上传路径:/web/images/blog/
自定义域名:https://img.your.domain:5001
网站路径:/images/blog/
路径对应:
SFTP 路径:/web/images/blog/
DSM 实际路径:/volume1/web/images/blog/
21. 正式访问地址
DSM:
https://yun.your.domain:55001
图床(网址和端口号根据实际填写):
https://img.your.domain:55576/images/blog/文件名.png
HTTP 测试地址(网址和端口号根据实际填写):
http://img.your.domain:55575/images/blog/文件名.png
22. 自动部署证书到 DSM
进入 acme.sh 容器后:
export SYNO_USERNAME='你的 DSM 账号'
export SYNO_PASSWORD='你的 DSM 密码'
export SYNO_SCHEME='http'
export SYNO_HOSTNAME='127.0.0.1'
export SYNO_PORT='5000'
export SYNO_CERTIFICATE='*.your.domain'
部署:
acme.sh --deploy -d '*.your.domain' --deploy-hook synology_dsm
23. 退出容器
exit
24. 最终链路
PicList / Typora
→ SFTP
→ /web/images/blog/
→ Web Station
→ NAS:443
→ 公网 55576
→ https://img.your.domain:55576/...
acme.sh
→ 阿里云 DNS API
→ Let’s Encrypt DNS-01
→ 自动续期 *.your.domain
→ synology_dsm deploy hook
→ DSM 自动更新证书
网页服务:
名称:picbed
文档根目录:web
HTTP 后端:Nginx
网站门户:
服务:picbed
类型:基于名称
主机名:img.your.domain
端口:80 / 443
11. 路由器端口映射
55001 → 192.168.xx.xx:5001
55575 → 192.168.xx.xx:80
55576 → 192.168.xx.xx:443
12. DSM 防火墙
允许:
Web Station HTTP 80
Web Station HTTPS 443
来源:所有。规则放在“全部拒绝”之前。
13. 阿里云 DNS
yun.your.domain → DDNS / 当前公网 IP
img.your.doman → CNAME → yun.your.domain
14. PicList SFTP
主机:192.168.xx.xx
端口:22
用户名:你的 DSM 账号
密码:你的 DSM 账号
上传路径:/web/images/blog/
自定义域名:https://img.your.doman:55576
网站路径:/images/blog/
注意:
SFTP 路径:/web/images/blog/
DSM 实际路径:/volume1/web/images/blog/
15. 正式访问地址
DSM:
https://yun.your.doman:55001
图床:
https://img.your.doman:55576/images/blog/文件名.png
16. 自动部署证书到 DSM
容器内执行:
export SYNO_USERNAME='你的 DSM 账号'
export SYNO_PASSWORD='你的 DSM 密码'
export SYNO_SCHEME='http'
export SYNO_HOSTNAME='127.0.0.1'
export SYNO_PORT='5000'
export SYNO_CERTIFICATE='*.your.doman'
部署:
acme.sh --deploy -d '*.your.doman' --deploy-hook synology_dsm
17. 退出容器
exit
18. 链路
PicList / Typora
→ SFTP
→ /web/images/blog/
→ Web Station
→ NAS:443
→ 公网 55576
→ https://img.your.doman:55576/...
acme.sh
→ 阿里云 DNS API
→ Let’s Encrypt DNS-01
→ 自动续期 *.your.doman
→ synology_dsm deploy hook
→ DSM 自动更新证书