프로덕션에서 시크릿을 이미지에 굽지 않고 env 로 주입, 재시작 시 챌린지 쿠키 유지. - server_configs: 시크릿 env override 추가(house 의 DB override 패턴 확장) — OPENAI_API_KEY/MODEL, DECODO_HOST/USERNAME/PASSWORD/COST_PER_GB, NAVER_KEYS="id:sec,...". 로컬은 env 미설정 → config.local.toml 그대로. - worker_main: Chrome 프로필 경로를 LPS_PROFILE_DIR(기본 /tmp)로 env 화 → 영속 볼륨 마운트 가능. - docker-compose: lps-worker 에 lps-profiles 볼륨(/profiles) + 시크릿 env 주입 주석 예시. - config.example: 프로덕션 env 주입 목록 문서화. 검증: env override 동작(OpenAI/DECODO/Naver), 프로필이 /profiles 볼륨에 Cookies 포함 저장(cf_clearance 유지). 89 tests. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
70 lines
2.8 KiB
Plaintext
70 lines
2.8 KiB
Plaintext
# 복사해서 사용: cp config.local.toml.example config.local.toml
|
|
# 실제 config.local.toml 은 시크릿 포함이라 커밋하지 않는다(.gitignore: *.toml).
|
|
# 모든 서버는 APP_ENV=local 로 띄우며 이 파일을 읽는다.
|
|
#
|
|
# ── 프로덕션: 시크릿을 이미지에 굽지 말고 env 로 주입(server_configs 가 override) ──
|
|
# DB_HOST / DB_PORT / DB_USER / DB_PASSWORD / DB_NAME
|
|
# OPENAI_API_KEY / OPENAI_MODEL
|
|
# DECODO_HOST / DECODO_USERNAME / DECODO_PASSWORD / DECODO_COST_PER_GB
|
|
# NAVER_KEYS="id1:secret1,id2:secret2"
|
|
# LPS_PROFILE_DIR=/profiles (Chrome 프로필 영속 볼륨), LPS_CHROME_EXECUTABLE=/usr/bin/chromium
|
|
# → 배포 시엔 아래 시크릿 값을 비워두고 위 env 로 채우면 이미지에 시크릿이 안 남는다.
|
|
[WebServerConfig]
|
|
server_name = "LpsServer"
|
|
port = 9600
|
|
process_count = 1
|
|
is_ssl = false
|
|
is_test = true
|
|
# CORS 허용 오리진(프론트). 비우면 [] (CORS 미적용). 5173=vite dev.
|
|
cors_origins = ["http://localhost:5173", "http://127.0.0.1:5173"]
|
|
|
|
[LogConfig]
|
|
print_console = true
|
|
log_level = "debug"
|
|
|
|
# DB Read/Write 분리. 도커 실행 시 host 는 docker-compose 의 DB_HOST 로 override.
|
|
# 관리형 DB(RDS/Aurora/Azure)는 host 에 엔드포인트, sslmode="require".
|
|
# LPS 도메인 로직/테이블이 생기기 전까지는 접속하지 않으므로(엔진 lazy) placeholder 여도 부팅된다.
|
|
[MainDBConfig]
|
|
db_type = "postgresql"
|
|
name = "lps_db"
|
|
write_host = "127.0.0.1"
|
|
write_port = 5432
|
|
write_id = "<DB_USER>"
|
|
write_pw = "<DB_PASSWORD>"
|
|
read_host = "127.0.0.1"
|
|
read_port = 5432
|
|
read_id = "<DB_USER>"
|
|
read_pw = "<DB_PASSWORD>"
|
|
show_log = false
|
|
pool_size = 10
|
|
max_overflow = 20
|
|
sslmode = "" # 로컬: "" / 관리형 DB: "require"|"verify-ca"|"verify-full"
|
|
|
|
# ── 시크릿(API 키 등)도 이 파일에서 통합 관리 (미커밋). 배포는 이 파일 마운트 권장. ──
|
|
|
|
# 네이버 쇼핑 오픈API (https://developers.naver.com/apps). 여러 개면 429/403 로테이션 자동 포함.
|
|
[NaverConfig]
|
|
[[NaverConfig.keys]]
|
|
id = "<NAVER_CLIENT_ID>"
|
|
secret = "<NAVER_CLIENT_SECRET>"
|
|
# 추가 키는 아래처럼 블록을 더 넣으면 됨:
|
|
# [[NaverConfig.keys]]
|
|
# id = "..."
|
|
# secret = "..."
|
|
|
|
# AI 유사도 판정/검색어 생성 (OpenAI)
|
|
[OpenAIConfig]
|
|
api_key = "<OPENAI_API_KEY>"
|
|
model = "gpt-4o-mini"
|
|
|
|
# DECODO residential 프록시 (쿠팡 전용, 포트기반 sticky). 값 다 채우면 활성(비면 프록시 미사용).
|
|
[DecodoConfig]
|
|
host = "" # 예: gate.decodo.com
|
|
username = "" # 대시보드 USERNAME (예: sppd6a3ze3)
|
|
password = "" # 대시보드 PASSWORD
|
|
port_start = 0 # 예: 10001
|
|
port_end = 0 # 예: 10010
|
|
session_minutes = 10 # 대시보드 Sticky 지속시간(분)과 일치
|
|
cost_per_gb = 0.0 # DECODO 요금($/GB) — 검색 원가의 대역폭 비용 산정용(플랜에 맞게, 예 3.0)
|