c5a8fc8697
운영에서 LiveKit(SFU)을 직접 호스팅하기 위한 구성과 배포 가이드를 추가한다. 실제 배포는 서버/도메인/TLS 가 필요하므로, 클론 후 값만 채워 배포하는 템플릿 형태. - docker-compose.yml: livekit 서비스를 opt-in 프로파일(selfhost-livekit)로 추가. 기존 dev/운영 동작 불변(프로파일 미지정 시 미생성). 시그널링 7880 은 expose(프록시 TLS 라우팅), 미디어 7881/tcp·7882/udp 는 호스트 공개. 키는 LIVEKIT_KEYS env 주입. - livekit/livekit.prod.yaml: 단일 노드 운영 설정(use_external_ip, tcp/udp 포트). 클러스터링용 redis 블록은 비밀값이라 주석으로 두고 배포 시 사본에 채움. - .env.production.example: LIVEKIT_* 섹션(셀프호스팅/ Cloud 양쪽 안내). - livekit/DEPLOY.md: 사전준비/키생성/기동/프록시(wss)/방화벽/검증(load-test)/ 멀티노드 클러스터링(Redis·캐스케이딩)/운영팁. - .gitignore: livekit/*.local.yaml(클러스터 설정 사본) 제외. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
68 lines
2.6 KiB
Bash
68 lines
2.6 KiB
Bash
# ==========================================
|
|
# 루트 .env (production) — 모든 설정의 단일 진실 공급원(SSOT)
|
|
# docker-compose 가 이 값을 backend/frontend/db/redis 에 주입한다.
|
|
# .example 을 복사해 만들고 실제 값으로 채운다. (커밋 금지)
|
|
# ==========================================
|
|
|
|
# ==========================================
|
|
# 프로젝트 전역
|
|
# ==========================================
|
|
PROJECT_NAME=comrelay
|
|
APP_ENV=production
|
|
BUILD_MODE=production
|
|
FRONTEND_DIR=frontend
|
|
BACKEND_DIR=backend
|
|
|
|
# ==========================================
|
|
# 포트
|
|
# ==========================================
|
|
FRONTEND_PORT=80
|
|
BACKEND_PORT=3000
|
|
WEBSOCKET_PORT=3001
|
|
DB_PORT=5432
|
|
REDIS_PORT=6379
|
|
|
|
# ==========================================
|
|
# Database (PostgreSQL)
|
|
# ==========================================
|
|
DB_IMAGE=postgres:15-alpine
|
|
DB_USER=prd_ttipo
|
|
DB_PASSWORD=change-me-db-password
|
|
DB_NAME=comrelay_db
|
|
DB_DATA_DIR=./data/postgres
|
|
|
|
# ==========================================
|
|
# Redis
|
|
# ==========================================
|
|
REDIS_IMAGE=redis:7-alpine
|
|
REDIS_PASSWORD=change-me-redis-password
|
|
REDIS_DATA_DIR=./data/redis
|
|
|
|
# ==========================================
|
|
# API 경로
|
|
# ==========================================
|
|
# BACKEND_API_URL: 프론트 빌드에 주입(VITE_API_BASE_URL) — 운영 도메인으로 교체
|
|
# CORS_ORIGIN : 백엔드가 허용할 프론트 오리진 — 운영 도메인으로 교체
|
|
BACKEND_API_URL=http://localhost:3000/api
|
|
CORS_ORIGIN=http://localhost:5173
|
|
|
|
# ==========================================
|
|
# AI (백엔드·프론트 공통)
|
|
# ==========================================
|
|
# AI_TIMEOUT_MS: AI 요청 타임아웃(ms). 백엔드 Claude 호출 abort + 프론트 axios 에 동일 적용.
|
|
# 프론트에는 build arg VITE_AI_TIMEOUT_MS 로 주입된다.
|
|
AI_TIMEOUT_MS=60000
|
|
|
|
# ==========================================
|
|
# 화상회의 (LiveKit) — 셀프호스팅 또는 Cloud
|
|
# ==========================================
|
|
# [셀프호스팅] livekit/DEPLOY.md 참고. selfhost-livekit 프로파일로 컨테이너 기동.
|
|
# LIVEKIT_WS_URL : 브라우저 접속(리버스 프록시 TLS) → wss://livekit.<운영도메인>
|
|
# LIVEKIT_URL : 백엔드 → LiveKit 내부 API(도커 네트워크) → http://livekit:7880
|
|
# [Cloud] LIVEKIT_WS_URL/URL 을 wss://<project>.livekit.cloud 로, 키를 Cloud 값으로.
|
|
# LIVEKIT_API_SECRET 은 충분히 강력하게(최소 32자).
|
|
LIVEKIT_API_KEY=change-me-livekit-key
|
|
LIVEKIT_API_SECRET=change-me-livekit-secret-min-32-characters
|
|
LIVEKIT_WS_URL=wss://livekit.example.com
|
|
LIVEKIT_URL=http://livekit:7880
|