54 lines
2.1 KiB
Bash
Executable File
54 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 检查参数
|
||
if [ $# -lt 2 ]; then
|
||
echo "用法: $0 <工作目录> <域名>"
|
||
exit 1
|
||
fi
|
||
|
||
WORKDIR="$1" # 第一个参数:工作目录,比如 /opt/caddy/certbot-aliyun-docker/derper
|
||
DOMAIN="$2" # 第二个参数:域名,比如 derper.jmsu.top
|
||
|
||
# 可选:你可以将阿里云AK/SK/邮箱也作为参数或放到环境变量/配置文件
|
||
REGION="cn-hangzhou"
|
||
ACCESS_KEY_ID="LTAI5tP1yWFMMJhF6nrGYEit" # 推荐写到外部变量,或传参数
|
||
ACCESS_KEY_SECRET="xBEMX76UwvO21DCES2605VM0kAU7TV" # 推荐写到外部变量,或传参数
|
||
EMAIL="pylyzeng@gmail.com"
|
||
|
||
cd "$WORKDIR" || exit 1
|
||
|
||
echo ">>> 停止 derper 服务"
|
||
docker compose down
|
||
echo ">>> derper down OK"
|
||
|
||
echo ">>> 续期证书 $DOMAIN"
|
||
ACCOUNT_ID=$(ls -td ./letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory/* | head -1 | xargs -n1 basename)
|
||
# 解决存在多账户问题
|
||
rm -rf ./letsencrypt/accounts
|
||
docker run --rm \
|
||
--entrypoint /bin/bash \
|
||
-e REGION="$REGION" \
|
||
-e ACCESS_KEY_ID="$ACCESS_KEY_ID" \
|
||
-e ACCESS_KEY_SECRET="$ACCESS_KEY_SECRET" \
|
||
-e DOMAIN="$DOMAIN" \
|
||
-e EMAIL="$EMAIL" \
|
||
-v "./letsencrypt:/etc/letsencrypt" \
|
||
-v "./certs:/app/certs" \
|
||
-v "./logs:/var/log/certbot" \
|
||
hotwa/certbot:latest \
|
||
-c 'source /opt/venv/bin/activate && aliyun configure set --profile akProfile --mode AK --region "$REGION" --access-key-id "$ACCESS_KEY_ID" --access-key-secret "$ACCESS_KEY_SECRET" && certbot certonly -d "$DOMAIN" --manual --preferred-challenges dns --manual-auth-hook "/usr/local/bin/alidns" --manual-cleanup-hook "/usr/local/bin/alidns clean" --agree-tos --email "$EMAIL" --non-interactive'
|
||
|
||
echo ">>> 启动 derper 服务"
|
||
docker compose up -d
|
||
echo ">>> derper up OK"
|
||
|
||
echo "crontab 添加任务选项(请根据实际需求选择,复制到 crontab 即可):"
|
||
echo
|
||
echo "【每周一凌晨 2 点执行】"
|
||
echo "0 2 * * 1 $WORKDIR/../renew_derper.sh $WORKDIR $DOMAIN >> /var/log/renew_derper.log 2>&1"
|
||
echo
|
||
echo "【每月 1 号凌晨 2 点执行】"
|
||
echo "0 2 1 * * $WORKDIR/../renew_derper.sh $WORKDIR $DOMAIN >> /var/log/renew_derper.log 2>&1"
|
||
|
||
echo ">>> 当前容器日志"
|
||
docker compose logs |