옵션 A: Docker (권장)
로컬 Python 또는 Node.js가 필요하지 않습니다 — 모든 것이 컨테이너 내부에서 빌드됩니다.설정 — LLM_API_KEY만 필수입니다
cp example.env .env.env 편집: LLM_API_KEY 설정 (선택적으로 LLM_BASE_URL, LLM_MODEL)
빌드 및 실행 (처음 또는 새 코드를 가져온 후)
fim-data, fim-uploads)에 유지되며 컨테이너 재시작 후에도 유지됩니다.
참고: Docker 모드는 핫 리로드를 지원하지 않습니다. 코드 변경 시 이미지를 재빌드해야 합니다(docker compose up --build -d). 라이브 리로드를 사용한 활성 개발의 경우 아래 옵션 B를 사용하세요.
옵션 B: 로컬 개발
전제 조건: Python 3.11+, uv, Node.js 18+, pnpm..env 편집: LLM_API_KEY 설정
설치
uv sync —all-extras cd frontend && pnpm install && cd ..시작 (핫 리로드 포함)
./start.shLLM_BASE_URL=https://api.openai.com/v1 # 기본값 — 다른 공급자의 경우 변경
LLM_MODEL=gpt-4o # 기본값 — 다른 모델로 변경 가능
JINA_API_KEY=jina_… # 웹 도구 + RAG 활성화워커를 통한 확장
기본적으로 API는 단일 워커 프로세스로 실행됩니다. 더 많은 동시 사용자를 처리하려면.env를 통해 워커를 증가시키세요:
- PostgreSQL — SQLite는 단일 쓰기 전용이며 동시 쓰기를 지원하지 않습니다.
DATABASE_URL을 PostgreSQL 연결 문자열로 설정하세요. - Redis — Docker Compose에 이미 포함되어 있습니다(자동 구성). 워커 간 인터럽트/주입 릴레이를 처리합니다.
WORKERS=1(기본값)인 경우 Redis나 PostgreSQL이 필요하지 않습니다 — SQLite가 잘 작동합니다.
Nginx 역방향 프록시
HTTPS 및 사용자 정의 도메인의 경우 Nginx 역방향 프록시를 앞에 배치하세요:/api/* 요청을 자동으로 프록시합니다. 포트 3000만 노출하면 됩니다.
코드 실행 샌드박스
코드 실행 샌드박스(CODE_EXEC_BACKEND=docker)를 사용하는 경우 Docker 소켓을 마운트하세요:
스크립트 배포 (베어 메탈)
베어 메탈 서버 또는 사용자 정의 프로세스 관리자의 경우./start.sh를 직접 사용하세요: