Documentation Index
Fetch the complete documentation index at: https://docs.fim.ai/llms.txt
Use this file to discover all available pages before exploring further.
옵션 A: Docker (권장)
로컬 Python 또는 Node.js가 필요 없습니다 — 모든 것이 컨테이너 내부에서 빌드됩니다.fim-data, fim-uploads)에 유지되며 컨테이너 재시작 후에도 유지됩니다.
참고: Docker 모드는 핫 리로드를 지원하지 않습니다. 코드 변경 시 이미지를 다시 빌드해야 합니다(docker compose up --build -d). 라이브 리로드를 사용한 활성 개발의 경우 아래의 옵션 B를 사용하세요.
옵션 B: 로컬 개발
필수 요구사항: Python 3.11+, uv, Node.js 18+, pnpm.| 명령어 | 시작되는 항목 | URL |
|---|---|---|
./start.sh | Next.js + FastAPI | http://localhost:3000 (UI) + :8000 (API) |
./start.sh dev | 동일, 핫 리로드 포함 (Python --reload + Next.js HMR) | 동일 |
./start.sh dev:api | API만, 개발 모드 (--reload) | http://localhost:8000/api |
./start.sh dev:ui | Next.js만, 개발 모드 (HMR) | http://localhost:3000 |
./start.sh api | FastAPI만 (헤드리스, 통합 또는 테스트용) | http://localhost:8000/api |
구성
FIM One은 모든 OpenAI 호환 LLM 제공자와 함께 작동합니다 — OpenAI, DeepSeek, Anthropic, Qwen, Ollama, vLLM 등.| 제공자 | LLM_API_KEY | LLM_BASE_URL | LLM_MODEL |
|---|---|---|---|
| OpenAI | sk-... | (기본값) | gpt-4o |
| DeepSeek | sk-... | https://api.deepseek.com/v1 | deepseek-chat |
| Anthropic | sk-ant-... | https://api.anthropic.com/v1 | claude-sonnet-4-6 |
| Ollama (로컬) | ollama | http://localhost:11434/v1 | qwen2.5:14b |
.env:
프로덕션 배포
Docker (권장)
docker compose up -d는 필요한 모든 것을 실행합니다 — 수동 서비스 구성이 필요 없습니다:
| 서비스 | 목적 | 구성 대상 |
|---|---|---|
| fim-one | API + 프론트엔드 | .env (LLM 키 등) |
| Redis | 크로스-워커 인터럽트 릴레이 | compose에서 자동 구성 |
워커를 통한 확장
기본적으로 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 소켓을 마운트하세요:
Cloudflare Tunnel
포트를 열지 않는 설정을 위해 Nginx 대신 Cloudflare Tunnel을 사용하세요. 모든 트래픽이 Cloudflare의 엣지를 통해 흐르므로 포트 80/443을 노출하거나, SSL 인증서를 관리하거나, 방화벽 규칙을 구성할 필요가 없습니다.터널 생성
Cloudflare Zero Trust → Networks → Tunnels → Create a tunnel로 이동하세요.
커넥터 유형으로 Cloudflared를 선택하세요.
공개 호스트명 구성
터널 구성에서 공개 호스트명을 추가하세요:
다른 모든 설정(HTTP Host Header, Chunked Encoding, Timeouts, Access)은 기본값으로 두세요.
| 필드 | 값 |
|---|---|
| Type | HTTP |
| URL | fim-one:3000 |
URL은
localhost가 아닌 Docker 서비스 이름 fim-one을 사용합니다. cloudflared가 같은 Docker 네트워크의 별도 컨테이너로 실행되기 때문입니다.터널 오버레이로 배포
docker-compose.tunnel.yml 오버레이는 cloudflared 사이드카 컨테이너를 추가합니다. 기본 docker-compose.yml은 변경되지 않으므로 Cloudflare가 없는 커뮤니티 사용자는 계속 docker compose up -d를 사용할 수 있습니다.이전 DNS 레코드 제거
도메인에 이전에 서버의 IP를 가리키는 A 레코드가 있었다면 Cloudflare DNS에서 삭제하세요. 터널이 자동으로 엣지 엔드포인트를 가리키는 CNAME 레코드를 생성합니다.
스크립트 배포 (베어 메탈)
베어 메탈 서버 또는 사용자 정의 프로세스 관리자의 경우./start.sh를 직접 사용하세요: