chore: restore initial vtuber source snapshot

This commit is contained in:
ogt
2026-07-03 00:36:01 +08:00
commit 17f0c8c8ff
85 changed files with 7677 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ENV_FILE="${SCRIPT_DIR}/.env.prod"
if [ ! -f "${ENV_FILE}" ]; then
echo "❌ 找不到 deploy/.env.prod請先建立後再執行。"
exit 1
fi
source "${ENV_FILE}"
DEPLOY_HOST="${DEPLOY_HOST:-}"
DEPLOY_USER="${DEPLOY_USER:-}"
DEPLOY_PORT="${DEPLOY_PORT:-22}"
APP_DOMAIN="${APP_DOMAIN:-vtuber.wooo.work}"
NGINX_SERVER_CONFIG="${NGINX_SERVER_CONFIG:-}"
SNIPPET_SRC="${SCRIPT_DIR}/vtuber-nginx-110-live-fallback.conf"
SNIPPET_REMOTE="/etc/nginx/snippets/vtuber-nginx-110-live-fallback.conf"
if [ -z "${DEPLOY_HOST}" ] || [ -z "${DEPLOY_USER}" ]; then
echo "❌ deploy/.env.prod 缺少 DEPLOY_HOST / DEPLOY_USER"
exit 1
fi
REMOTE="${DEPLOY_USER}@${DEPLOY_HOST}"
SSH_OPTS=(-p "${DEPLOY_PORT}")
SCP_OPTS=(-P "${DEPLOY_PORT}")
NGINX_SNIPPET_TAG="vtuber-nginx-110-live-fallback.conf"
TMP_SNIPPET="/tmp/vtuber-nginx-110-live-fallback.conf"
if [ -z "${NGINX_SERVER_CONFIG}" ]; then
echo "未指定 NGINX_SERVER_CONFIG開始自動偵測..."
NGINX_SERVER_CONFIG="$(
ssh "${SSH_OPTS[@]}" "${REMOTE}" "
if [ -f '/etc/nginx/conf.d/vtuber.wooo.conf' ]; then
echo '/etc/nginx/conf.d/vtuber.wooo.conf'
elif [ -f \"/etc/nginx/sites-available/${APP_DOMAIN}\" ]; then
echo '/etc/nginx/sites-available/${APP_DOMAIN}'
elif [ -f '/etc/nginx/sites-enabled/vtuber.wooo.work' ]; then
echo '/etc/nginx/sites-enabled/vtuber.wooo.work'
else
grep -R -l \"server_name[[:space:]]\\+.*${APP_DOMAIN}\" /etc/nginx/sites-enabled /etc/nginx/sites-available /etc/nginx/conf.d 2>/dev/null | head -n 1
fi
"
)"
fi
if [ -z "${NGINX_SERVER_CONFIG}" ]; then
echo "❌ 無法自動找出 vtuber 的 nginx 設定檔,請手動指定 NGINX_SERVER_CONFIG 環境變數"
exit 1
fi
echo "目標主機:${REMOTE}"
echo "目標網域:${APP_DOMAIN}"
echo "目標 Nginx 設定:${NGINX_SERVER_CONFIG}"
ssh "${SSH_OPTS[@]}" "${REMOTE}" "test -f '${SNIPPET_REMOTE}' && sudo chmod 644 '${SNIPPET_REMOTE}' || true"
ssh "${SSH_OPTS[@]}" "${REMOTE}" "test -f '${NGINX_SERVER_CONFIG}' || { echo 'Nginx 設定檔不存在:${NGINX_SERVER_CONFIG}' >&2; exit 1; }"
scp "${SCP_OPTS[@]}" "${SNIPPET_SRC}" "${REMOTE}:${TMP_SNIPPET}"
ssh "${SSH_OPTS[@]}" "${REMOTE}" "sudo cp '${TMP_SNIPPET}' '${SNIPPET_REMOTE}' && sudo chmod 644 '${SNIPPET_REMOTE}'"
ssh "${SSH_OPTS[@]}" "${REMOTE}" "
set -euo pipefail
sudo cp '${NGINX_SERVER_CONFIG}' '${NGINX_SERVER_CONFIG}.bak.\$(date +%F_%H%M%S)'
if ! sudo grep -q '${NGINX_SNIPPET_TAG}' '${NGINX_SERVER_CONFIG}'; then
sudo sed -i '/^[[:space:]]*server_name[[:space:]]\\+[^;]*;/ a\\
include /etc/nginx/snippets/vtuber-nginx-110-live-fallback.conf;\\
' '${NGINX_SERVER_CONFIG}'
fi
sudo nginx -t
if command -v systemctl >/dev/null 2>&1; then
sudo systemctl reload nginx
else
sudo service nginx reload
fi
"
echo "✅ 110 Nginx 404 fallback 已提交。"