You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器环境下Certbot SSL证书自动续期脚本失效问题排查

解决Certbot自动续期脚本无法运行的问题

常见问题排查与修复步骤

1. 脚本权限与工作目录问题

  • 先给脚本添加可执行权限:
    chmod +x ssl_renew.sh
    
  • 脚本执行时默认不会自动切换到docker-compose.yml所在目录,必须在脚本开头指定工作目录,比如你的配置文件在/opt/my-app下,脚本第一行写:
    cd /opt/my-app || exit 1
    
    (|| exit 1保证切换目录失败时直接退出,避免后续命令执行出错)

2. 使用Docker命令的绝对路径

crontab的环境变量PATH可能不包含Docker的安装路径,所以脚本里的Docker命令要用绝对路径。先执行which docker找到路径(比如/usr/bin/docker),然后修改脚本里的命令:

/usr/bin/docker compose run certbot renew --dry-run

3. 调试脚本与Crontab日志

  • 先手动执行脚本,确认是否能正常运行:
    ./ssl_renew.sh
    
    如果报错,直接根据输出排查问题。
  • 修改crontab配置,添加日志输出,方便定位错误:
    0 3 * * * /path/to/ssl_renew.sh >> /var/log/certbot_renew.log 2>&1
    
    (每天凌晨3点执行,所有输出包括错误都会写入日志文件)

4. 完善脚本功能(可选)

如果证书续期成功后需要重启Nginx生效,在脚本里添加重启命令:

# 续期命令
/usr/bin/docker compose run certbot renew --dry-run
# 检查续期是否成功,成功则重启Nginx
if [ $? -eq 0 ]; then
  /usr/bin/docker compose restart nginx
fi

5. Crontab环境变量配置

如果还是有问题,在crontab开头指定完整的PATH环境变量:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 3 * * * /path/to/ssl_renew.sh >> /var/log/certbot_renew.log 2>&1

内容的提问来源于stack exchange,提问作者4ctive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:52:11