Companion to: https://computingforgeeks.com/install-qdrant-debian/
Tested on Debian 13.5 (Trixie) with kernel 6.12.74+deb13+1-cloud-amd64. Same steps apply to Debian 12 (Bookworm) since both share apt.
# Docker CE with journald log forwarding (recommended)
./install-docker.sh
# Native .deb + hand-written systemd unit
./install-native.shAfter either, verify:
curl -s http://localhost:6333/healthz # healthz check passed
sudo journalctl CONTAINER_NAME=qdrant -n 5 # for Docker
sudo journalctl -u qdrant -n 5 # for native systemdinstall-docker.sh— Docker CE install, configures journald driver in/etc/docker/daemon.jsonbefore first run.install-native.sh— Downloads the .deb, creates theqdrantsystem user + storage + snapshots dirs + systemd unit. None of those are shipped by the package.docker-compose.yml— Production-ready Compose file with API key, memory limit, healthcheck, journald driver.qdrant.service— Standalone systemd unit, drop at/etc/systemd/system/qdrant.service.
- The Qdrant .deb ships no systemd unit, no user, no snapshots directory. Skip any of those three and you get a panic on first start.
install-native.shprovisions all three. - Docker's journald log driver is per-container at create time. Setting
/etc/docker/daemon.jsondoes not retroactively flip existing containers; they need a recreate to pick it up.install-docker.shconfigures the driver before the first run. - The .deb default config uses absolute path
/var/lib/qdrant/storageregardless ofWorkingDirectoryin the unit. If you reuse a directory created by a prior Docker run (root-owned files), the systemdqdrantuser will hitPermissionDeniedon the WAL.
This is the bare install. For real workloads add:
- API key + TLS reverse proxy (see
../tls-nginx/once the security article ships) - Snapshots to S3 (see
../backup/) - Prometheus monitoring (see
../monitoring/)