Bebe MomentBebe Moment

환경변수 레퍼런스

시크릿은 항상 런타임 env(compose environment: / Synology Container Manager 환경변수)로 주입합니다. 루트 .env 는 gitignore·dockerignore 대상이라 이미지에 포함되지 않습니다.

필수

변수설명
DATABASE_URLPostgres 연결 문자열 (postgres://bebe:<pw>@postgres:5432/bebe).
REDIS_URL큐 연결 문자열 (redis://redis:6379).
SECRET_KEY세션·암호화 키. 32바이트+ (openssl rand -hex 32).
PUBLIC_URL외부 공개 URL (https://bebe.example.com). 미디어 base URL 도 이 값으로 폴백됩니다.

미디어 서비스 시크릿 (필수)

app 이미지의 web·media 프로세스가 서로 인증·서명할 때 씁니다. 빠지면 사진 페이지가 500 납니다.

변수설명
MEDIA_SERVICE_TOKENweb → media bearer 토큰. 32바이트+ (openssl rand -hex 32).
MEDIA_JWT_SECRETfile-serve·upload 토큰 서명 키. 32바이트+ (별도로 생성).

DB role 분리

entrypoint 가 이 비밀번호로 bebe_web·bebe_media 역할을 만듭니다. web 은 public 스키마, media 는 media 스키마만 접근합니다.

변수설명
DATABASE_URL_WEBweb 프로세스용 (bebe_web 역할).
DATABASE_URL_MEDIAmedia 프로세스용 (bebe_media 역할).
BEBE_WEB_DB_PASSWORDbebe_web 역할 비밀번호.
BEBE_MEDIA_DB_PASSWORDbebe_media 역할 비밀번호.

미디어 base URL (보통 미설정)

변수설명
MEDIA_INTERNAL_URL컨테이너 내부 media 주소. 단일 컨테이너라 http://localhost:3001.
MEDIA_PUBLIC_BASE_URL브라우저용 미디어 base. 보통 미설정PUBLIC_URL 폴백. :3001 같은 노출 안 된 포트를 넣지 마세요.
NEXT_PUBLIC_MEDIA_BASE_URL위와 동일. 미설정(또는 PUBLIC_URL 과 동일)이 정답입니다.

선택

변수기본값설명
PORT3000노출 포트. Synology 의 5000/5001 회피.
TZAsia/Seoul방해금지·다이제스트·추억 푸시가 컨테이너 로컬 시각으로 판단하므로 가족 시간대로.
PUID / PGID1000 (DSM 예시 1026/100)볼륨 소유권. Synology 에서는 id <user> 로 확인.
ADMIN_USER_EMAIL인스턴스 관리자 이메일(콤마 구분). 단일 가족 모델에선 첫 가입 owner 가 곧 관리자.
STORAGE_MODElocallocal 또는 s3.
STORAGE_PATH/data로컬 저장 경로 (볼륨 마운트 대상).
STORAGE_S3_*S3/MinIO 사용 시 엔드포인트·버킷·키.
BACKUP_DIR/backups앱 백업 번들 저장 경로.
FACE_ML_URLhttp://ml:8000얼굴 인식 ML 사이드카 주소(옵트인). ml 컨테이너를 안 띄우면 호출도 없습니다.
LOG_LEVELinfopino 로그 레벨.

런타임 설정(OIDC·SMTP·리텐션 등)은 env 가 아니라 앱 내 관리자 UI 에서 합니다. env 로 준 값이 있으면 UI 는 잠깁니다.