thread-master/deploy/setup.sh

109 lines
3.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
OUTPUT="$SCRIPT_DIR/.env.prod"
echo "=============================================="
echo " 巡樓 Prod 環境設定"
echo "=============================================="
echo ""
# --- Mongo ---
read -p "Mongo root password (留空自動產生): " MONGO_ROOT_PASSWORD
if [ -z "$MONGO_ROOT_PASSWORD" ]; then
MONGO_ROOT_PASSWORD=$(openssl rand -base64 32)
echo " 自動產生: $MONGO_ROOT_PASSWORD"
fi
MONGO_ROOT_PASSWORD_ENCODED=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$MONGO_ROOT_PASSWORD', safe=''))")
# --- Redis ---
read -p "Redis password (留空自動產生): " REDIS_PASSWORD
if [ -z "$REDIS_PASSWORD" ]; then
REDIS_PASSWORD=$(openssl rand -base64 32)
echo " 自動產生: $REDIS_PASSWORD"
fi
# --- Admin ---
read -p "Admin email [admin@example.com]: " ADMIN_EMAIL
ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
while true; do
read -sp "Admin password (至少 8 字): " ADMIN_PASSWORD
echo ""
if [ ${#ADMIN_PASSWORD} -ge 8 ]; then
break
fi
echo " 密碼太短,再試一次"
done
# --- Secrets (auto-generate) ---
JWT_ACCESS_SECRET=$(openssl rand -base64 48)
JWT_REFRESH_SECRET=$(openssl rand -base64 48)
WORKER_SECRET=$(openssl rand -base64 48)
SECRETS_KEY=$(openssl rand -base64 32)
# --- Write .env.prod ---
cat > "$OUTPUT" << ENDOFFILE
# 巡樓 Prod 環境(由 deploy/setup.sh 自動產生,請勿手動編輯)
# infra composeMongo / Redis 容器,與下方 HAIXUN_MONGO_URI / HAIXUN_REDIS_PASSWORD 密碼一致)
MONGO_PORT=27017
MONGO_ROOT_USER=haixun
MONGO_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
MONGO_DATABASE=haixun
REDIS_PORT=6379
REDIS_PASSWORD=${REDIS_PASSWORD}
# app compose
WEB_IMAGE=ghcr.io/kupi-cat/haixun-web
WEB_TAG=v0.0.1
BACKEND_IMAGE=ghcr.io/kupi-cat/haixun-backend
BACKEND_TAG=v0.0.1
NODE_WORKER_IMAGE=ghcr.io/kupi-cat/haixun-node-worker
NODE_WORKER_TAG=v0.0.1
WEB_PORT=80
HAIXUN_MONGO_URI=mongodb://haixun:${MONGO_ROOT_PASSWORD_ENCODED}@mongo:27017/?authSource=admin
HAIXUN_MONGO_DB=haixun
HAIXUN_REDIS_ADDR=redis:6379
HAIXUN_REDIS_PASSWORD=${REDIS_PASSWORD}
HAIXUN_JWT_ACCESS_SECRET=${JWT_ACCESS_SECRET}
HAIXUN_JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET}
HAIXUN_WORKER_SECRET=${WORKER_SECRET}
HAIXUN_SECRETS_KEY=${SECRETS_KEY}
THREADS_APP_ID=
THREADS_APP_SECRET=
THREADS_REDIRECT_URI=http://your-domain.example/api/v1/threads-accounts/oauth/callback
THREADS_OAUTH_SUCCESS_REDIRECT=http://your-domain.example
INIT_TENANT_ID=default
INIT_ADMIN_EMAIL=${ADMIN_EMAIL}
INIT_ADMIN_PASSWORD=${ADMIN_PASSWORD}
INIT_ADMIN_DISPLAY_NAME=Admin
HAIXUN_WORKER_POLL_MS=3000
HAIXUN_8D_TARGET_SAMPLES=4
# Worker / sweeper 行為
HAIXUN_JOB_SCHEDULER_ENABLED=false
HAIXUN_JOB_SCHEDULER_INTERVAL_SECONDS=60
HAIXUN_JOB_REAPER_ENABLED=false
HAIXUN_JOB_REAPER_INTERVAL_SECONDS=30
HAIXUN_THREADS_TOKEN_REFRESH_ENABLED=false
HAIXUN_THREADS_TOKEN_REFRESH_INTERVAL_SECONDS=3600
HAIXUN_THREADS_TOKEN_REFRESH_LEAD_DAYS=7
HAIXUN_THREADS_PUBLISH_QUEUE_ENABLED=false
HAIXUN_THREADS_PUBLISH_QUEUE_INTERVAL_SECONDS=60
HAIXUN_THREADS_PUBLISH_QUEUE_BATCH_SIZE=20
ENDOFFILE
echo ""
echo "=============================================="
echo " 已完成!產出: $OUTPUT"
echo " 接著執行: make prod-infra && make prod-install"
echo "=============================================="