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 自动更新证书