Skip to content

Self-host Qdrant (Docker Compose)

Admin

If you run the free or evaluation edition of CompanyWizard, you can operate your own Qdrant vector database via Docker and unlock high-quality semantic search. This page provides a ready-made, best-practice setup. How to register the running instance in the app is covered by Set up Qdrant; when Qdrant is worth it is explained in RAG & search.

Create a folder (e.g. qdrant/) with the following docker-compose.yaml:

services:
qdrant:
# PIN the version instead of :latest — otherwise a later "up" may pull a
# different version and change the on-disk format. Check the current stable
# version at https://hub.docker.com/r/qdrant/qdrant/tags.
image: qdrant/qdrant:v1.12.4
container_name: qdrant
restart: unless-stopped # comes back automatically after reboot/crash
ports:
# Local only (evaluation/single workstation). For network access, remove
# the "127.0.0.1:" prefix AND set an API key (see below).
- "127.0.0.1:6333:6333" # REST API
- "127.0.0.1:6334:6334" # gRPC
volumes:
# Persistence via bind mount: data survives container restarts.
- ./qdrant_storage:/qdrant/storage
environment:
# Empty = no protection (fine purely locally). Once reachable beyond
# localhost: set it in a .env — see the "Securing it" section.
- QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY:-}

Start:

Terminal window
docker compose up -d

Check reachability — the REST API answers on port 6333, gRPC on 6334:

Terminal window
curl http://localhost:6333/healthz # -> "healthz check passed"

The web UI (dashboard) is at http://localhost:6333/dashboard.

Above we use a bind mount (./qdrant_storage) — data sits visibly next to the compose file and is easy to back up. Alternatively a Docker-managed named volume:

volumes:
- qdrant_data:/qdrant/storage
volumes:
qdrant_data:
driver: local

Qdrant has no authentication by default. Purely locally (ports bound to 127.0.0.1) that is acceptable. As soon as the instance is reachable beyond localhost:

  1. Set an API key in a .env next to the compose file:

    Terminal window
    QDRANT_API_KEY=a-long-random-secret
  2. Remove the 127.0.0.1: prefix from the ports (or place it behind a TLS reverse proxy).

Enter the same API key in the app’s system settings afterwards (stored encrypted there).

In Administration → System settings → Qdrant, provide:

  • Endpoint — http://localhost:6333 (or the reachable address),
  • API key — if set,
  • collection name, vector dimension, search limit, minimum score.

A test connection saves the values and verifies reachability. Details and the matching appsettings keys: Set up Qdrant.