권위 있는 목록은 언제나 저장소의 주석 달린 api/.env.example입니다. 이 글은 용도별로 "왜 필요한지, 어떻게 올바르게 채우는지"를 설명합니다. 보편 규칙 하나: env에 KEY=(빈 문자열)라고 쓰면 미설정과 같아서 기본값 폴백이 발동합니다 — 값을 지우려면 줄 전체를 주석 처리하세요.
LLM 게이트웨이 3종 세트 (필수)
DEEPSEEK_API_KEY(당신의 게이트웨이 키 — 이름은 역사적 유산이며 어떤 OpenAI 호환 게이트웨이에도 통용), OPENAI_BASE_URL(게이트웨이 주소, /chat/completions 직전까지), AI_MODEL(해당 게이트웨이가 인식하는 모델 ID). .env.example에는 DeepSeek / OpenRouter / Groq / Together / OpenAI / Ollama 여섯 가지 템플릿이 내장되어 있어 선택한 것의 주석만 해제하면 됩니다. AI가 이미지를 읽게 하려면 비전 지원 모델(gpt-4o-mini, qwen-vl-plus 등)을 선택하세요.
서버 시크릿 3개 (프로덕션에서 반드시 변경)
ADMIN_SECRET(/admin/* 운영 엔드포인트 인증 키), JWT_SECRET(로그인 세션 서명), USER_API_KEY_ENCRYPTION_SECRET(월드 오너 개인 API 키의 서버 측 암호화 키). 세 개 모두 서로 다른 긴 랜덤 문자열로: openssl rand -hex 32를 세 번 실행하세요.
네트워크와 경로
PORT(백엔드 포트, 기본 3000), DATABASE_PATH(SQLite 파일 위치, 상대 경로는 저장소 루트 기준으로 해석, Docker 모드에서는 /app/data/database.sqlite로 고정되어 호스트의 ./data에 마운트), CORS_ALLOWED_ORIGINS(허용할 프런트엔드 오리진, 쉼표 구분 — 공개 후에는 자기 도메인을 잊지 말고 추가), PUBLIC_API_BASE_URL(대외 공개 웹 루트 주소, /api 없이). 루트 compose는 추가로 APP_PORT(프런트엔드의 호스트 포트 매핑, 기본 80)를 지원합니다.
선택: MiniMax 미디어 생성
MINIMAX_API_KEY / MINIMAX_BASE_URL은 모멘트와 동영상 채널에서 NPC가 동영상·음악을 자동 생성하는 데 쓰입니다. 완전히 선택 사항: 비워 두면 해당 부분에만 "미디어 생성 비활성화" 플레이스홀더가 표시될 뿐, 채팅·모멘트·그룹 채팅 등 나머지 기능에는 영향이 없습니다.
선택: SMTP 메일 이중 채널
SMTP_*는 이메일 인증 코드 로그인용입니다. SMTP_HOST를 비워 두면 인증 코드가 서버 로그에 출력되고(개발 mock 모드), 자격 증명을 채우면 실제로 발송됩니다. 선택적 SMTP_OVERSEAS_* 그룹은 수신자 메일 도메인으로 분기하며(gmail/outlook 등 해외 도메인은 해외 채널), 미설정 시 기본 채널로 자동 폴백합니다 — 전형적인 조합은 기본 채널에 국내 메일 서비스, 해외 채널에 Gmail/SES입니다.
관련 질문
Enclave는 어떤 대형 언어 모델을 지원하나요?
Enclave의 모델 계층은 완전히 교체 가능합니다. OpenAI, Anthropic, Google, DeepSeek는 물론 로컬 Ollama / vLLM도 모두 구성할 수 있습니다. 캐릭터마다 다른 모델을 사용할 수도 있어 상황과 비용에 따라 자유롭게 배분합니다.Enclave를 완전히 오프라인으로 실행할 수 있나요?
가능합니다. 모델 계층을 로컬 Ollama / vLLM으로 교체하고 현실 세계 동기화를 끄면, 시스템 전체가 외부로 어떤 요청도 보내지 않고 당신의 기기에서 완전히 오프라인으로 작동합니다 — 어떤 약속에도 의존하지 않는 가장 강력한 프라이버시 보장입니다.Enclave를 셀프 호스팅할 수 있나요? 어렵나요?
가능하며, 난이도는 일반적인 web 서비스를 운영하는 것과 비슷합니다. docker compose를 사용해 봤다면 세 단계로 자신의 인스턴스를 가질 수 있습니다: 저장소 클론, .env 복사, docker compose up. API·프런트엔드·데이터베이스·벡터 인덱스가 모두 내 서버에서 실행됩니다.