fix build

This commit is contained in:
jxxghp
2025-04-17 12:44:22 +08:00
parent 59c09681cb
commit ff13045f52
2 changed files with 48 additions and 20 deletions
+45 -17
View File
@@ -18,41 +18,65 @@ function WARN() {
echo -e "${WARN} ${1}" echo -e "${WARN} ${1}"
} }
# 仅当启用HTTPS且需要自动签发时执行 # 核心条件验证
if [ "$ENABLE_SSL" = "true" ] && [ "$AUTO_ISSUE_CERT" = "true" ]; then if [ "$ENABLE_SSL" = "true" ] && \
[ "$AUTO_ISSUE_CERT" = "true" ] && \
[ -n "$SSL_DOMAIN" ]; then
INFO "▄■▀▄■▀▄■▀▄■▀▄■▀ 证书管理开始 ▀■▄▀■▄▀■▄▀■▄▀■▄" INFO "▄■▀▄■▀▄■▀▄■▀▄■▀ 证书管理开始 ▀■▄▀■▄▀■▄▀■▄▀■▄"
# 创建证书目录 # 创建证书目录
mkdir -p /config/certs/"${SSL_DOMAIN}" mkdir -p /config/certs/"${SSL_DOMAIN}"
chown moviepilot:moviepilot /config/certs -R chown moviepilot:moviepilot /config/certs -R
# 安装acme.sh # 安装acme.sh(使用官方安装脚本)
if [ ! -d "/config/acme.sh" ]; then if [ ! -d "/config/acme.sh" ]; then
INFO "→ 安装acme.sh..." INFO "→ 安装acme.sh..."
git clone https://github.com/acmesh-official/acme.sh.git /config/acme.sh
cd /config/acme.sh # 生成安装参数
./acme.sh --install --home /config/acme.sh \ INSTALL_ARGS=(
--config-home /config/acme.sh/data \ "--install-online"
--cert-home /config/certs \ "--home" "/config/acme.sh"
--accountemail "${SSL_EMAIL}" "--config-home" "/config/acme.sh/data"
"--cert-home" "/config/certs"
)
# 添加邮箱参数(如果设置)
if [ -n "$SSL_EMAIL" ]; then
INSTALL_ARGS+=("--accountemail" "$SSL_EMAIL")
else
WARN "未设置SSL_EMAIL,建议配置邮箱用于证书过期提醒"
fi
# 执行官方安装命令
curl -sSL https://get.acme.sh | sh -s -- "${INSTALL_ARGS[@]}"
fi fi
# 签发证书(仅当证书不存在时) # 签发证书(仅当证书不存在时)
if [ ! -f "/config/certs/${SSL_DOMAIN}/fullchain.pem" ]; then if [ ! -f "/config/certs/${SSL_DOMAIN}/fullchain.pem" ]; then
# 检查必要参数 # 必要参数检查
[ -z "${DNS_PROVIDER}" ] && { ERROR "必须指定DNS_PROVIDER环境变量"; exit 1; } REQUIRED_VARS=("DNS_PROVIDER")
[ -z "${SSL_DOMAIN}" ] && { ERROR "必须指定SSL_DOMAIN环境变量"; exit 1; } for var in "${REQUIRED_VARS[@]}"; do
eval "value=\${${var}}"
[ -z "$value" ] && { ERROR "必须设置环境变量: ${var}"; exit 1; }
done
INFO "→ 签发证书: ${SSL_DOMAIN} (DNS验证方式: ${DNS_PROVIDER})" INFO "→ 签发证书: ${SSL_DOMAIN} (DNS验证方式: ${DNS_PROVIDER})"
# 导出所有ACME_ENV_开头的环境变量(自动去除前缀 # 加载ACME环境变量(带安全过滤
INFO "正在加载ACME环境变量..." INFO "正在加载ACME环境变量..."
for acme_var in $(env | grep '^ACME_ENV_'); do env | grep '^ACME_ENV_' | while read -r line; do
key="${acme_var#ACME_ENV_}" key="${line#ACME_ENV_}"
key="${key%%=*}" key="${key%%=*}"
value="${acme_var#ACME_ENV_${key}=}" value="${line#ACME_ENV_${key}=}"
export "${key}=${value}"
# 过滤非法变量名
if [[ "$key" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then
export "$key"="$value"
INFO "已加载环境变量: ${key}=******" INFO "已加载环境变量: ${key}=******"
else
WARN "跳过无效变量名: ${key}"
fi
done done
# 签发证书 # 签发证书
@@ -61,6 +85,7 @@ if [ "$ENABLE_SSL" = "true" ] && [ "$AUTO_ISSUE_CERT" = "true" ]; then
--domain "${SSL_DOMAIN}" \ --domain "${SSL_DOMAIN}" \
--key-file /config/certs/"${SSL_DOMAIN}"/privkey.pem \ --key-file /config/certs/"${SSL_DOMAIN}"/privkey.pem \
--fullchain-file /config/certs/"${SSL_DOMAIN}"/fullchain.pem \ --fullchain-file /config/certs/"${SSL_DOMAIN}"/fullchain.pem \
--reloadcmd "nginx -s reload" \
--force --force
# 创建稳定符号链接 # 创建稳定符号链接
@@ -74,4 +99,7 @@ if [ "$ENABLE_SSL" = "true" ] && [ "$AUTO_ISSUE_CERT" = "true" ]; then
service cron start service cron start
INFO "▄■▀▄■▀▄■▀▄■▀▄■▀ 证书管理完成 ▀■▄▀■▄▀■▄▀■▄▀■▄" INFO "▄■▀▄■▀▄■▀▄■▀▄■▀ 证书管理完成 ▀■▄▀■▄▀■▄▀■▄▀■▄"
elif [ "$ENABLE_SSL" = "true" ] && [ "$AUTO_ISSUE_CERT" = "true" ] && [ -z "$SSL_DOMAIN" ]; then
WARN "已启用自动签发证书但未设置SSL_DOMAIN,跳过证书管理"
fi fi
+2 -2
View File
@@ -32,8 +32,8 @@ if [ "$ENABLE_SSL" = "true" ]; then
server_name ${SSL_DOMAIN:-moviepilot}; server_name ${SSL_DOMAIN:-moviepilot};
# SSL证书路径 # SSL证书路径
ssl_certificate /etc/ssl/certs/latest/fullchain.pem; ssl_certificate /config/certs/latest/fullchain.pem;
ssl_certificate_key /etc/ssl/certs/latest/privkey.pem; ssl_certificate_key /config/certs/latest/privkey.pem;
# SSL安全配置 # SSL安全配置
ssl_protocols TLSv1.2 TLSv1.3; ssl_protocols TLSv1.2 TLSv1.3;