LibreChat Docker 설치 가이드: 멀티 AI ChatGPT 클론




개요

LibreChat는 모든 주요 AI 제공자를 하나의 인터페이스에서 사용할 수 있는 오픈소스 ChatGPT 클론입니다. OpenAI, Anthropic, Google, Azure, Ollama 등 다양한 AI 모델을 연결하고, 대화 중에 자유롭게 전환할 수 있습니다. AI 에이전트, MCP, 코드 인터프리터, Artifacts, 멀티모달 대화, 메시지 검색 등 고급 기능을 제공합니다.

항목내용
GitHubhttps://github.com/danny-avila/LibreChat
공식 사이트https://librechat.ai
문서https://docs.librechat.ai
라이선스MIT
GitHub Stars20K+

LibreChat란?

왜 LibreChat인가?

❌ 기존 ChatGPT 문제점:
   - 단일 AI 제공자만 사용
   - 월 $20 구독료
   - 데이터 프라이버시 우려

✅ LibreChat의 해결책:
   - 모든 AI를 하나의 UI에서
   - API 비용만 지불 (또는 무료 로컬 LLM)
   - 완전한 데이터 통제
   - ChatGPT Plus 기능 + 추가 기능

핵심 슬로건

"Every AI for Everyone"
- OpenAI, Anthropic, Google, Azure 등 통합
- 대화 중 모델 전환
- ChatGPT UI + 향상된 기능
- 완전 오픈소스, 셀프호스팅

아키텍처

┌─────────────────────────────────────────────┐
│              LibreChat UI                    │
├─────────────────────────────────────────────┤
│           Node.js API Server                 │
├──────────────┬──────────────┬───────────────┤
│   MongoDB    │  MeiliSearch │  RAG API      │
│  (대화 저장) │   (검색)     │  (문서 RAG)   │
└──────────────┴──────────────┴───────────────┘
        │
        ▼
┌─────────────────────────────────────────────┐
│  OpenAI │ Anthropic │ Google │ Azure │ ...  │
└─────────────────────────────────────────────┘

주요 기능

🤖 AI 제공자 통합

제공자지원 모델
OpenAIGPT-4o, GPT-4, GPT-3.5, o1, o3
AnthropicClaude 3.5, Claude 3
GoogleGemini Pro, Gemini Ultra
Azure OpenAI엔터프라이즈 GPT
AWS BedrockClaude, Llama 등
Ollama로컬 LLM
OpenRouter모든 모델 통합
Groq초고속 추론
MistralMistral Large, Medium
CustomOpenAI 호환 API

🎨 UI & 경험

기능설명
ChatGPT 스타일 UI친숙한 인터페이스
모델 전환대화 중 AI 변경
대화 포킹대화 분기
메시지 검색전체 대화 검색
프리셋커스텀 설정 저장
다국어40+ 언어 지원 (한국어 포함)

🛠️ 고급 기능

기능설명
AI Agents도구 사용 에이전트
MCPModel Context Protocol
Code Interpreter코드 실행
ArtifactsReact, 다이어그램 렌더링
DALL-E 3이미지 생성
Vision이미지 분석 (GPT-4V, Claude Vision)
파일 업로드PDF, 문서 채팅
OpenAPI Actions외부 API 통합

🔐 보안 & 인증

기능설명
멀티 유저다중 사용자 지원
OAuth2Google, GitHub, Discord 등
LDAP엔터프라이즈 인증
KeycloakSSO 통합
모더레이션콘텐츠 필터링

📚 RAG & 지식

기능설명
RAG API문서 검색 증강
파일 업로드PDF, DOCX, TXT 등
벡터 검색PostgreSQL + pgvector
MeiliSearch대화 검색

시스템 요구 사항

항목최소권장
CPU2 코어4+ 코어
RAM4GB8GB+
저장소10GB20GB+
포트3080

Docker 설치

방법 1: 공식 Docker Compose (권장)

# 저장소 클론
git clone https://github.com/danny-avila/LibreChat.git
cd LibreChat

# 환경 설정
cp .env.example .env
# .env 파일 편집하여 API 키 설정

# librechat.yaml 생성 (선택)
cp librechat.example.yaml librechat.yaml

# 시작
docker compose up -d

접속: http://localhost:3080

방법 2: 간소화된 Docker Compose

# docker-compose.yml
services:
  librechat:
    image: ghcr.io/danny-avila/librechat:latest
    container_name: librechat
    restart: unless-stopped
    ports:
      - "3080:3080"
    depends_on:
      - mongodb
      - meilisearch
    environment:
      - HOST=0.0.0.0
      - MONGO_URI=mongodb://mongodb:27017/LibreChat
      - MEILI_HOST=http://meilisearch:7700
      - OPENAI_API_KEY=${OPENAI_API_KEY}
    volumes:
      - ./images:/app/client/public/images
      - ./logs:/app/api/logs

  mongodb:
    image: mongo:latest
    container_name: librechat-mongodb
    restart: unless-stopped
    volumes:
      - ./data-node:/data/db

  meilisearch:
    image: getmeili/meilisearch:latest
    container_name: librechat-meilisearch
    restart: unless-stopped
    environment:
      - MEILI_MASTER_KEY=${MEILI_MASTER_KEY:-your-master-key}
    volumes:
      - ./meili_data:/meili_data

.env 파일:

OPENAI_API_KEY=sk-your-key
MEILI_MASTER_KEY=your-master-key-at-least-16-bytes

방법 3: Anthropic Claude 추가

.env 파일:

OPENAI_API_KEY=sk-your-key
ANTHROPIC_API_KEY=sk-ant-your-key

방법 4: Google Gemini 추가

.env 파일:

GOOGLE_API_KEY=your-google-api-key
# 또는 Vertex AI
GOOGLE_PROJECT_ID=your-project-id
GOOGLE_LOCATION=us-central1

방법 5: Ollama 로컬 LLM

# docker-compose.override.yml
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ./ollama:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

librechat.yaml:

endpoints:
  custom:
    - name: "Ollama"
      apiKey: "ollama"
      baseURL: "http://ollama:11434/v1"
      models:
        default: ["llama3.2", "mistral", "codellama"]
        fetch: true

방법 6: RAG API (문서 RAG)

# docker-compose.override.yml
services:
  rag_api:
    image: ghcr.io/danny-avila/librechat-rag-api-dev:latest
    container_name: librechat-rag-api
    restart: unless-stopped
    depends_on:
      - vectordb
    environment:
      - DB_HOST=vectordb
      - RAG_PORT=8000
    volumes:
      - ./uploads:/app/uploads

  vectordb:
    image: pgvector/pgvector:pg16
    container_name: librechat-vectordb
    restart: unless-stopped
    environment:
      - POSTGRES_DB=mydatabase
      - POSTGRES_USER=myuser
      - POSTGRES_PASSWORD=mypassword
    volumes:
      - ./pgvector:/var/lib/postgresql/data

.env 추가:

RAG_API_URL=http://rag_api:8000

방법 7: OAuth2 인증 (Google)

.env 파일:

ALLOW_SOCIAL_LOGIN=true
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_CALLBACK_URL=/oauth/google/callback

방법 8: Traefik + HTTPS

# docker-compose.override.yml
services:
  librechat:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.librechat.rule=Host(`chat.example.com`)"
      - "traefik.http.routers.librechat.entrypoints=websecure"
      - "traefik.http.routers.librechat.tls.certresolver=letsencrypt"
      - "traefik.http.services.librechat.loadbalancer.server.port=3080"
    networks:
      - traefik_network

networks:
  traefik_network:
    external: true

환경 변수

기본 설정

변수설명기본값
HOST바인딩 주소0.0.0.0
PORT서버 포트3080
ALLOW_REGISTRATION회원가입 허용true
ALLOW_SOCIAL_LOGIN소셜 로그인false

AI 제공자

변수설명
OPENAI_API_KEYOpenAI API 키
ANTHROPIC_API_KEYAnthropic API 키
GOOGLE_API_KEYGoogle AI API 키
AZURE_API_KEYAzure OpenAI 키
OPENROUTER_API_KEYOpenRouter 키

데이터베이스

변수설명
MONGO_URIMongoDB 연결 문자열
MEILI_HOSTMeiliSearch URL
MEILI_MASTER_KEYMeiliSearch 마스터 키 (16바이트+)

RAG

변수설명
RAG_API_URLRAG API 서버 URL
RAG_PORTRAG API 포트

인증

변수설명
JWT_SECRETJWT 시크릿
JWT_REFRESH_SECRETJWT 리프레시 시크릿
CREDS_KEY자격 증명 암호화 키
CREDS_IV자격 증명 IV

OAuth2

변수설명
GOOGLE_CLIENT_IDGoogle OAuth 클라이언트 ID
GOOGLE_CLIENT_SECRETGoogle OAuth 시크릿
GITHUB_CLIENT_IDGitHub OAuth 클라이언트 ID
GITHUB_CLIENT_SECRETGitHub OAuth 시크릿

librechat.yaml 설정

고급 설정을 위한 YAML 설정 파일:

# librechat.yaml
version: 1.2.1

cache: true

fileStrategy: "local"

registration:
  socialLogins: ["google", "github"]

endpoints:
  # OpenAI 설정
  openAI:
    titleModel: "gpt-4o-mini"
    plugins: true
  
  # Anthropic 설정
  anthropic:
    titleModel: "claude-3-haiku-20240307"
  
  # 커스텀 엔드포인트 (Ollama 등)
  custom:
    - name: "Ollama"
      apiKey: "ollama"
      baseURL: "http://ollama:11434/v1"
      models:
        default: ["llama3.2", "mistral", "codellama"]
        fetch: true
      titleConvo: true
      titleModel: "llama3.2"
    
    - name: "OpenRouter"
      apiKey: "${OPENROUTER_API_KEY}"
      baseURL: "https://openrouter.ai/api/v1"
      models:
        fetch: true

# 모델 스펙
modelSpecs:
  enforce: false
  prioritize: true
  list:
    - name: "gpt-4o"
      label: "GPT-4o (Omni)"
      description: "최신 GPT-4 멀티모달 모델"
      iconURL: "https://example.com/openai-icon.svg"

Docker에서 librechat.yaml 마운트

# docker-compose.override.yml
services:
  api:
    volumes:
      - type: bind
        source: ./librechat.yaml
        target: /app/librechat.yaml

초기 설정

1) 첫 접속

URL: http://localhost:3080
→ 계정 생성
→ 로그인

2) AI 제공자 선택

  1. 채팅 화면 상단에서 AI 제공자 선택
  2. 모델 선택
  3. 채팅 시작

3) 프리셋 만들기

  1. 설정 아이콘 클릭
  2. Save Preset 선택
  3. 이름, 시스템 프롬프트, 파라미터 설정
  4. 저장

4) 파일 업로드 (RAG)

  1. 채팅 입력창 옆 파일 아이콘 클릭
  2. PDF, DOCX, TXT 등 업로드
  3. 파일 내용 기반 질문

사용 가이드

모델 전환

대화 중 언제든 다른 AI로 전환:

  1. 상단 모델 선택기 클릭
  2. 다른 제공자/모델 선택
  3. 동일 대화에서 다른 AI 응답 받기

AI 에이전트 사용

  1. Agents 선택
  2. 도구 활성화 (웹 검색, 코드 실행 등)
  3. 에이전트가 도구 사용하여 답변

Artifacts

코드, 다이어그램, React 컴포넌트를 대화 내에서 렌더링:

  • Claude의 Artifacts 기능과 유사
  • 실시간 미리보기

대화 검색

  1. 좌측 사이드바 검색창
  2. 키워드 입력
  3. 전체 대화 내역에서 검색

대화 포킹

  1. 메시지에서 포크 아이콘 클릭
  2. 해당 지점부터 새 대화 분기
  3. 다른 방향으로 대화 진행

백업 및 복원

데이터 구조

./
├── data-node/      # MongoDB 데이터
├── meili_data/     # MeiliSearch 인덱스
├── images/         # 업로드 이미지
├── logs/           # 로그
└── uploads/        # RAG 문서 (사용 시)

백업

# 컨테이너 정지
docker compose down

# 전체 백업
tar -czvf librechat-backup-$(date +%Y%m%d).tar.gz \
  data-node/ meili_data/ images/ .env

# 컨테이너 재시작
docker compose up -d

복원

tar -xzvf librechat-backup.tar.gz
docker compose up -d

업데이트

# 최신 변경사항 가져오기
git pull

# 이미지 업데이트
docker compose pull

# 재시작
docker compose down
docker compose up -d

트러블슈팅

MongoDB 연결 실패

# MongoDB 로그 확인
docker compose logs mongodb

ARM CPU (라즈베리파이)의 경우:

mongodb:
  image: mongo:4.4.18

MeiliSearch 마스터 키 오류

마스터 키는 최소 16바이트 필요:

MEILI_MASTER_KEY=this-key-must-be-at-least-16-bytes-long

Ollama 연결 안 됨

librechat.yaml에서 URL 확인:

baseURL: "http://ollama:11434/v1"  # Docker 네트워크
# 또는
baseURL: "http://host.docker.internal:11434/v1"  # 호스트

이미지 태그

태그설명
latest안정 버전
dev개발 버전 (최신 기능)
v0.x.x특정 버전

대안 비교

기능LibreChatOpen WebUILobeChat
ChatGPT UI✅ 동일✅ 유사✅ 현대적
멀티 AI✅ 다양✅ Ollama 중심
에이전트
Artifacts
MCP
대화 검색✅ MeiliSearch
멀티 유저
OAuth✅ 다양
설치 난이도중간쉬움쉬움

선택 가이드

용도추천
다양한 AI 통합LibreChat
Ollama 중심Open WebUI
현대적 UILobeChat
엔터프라이즈 인증LibreChat

활용 사례

1. 개인 AI 허브

목적: 모든 AI를 하나의 인터페이스에서

  • OpenAI, Claude, Gemini 연결
  • 대화 중 모델 비교
  • API 비용만 지불

2. 팀 AI 플랫폼

목적: 팀 공용 AI 채팅

  • 멀티 유저 계정
  • OAuth 로그인
  • 대화 기록 공유

3. 로컬 AI (프라이버시)

목적: 데이터 외부 전송 없음

  • Ollama 로컬 LLM
  • 완전 오프라인 가능
  • 민감한 데이터 처리

4. 문서 기반 Q&A

목적: RAG 기반 지식 베이스

  • RAG API 활성화
  • 문서 업로드
  • 문서 기반 답변

5. AI 에이전트 테스트

목적: 다양한 에이전트 실험

  • MCP 지원
  • 커스텀 도구
  • 코드 인터프리터

마무리

LibreChat는 모든 AI를 하나의 인터페이스에서 사용할 수 있는 강력한 ChatGPT 클론입니다. 친숙한 UI와 함께 모델 전환, 에이전트, MCP, Artifacts 등 고급 기능을 제공합니다.

핵심 장점

장점설명
멀티 AIOpenAI, Anthropic, Google, Ollama 등
ChatGPT UI친숙한 인터페이스
모델 전환대화 중 AI 변경
에이전트도구 사용, MCP
Artifacts코드/다이어그램 렌더링
멀티 유저팀 사용 가능
OAuthGoogle, GitHub 등 SSO
RAG문서 기반 Q&A

이런 분께 추천

여러 AI를 비교하며 사용하고 싶은 분
ChatGPT Plus 대신 셀프호스팅 원하는 분
팀용 AI 채팅 플랫폼이 필요한 분
Ollama 로컬 LLM을 UI로 사용하고 싶은 분
에이전트, MCP 기능을 활용하려는 분



댓글 남기기