chore: initial import
这个提交包含在:
58
deploy.sh
普通文件
58
deploy.sh
普通文件
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
DOMAIN="reserve.xn--15t503c5up.com"
|
||||
EMAIL="admin@${DOMAIN}"
|
||||
DEPLOY_DIR="/root/android-resever"
|
||||
|
||||
echo "=========================================="
|
||||
echo " Android RE Wiki 部署脚本"
|
||||
echo " 域名: ${DOMAIN}"
|
||||
echo "=========================================="
|
||||
|
||||
cd "${DEPLOY_DIR}"
|
||||
|
||||
# Ensure LLM proxy environment file exists
|
||||
if [ ! -f ".env" ]; then
|
||||
echo "❌ 缺少 .env 文件,请先配置 LLM_BASE_URL / LLM_API_KEY"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Step 1: 启动 Nginx(HTTP only,用于 ACME 验证)
|
||||
echo "[1/5] 启动 Nginx (HTTP) + LLM Proxy..."
|
||||
cp nginx/conf.d/default.conf nginx/conf.d/active.conf
|
||||
docker compose up -d nginx llm-proxy
|
||||
sleep 3
|
||||
|
||||
# Step 2: 申请 Let's Encrypt 证书
|
||||
echo "[2/5] 申请 SSL 证书..."
|
||||
docker compose run --rm certbot certonly \
|
||||
--webroot \
|
||||
--webroot-path=/var/www/certbot \
|
||||
--email "${EMAIL}" \
|
||||
--agree-tos \
|
||||
--no-eff-email \
|
||||
--force-renewal \
|
||||
-d "${DOMAIN}"
|
||||
|
||||
# Step 3: 切换到 HTTPS 配置
|
||||
echo "[3/5] 切换到 HTTPS 配置..."
|
||||
cp nginx/conf.d/default-ssl.conf nginx/conf.d/active.conf
|
||||
|
||||
# Step 4: 重载 Nginx
|
||||
echo "[4/5] 重载 Nginx 使用 HTTPS..."
|
||||
docker compose restart nginx
|
||||
sleep 3
|
||||
|
||||
# Step 5: 验证
|
||||
echo "[5/5] 验证服务状态..."
|
||||
docker compose ps
|
||||
echo ""
|
||||
echo "✅ 部署完成!"
|
||||
echo " 访问: https://${DOMAIN}"
|
||||
echo ""
|
||||
|
||||
# 设置证书自动续期 cron
|
||||
echo "[+] 设置证书自动续期..."
|
||||
(crontab -l 2>/dev/null; echo "0 3 * * * cd ${DEPLOY_DIR} && docker compose run --rm certbot renew --quiet && docker compose exec nginx nginx -s reload") | sort -u | crontab -
|
||||
echo "✅ 自动续期已配置 (每天 03:00 检查)"
|
||||
在新工单中引用
屏蔽一个用户