services:
  database:
    image: pgvector/pgvector:pg15
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
    volumes:
      - khoj-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 10
  server:
    image: ghcr.io/khoj-ai/khoj:latest
    depends_on:
      database:
        condition: service_healthy
    ports:
      - "127.0.0.1:42110:42110"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
      POSTGRES_HOST: database
      POSTGRES_PORT: "5432"
      KHOJ_DJANGO_SECRET_KEY: ${KHOJ_DJANGO_SECRET_KEY:?Set KHOJ_DJANGO_SECRET_KEY in .env}
      KHOJ_ADMIN_EMAIL: ${KHOJ_ADMIN_EMAIL:?Set KHOJ_ADMIN_EMAIL in .env}
      KHOJ_ADMIN_PASSWORD: ${KHOJ_ADMIN_PASSWORD:?Set KHOJ_ADMIN_PASSWORD in .env}
      KHOJ_DEBUG: "False"
      OPENAI_BASE_URL: http://host.docker.internal:11434/v1/
      KHOJ_DEFAULT_CHAT_MODEL: qwen2.5:7b
      KHOJ_TELEMETRY_DISABLE: "True"
    volumes:
      - khoj-config:/root/.khoj
      - khoj-models:/root/.cache/torch/sentence_transformers
      - khoj-models:/root/.cache/huggingface
    command: --host=0.0.0.0 --port=42110 --non-interactive
    restart: unless-stopped
volumes:
  khoj-db:
  khoj-config:
  khoj-models:
