Files
CODE_ASSISTANT/5_django_backend/deploy/langfuse

Langfuse 자체 호스팅 — -12 에 올리기

LLM 호출 관측(누가·언제·어떤 모델·프롬프트·답·토큰·시간). 백엔드가 LANGFUSE_HOST 있으면 자동으로 쏨(apps/gateway/langfuse.py). 공식 docker-compose.yml 그대로(2026-09-22 main). 컨테이너 6개, 밖으로 여는 건 웹 3000 하나.

1. 이미지 반입 (인터넷 되는 PC)

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 에서 띄우기

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=http://10.196.81.34:8915
docker compose -f docker-compose.yml -f docker-compose.customer.yml up -d    # 8915 → 3000 (customer 파일이 포트만 바꿈)
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 뜨면 끝.

ABAP_OPENCODE(-13) 도 같은 Langfuse 로

abap-specgen/web/deploy/bare/.env 에 같은 세 줄(LANGFUSE_HOST/PUBLIC_KEY/SECRET_KEY) 넣고 run.sh restart. 워처(watch_file_events)가 턴마다 보냄 — 태그 abap-specgen 으로 구분. 단 -13 → -12(:3000) 통신이 막혀 있으면 안 감 — 인프라에 그 한 줄 허용 요청하거나 Langfuse 를 둘이 다 닿는 곳에 둬야 함.

운영

  • 웹 UI: 고객사 PC 에서 http://10.196.81.34:8915 (8915 는 -12 에 이미 열려 있던 빈 포트라 인프라 요청 불필요)
  • -13(ABAP_OPENCODE) 의 LANGFUSE_HOST 도 http://10.196.81.34:8915
  • 중지 docker compose down (데이터 볼륨 남음) / 완전 삭제 docker compose down -v
  • 로그 docker compose logs -f langfuse-web
  • 백엔드는 Langfuse 죽어 있어도 멀쩡(전송 실패는 warning 로그만)