Skip to main content
Qdrant is a vector similarity search engine and vector database. It provides a production-ready service with a convenient API to store, search, and manage points—vectors with an additional payload Qdrant is tailored to extended filtering support. It makes it useful for all sorts of neural-network or semantic-based matching, faceted search, and other applications. While Upsun does not provide an official service image for Qdrant, the database can be configured as a standalone application in a multi-applications project. This still gives you full control over the Qdrant configuration and allows for persistent storage across deployments.

Configuration

1. Configure the Qdrant application

Create a qdrant application in your .upsun/config.yaml: The example above is using a HIGH_MEMORY container. You can refer to the Container profiles documentation for more information.

Available versions

In order to run Qdrant as a standalone application without building it from source, the configuration relies on the Composable image. Each Nix release (channel) comes with specific package versions. You can check which Qdrant version is available on a specific release on the Nix packages search.
This is especially important as Qdrant client librairies must use the same minor version (x.y.*) as the server.

2. Add the required Qdrant configuration

Qdrant relies on its own config.yaml configuration file in order to start instead of command-line arguments. Add a new file named qdrant/config.yaml in your project. Note that the qdrant/ directory matches the root: "qdrant" configuration in your .upsun/config.yaml. You can find the default configuration adapted for Upsun below:
qdrant/config.yaml
The default configuration with original comments can be found on the Qdrant GitHub repository.

3. Connect from your application

To connect to Qdrant from another application in your project, add a relationship in that application configuration block:
.upsun/config.yaml
As the example uses qdrant as the relationship name, your application will have access to QDRANT environments variables.

4. Use the relationship in your application

Connect to Qdrant using the relationship configuration:
While the examples above are based on Python and Node.js applications, the same concept can be applied to any other runtime.

Persistent storage

The configuration includes persistent storage through mounts:
  • storage: Stores the main Qdrant database files
  • snapshots: Stores Qdrant snapshots
These mounts ensure that your vector data persists between deployments and application restarts.

Access Qdrant

Qdrant runs as an internal application without external HTTP access. Other applications in your project connect to it using the qdrant.internal hostname through relationships. For development and debugging, you can use port forwarding to access your Qdrant instance locally:
This creates a secure tunnel to your Qdrant application, allowing you to connect local tools and clients during development.

Exposing Qdrant on the public internet

If you are willing to make the Qdrant database publicly accessible, add a new route to the application in the .upsun/config.yaml file:
.upsun/config.yaml

Exposing Qdrant

Be mindful that exposing Qdrant publicly can be sensitive from a security standpoint.

Exporting Data

Qdrant stores vector collections on disk inside the service container. The recommended export method is the Qdrant Snapshot API.
  1. Open an SSH tunnel to your Qdrant service:
Terminal
By default the REST API is available on port 6333.
  1. Create a snapshot for a specific collection:
Terminal
The response includes the snapshot name (e.g. <COLLECTION_NAME>-<TIMESTAMP>.snapshot).
  1. Download the snapshot:
Terminal
  1. To list all collections and snapshot all of them:
Terminal
The .snapshot files can be restored into any Qdrant instance using the snapshot recovery endpoint.

Other resources

Last modified on March 18, 2026