migrate/api/worker/frontend now reference
git.devils.zone/devil/youtube-studio-flow-{backend,frontend}:\${IMAGE_TAG}
instead of building on the deploy host. Adds scripts/build-and-push.sh
to build+tag (git short SHA + latest) and push both images from a dev
machine, and updates infrastructure/README.md with the pull-based
deploy sequence.
43 lines
2.9 KiB
Bash
43 lines
2.9 KiB
Bash
# ─── Domain ───────────────────────────────────────────────────────────────────
|
|
# The public domain Traefik routes to this app (no https://, no trailing slash).
|
|
DOMAIN=yourdomain.com
|
|
|
|
# ─── Image tag ────────────────────────────────────────────────────────────────
|
|
# Which tag to pull from git.devils.zone/devil/youtube-studio-flow-{backend,frontend}.
|
|
# Pin to a git short SHA or release tag for reproducible deploys; `latest` tracks
|
|
# whatever scripts/build-and-push.sh last pushed.
|
|
IMAGE_TAG=latest
|
|
|
|
# ─── Postgres ─────────────────────────────────────────────────────────────────
|
|
POSTGRES_USER=studioflow
|
|
POSTGRES_PASSWORD=change_me_strong_password
|
|
POSTGRES_DB=studioflow
|
|
|
|
# ─── Redis ────────────────────────────────────────────────────────────────────
|
|
REDIS_PASSWORD=change_me_strong_password
|
|
|
|
# ─── JWT secrets (generate with: openssl rand -base64 48) ─────────────────────
|
|
JWT_SECRET=change_me_min_32_chars_xxxxxxxxxxxxxxxxxx
|
|
JWT_REFRESH_SECRET=change_me_min_32_chars_refresh_xxxxxxxx
|
|
|
|
# ─── YouTube token encryption — MUST be exactly 32 characters ─────────────────
|
|
# Generate with: openssl rand -hex 16
|
|
TOKEN_ENCRYPTION_KEY=change_me_exactly_32chars_key_xxxx
|
|
|
|
# ─── Google OAuth / YouTube API ───────────────────────────────────────────────
|
|
# Create OAuth 2.0 credentials at https://console.cloud.google.com/
|
|
# Authorised redirect URI must match GOOGLE_CALLBACK_URL exactly.
|
|
GOOGLE_CLIENT_ID=your_client_id.apps.googleusercontent.com
|
|
GOOGLE_CLIENT_SECRET=your_client_secret
|
|
GOOGLE_CALLBACK_URL=https://yourdomain.com/api/v1/auth/google/callback
|
|
|
|
# ─── App URLs ─────────────────────────────────────────────────────────────────
|
|
# Public URL of the frontend — used by the API for CORS.
|
|
FRONTEND_URL=https://yourdomain.com
|
|
|
|
# ─── Conflict detection (worker) ──────────────────────────────────────────────
|
|
# Global kill switch for the scheduled remote-conflict sweep.
|
|
# Per-team opt-in and batch limits are configured in Team settings.
|
|
CONFLICT_DETECTION_ENABLED=false
|
|
CONFLICT_DETECTION_CRON=0 3 * * *
|