# docker-compose.yml
version: '3.8'
services:
  openwebui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: openwebui
    ports:
      - "3000:8080"
    environment:
      - DATABASE_URL=postgresql://openwebui:openwebui@db:5432/openwebui
      - PGVECTOR_DB_URL=postgresql://openwebui:openwebui@db:5432/openwebui
      - ENABLE_OLLAMA_API=false
      - CHUNK_SIZE=2500
      - CHUNK_OVERLAP=500
      - ENABLE_OAUTH_SIGNUP=true
      - OAUTH_CLIENT_ID=ChatbotUI
      - OAUTH_CLIENT_SECRET=<client_secret>
      - OPENID_PROVIDER_URL=https://<keycloakhost>/realms/<realm>/.well-known/openid-configuration
      - OPENAI_API_BASE_URL=https://<openaihost>/v1
      - OPENAI_API_KEY=<key>
      - QDRANT_API_KEY=<key>
      - VECTOR_DB=qdrant
      - QDRANT_URI=http://qdrant:6333
      - RAG_EMBEDDING_ENGINE=openai
      - RAG_EMBEDDING_MODEL=intfloat/multilingual-e5-large
    volumes:
      - openwebui:/app/backend/data
    depends_on:
      - db
      - qdrant
    restart: unless-stopped
  
  qdrant:
    restart: always
    volumes:
      - ./qdrant:/qdrant/storage
    ports:
      - "6333:6333"
      - "6334:6334"
    image: qdrant/qdrant   

  db:
    image: pgvector/pgvector:pg15
    container_name: openwebui-db
    environment:
      - POSTGRES_USER=openwebui
      - POSTGRES_PASSWORD=openwebui
      - POSTGRES_DB=openwebui
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  postgres_data:
  openwebui: