# Langfuse 자체 호스팅 — -12 에 올리기 LLM 호출 관측(누가·언제·어떤 모델·프롬프트·답·토큰·시간). 백엔드가 `LANGFUSE_HOST` 있으면 자동으로 쏨(`apps/gateway/langfuse.py`). 공식 `docker-compose.yml` 그대로(2026-09-22 main). 컨테이너 6개, 밖으로 여는 건 웹 3000 하나. ## 1. 이미지 반입 (인터넷 되는 PC) ```bash cd 5_django_backend/deploy/langfuse docker compose pull docker save $(grep -oE 'image: \S+' docker-compose.yml | cut -d' ' -f2 | sed 's/\${POSTGRES_VERSION:-17}/17/') | gzip > langfuse-images.tar.gz ls -la langfuse-images.tar.gz # 3~4GB. 메일 안 됨 — 인프라팀 반입 통로로 ``` ## 2. -12 에서 띄우기 ```bash docker load < langfuse-images.tar.gz cd /www/abap-ito/code-assistant/5_django_backend/deploy/langfuse cp .env.example .env && vi .env # CHANGEME 전부 교체. NEXTAUTH_URL 은 사용자가 여는 주소 docker compose up -d docker compose ps # 6개 healthy 까지 1~2분 curl -s http://127.0.0.1:3000/api/public/health ``` ## 3. 백엔드 연결 `5_django_backend/.env` 에 (`.env` 의 INIT 키와 같은 값): ``` LANGFUSE_HOST=http://127.0.0.1:3000 LANGFUSE_PUBLIC_KEY=pk-lf-… LANGFUSE_SECRET_KEY=sk-lf-… ``` `bash deploy.sh` 로 재기동 → 채팅 하나 보내고 Langfuse 웹(Traces)에 `chat`·`fabrix` trace 뜨면 끝. ## 운영 - 웹 UI 접속은 -12 의 3000 → 인프라팀이 외부 포트(8915 등) 매핑해줘야 고객사 PC 에서 열림 - 중지 `docker compose down` (데이터 볼륨 남음) / 완전 삭제 `docker compose down -v` - 로그 `docker compose logs -f langfuse-web` - 백엔드는 Langfuse 죽어 있어도 멀쩡(전송 실패는 warning 로그만)