Self-host Qdrant (Docker Compose)
AdminIf 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.
docker-compose.yaml
Section titled “docker-compose.yaml”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:
docker compose up -dCheck reachability — the REST API answers on port 6333, gRPC on 6334:
curl http://localhost:6333/healthz # -> "healthz check passed"The web UI (dashboard) is at http://localhost:6333/dashboard.
Persistence: bind mount or named volume
Section titled “Persistence: bind mount or named volume”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: localSecuring it
Section titled “Securing it”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:
-
Set an API key in a
.envnext to the compose file:Terminal window QDRANT_API_KEY=a-long-random-secret -
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).
Connecting CompanyWizard
Section titled “Connecting CompanyWizard”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.