1、使用docker安装acme.sh
选择创建的目录
创建docker-compose文件
内容如下
services:
acme-sh:
image: docker.1ms.run/neilpang/acme.sh
container_name: acme.sh
volumes:
- /volume1/docker/acme:/acme.sh
network_mode: host
command: daemon
restart: always
environment:
- Ali_Key=FERTEhttrddbVmAYn6o94rtaraJUU
- Ali_Secret=GDERIUK87RTRVFD567HG34GBF3SDVCX5
使用root权限执行shell
sudo -i
进入容器里面申请证书
docker exec -it acme.sh /bin/sh
注册账户
acme.sh --register-account -m your@email.com
申请证书
acme.sh --issue --dns dns_ali -d test.xxx.top
申请成功后将申请的证书上传到群晖后台,群晖会自动创建证书文件夹
添加成功后就会在,/usr/syno/etc/certificate/_archive/目录下增加了一个文件夹
上传前是这样/usr/syno/etc/certificate/_archive/文件夹是这样
上传后就会多一个文件夹
然后我就可以用脚本把证书复制到该文件夹里,脚本内容如下
#!/bin/sh
set -e # 出错时立即退出
#定义变量
DOMAIN="test.xxx.top"
CERT_DIR="/volume1/docker/acme/${DOMAIN}_ecc"
SYSTEM_CERT_DIR="/usr/syno/etc/certificate/system/default"
ARCHIVE_CERT_DIR="/usr/syno/etc/certificate/_archive/yptcQK"
LOG_FILE="/volume1/docker/acme/renew.log"
#日志记录
echo "$(date): Certificate update started" >> "$LOG_FILE"
#检查容器是否运行
if ! docker ps -q -f name=acme.sh | grep -q .; then
echo "$(date): Error: acme.sh container is not running" >> "$LOG_FILE"
exit 1
fi
#检查证书文件是否存在
[ -f "$CERT_DIR/fullchain.cer" ] || {
echo "$(date): Error: Certificate files not found" >> "$LOG_FILE"
exit 1
}
#复制证书到 Synology 系统证书目录
cp -f "$CERT_DIR/$DOMAIN.cer" "$SYSTEM_CERT_DIR/cert.pem"
cp -f "$CERT_DIR/$DOMAIN.key" "$SYSTEM_CERT_DIR/privkey.pem"
cp -f "$CERT_DIR/fullchain.cer" "$SYSTEM_CERT_DIR/fullchain.pem"
#复制证书到归档目录
cp -f "$CERT_DIR/$DOMAIN.cer" "$ARCHIVE_CERT_DIR/cert.pem"
cp -f "$CERT_DIR/$DOMAIN.key" "$ARCHIVE_CERT_DIR/privkey.pem"
cp -f "$CERT_DIR/fullchain.cer" "$ARCHIVE_CERT_DIR/fullchain.pem"
echo "$(date): Certificate update completed successfully" >> "$LOG_FILE"
设置计划任务
选择root用户
每月执行一次
添加脚本
bash /volume1/docker/acme/renew_cert.sh
- 群晖https端口是5001