109 lines
3.3 KiB
Bash
109 lines
3.3 KiB
Bash
|
|
#!/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 compose(Mongo / 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 "=============================================="
|