#!/bin/bash # Certbot 部署钩子脚本 # 当证书申请或续期成功后,自动同步到 APISIX set -e # 配置 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SSL_MANAGER="${SCRIPT_DIR}/ssl_manager.py" LOG_FILE="/var/log/apisix-certbot-deploy.log" # 日志函数 log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE" } # 获取域名(从 certbot 环境变量) DOMAIN="${RENEWED_DOMAINS%% *}" if [ -z "$DOMAIN" ]; then # 尝试从证书路径获取 if [ -n "$RENEWED_LINEAGE" ]; then DOMAIN=$(basename "$RENEWED_LINEAGE") else log "错误: 无法获取域名" exit 1 fi fi log "开始部署证书到 APISIX: $DOMAIN" # 调用 SSL 管理器同步证书 if python3 "$SSL_MANAGER" sync --domain "$DOMAIN"; then log "证书部署成功: $DOMAIN" exit 0 else log "证书部署失败: $DOMAIN" exit 1 fi