PDF / entrypoint.sh
BirkhoffLee's picture
fix: 修复了 pdf2zh 的端口问题
860be47 unverified
raw
history blame
1.98 kB
#!/usr/bin/env bash
set -euo pipefail
# 解析 HF Secret,支持多行或 \n 形式
RAW_USERS="${BASIC_AUTH_USERS:-}"
if [[ -z "${RAW_USERS}" ]]; then
echo "[ERROR] BASIC_AUTH_USERS is required. Use one 'username:password' per line." >&2
exit 1
fi
RAW_USERS="${RAW_USERS//\\n/$'\n'}"
AUTH_FILE="/etc/caddy/users.auth"
> "${AUTH_FILE}"
chmod 600 "${AUTH_FILE}"
# 逐行生成 caddy 可用的哈希密码
while IFS= read -r line || [[ -n "${line}" ]]; do
line="${line%$'\r'}"
[[ -z "${line}" ]] && continue
[[ "${line}" == \#* ]] && continue
if [[ "${line}" != *:* ]]; then
echo "[ERROR] Invalid BASIC_AUTH_USERS line: '${line}'" >&2
exit 1
fi
user="${line%%:*}"
pass="${line#*:}"
if [[ -z "${user}" || -z "${pass}" ]]; then
echo "[ERROR] Empty username or password is not allowed: '${line}'" >&2
exit 1
fi
hash="$(caddy hash-password --plaintext "${pass}")"
printf "%s %s\n" "${user}" "${hash}" >> "${AUTH_FILE}"
done <<< "${RAW_USERS}"
if [[ ! -s "${AUTH_FILE}" ]]; then
echo "[ERROR] No valid user entries found in BASIC_AUTH_USERS." >&2
exit 1
fi
# 固定内部监听,确保只能经由 caddy 访问
export GRADIO_SERVER_NAME="${GRADIO_SERVER_NAME:-127.0.0.1}"
export GRADIO_SERVER_PORT="${GRADIO_SERVER_PORT:-7861}"
# 一些 gradio 应用会优先读取 PORT;这里强制覆盖避免与 caddy 的 7860 冲突
export PORT="${GRADIO_SERVER_PORT}"
echo "[INFO] Starting pdf2zh_next on ${GRADIO_SERVER_NAME}:${GRADIO_SERVER_PORT}"
pdf2zh_next --gui --server-port "${GRADIO_SERVER_PORT}" &
PDF_PID=$!
echo "[INFO] Starting caddy on :7860"
caddy run --config /etc/caddy/Caddyfile &
CADDY_PID=$!
cleanup() {
kill "${PDF_PID}" "${CADDY_PID}" 2>/dev/null || true
}
trap cleanup INT TERM EXIT
# 任一进程退出都结束容器
set +e
wait -n "${PDF_PID}" "${CADDY_PID}"
EXIT_CODE=$?
set -e
echo "[ERROR] A service exited unexpectedly. Shutting down."
exit "${EXIT_CODE}"