Índice del diarioDockup / nota de campo
Note / self-host-qdrant

Cómo autoalojar Qdrant en 2026: almacenamiento, API keys y backups

Guía práctica para autoalojar Qdrant con Docker, puertos, datos persistentes, TLS, seguridad, backups y los fallos que bloquean su uso en producción. Paso a paso.

Autoalojar Qdrant resulta interesante con el primer redeploy, no con el primer docker run. Si fallan los permisos de almacenamiento o el cliente usa 6334 cuando solo está enrutado 6333, Docker puede seguir informando de que el proceso está perfectamente operativo. El despliegue siguiente se organiza en torno a un comportamiento observable: crear una colección con el tamaño de vector previsto, insertar puntos con payload, ejecutar una consulta de vecinos más cercanos con filtros y restaurar un snapshot de colección.

El propósito de Qdrant es explícito: una base de datos vectorial para embeddings y sistemas de retrieval. Esta descripción nos indica qué debe permanecer público, qué debería seguir siendo privado y qué debe reconstruir un backup.

Analiza Qdrant antes de tocar Docker

No dejes que la imagen de Qdrant elija accidentalmente la arquitectura de producción. La imagen proporciona un proceso en 6333; el almacenamiento, el routing y los requisitos externos siguen necesitando ciclos de vida definidos de forma deliberada. El requisito del runtime local es disponer de suficiente RAM y disco para las dimensiones de los vectores, los payloads y los índices. Documenta la capacidad esperada, la propiedad y el modo de fallo en lugar de dejarlo como un valor predeterminado de la imagen.

El despliegue está listo para pruebas más profundas cuando puede crear una colección con el tamaño de vector previsto, insertar puntos con payload, ejecutar una consulta de vecinos más cercanos con filtros y restaurar un snapshot de colección. Sigue la transacción en los logs y observa las dimensiones de los vectores, la construcción de HNSW, los índices de payload, las réplicas de la colección y la diferencia entre los datos memory-mapped y la RAM disponible. Estas observaciones revelan si la topología actual aísla el componente adecuado.

Enruta Qdrant sin falsear el uso de HTTPS

Elige el hostname final de Qdrant antes de que los usuarios guarden callbacks o configuraciones del cliente; después, mantén REST público solo cuando los clientes lo necesiten realmente y mantén gRPC privado. La ruta de la plataforma debe terminar TLS una sola vez y apuntar al puerto privado 6333.

Ejecuta la transacción de aceptación desde el exterior. Si el cliente nunca llega a Qdrant, usa la lista de comprobación para validar SSL para revisar el DNS y el certificado. Si la solicitud llega a Qdrant, pero fallan los permisos de almacenamiento o el cliente usa 6334 cuando solo está enrutado 6333, deja de cambiar redirects del proxy e inspecciona el límite específico de la aplicación.

Convierte el comando local en un servicio inspeccionable

Usa un comando que exponga todas las decisiones importantes. Esta configuración base vincula Qdrant al loopback del host, añade los mounts de datos conocidos y proporciona el primer ajuste necesario. Confirma el requisito local antes de exponerlo: suficiente RAM y disco para las dimensiones de los vectores, los payloads y los índices.

docker run -d \
  --name qdrant \
  --restart unless-stopped \
  -p 127.0.0.1:6333:6333 \
  -v qdrant-data:/qdrant/storage \
  -e QDRANT__SERVICE__API_KEY=replace-with-a-long-random-value \
  qdrant/qdrant:latest

Sustituye los tags flotantes por una versión o un digest probado. Después del arranque, inspecciona docker logs --tail 200 qdrant y confirma que el proceso escucha en 6333. A continuación, ejecuta la acción de aceptación de Qdrant; una respuesta de la página raíz no puede demostrar que el escenario completo funciona: crear una colección con el tamaño de vector previsto, insertar puntos con payload, ejecutar una consulta de vecinos más cercanos con filtros y restaurar un snapshot de colección.

Actualiza Qdrant sin hacer suposiciones

Las pruebas de capacidad deben ejercitar las dimensiones de los vectores, la construcción de HNSW, los índices de payload, las réplicas de la colección y la diferencia entre los datos memory-mapped y la RAM disponible, no repetir una solicitud a /. Ejecuta el escenario «crear una colección con el tamaño de vector previsto, insertar puntos con payload, ejecutar una consulta de vecinos más cercanos con filtros y restaurar un snapshot de colección» con una concurrencia realista y registra la latencia, la tasa de errores y el crecimiento del almacenamiento.

La planificación de las actualizaciones debe tener en cuenta este riesgo: los snapshots de colección, la compatibilidad del formato de almacenamiento y el comportamiento de la client library deben probarse antes de cambiar la versión del servidor. Prueba la nueva release con datos representativos, repite la transacción de aceptación y compara el resultado. Si fallan los permisos de almacenamiento o el cliente usa 6334 cuando solo está enrutado 6333, captura la transacción fallida e inspecciona el primer límite implicado en lugar de asumir que el ingress es responsable.

Convierte el smoke test de Qdrant en un release check

Un release candidate de Qdrant se gana el tráfico completando un escenario fijo: crear una colección con el tamaño de vector previsto, insertar puntos con payload, ejecutar una consulta de vecinos más cercanos con filtros y restaurar un snapshot de colección. Captura el digest de la imagen, la configuración efectiva sin secretos, el origen público y las marcas de tiempo de ese escenario. Los datos de prueba deben ser desechables, pero lo bastante realistas para ejercitar el mismo recorrido que usan los usuarios.

Ejecútalo después de sustituir el runtime; a continuación, reconstruye el servicio a partir de los snapshots de Qdrant y del directorio de almacenamiento persistente. La recuperación se considera correcta cuando un snapshot recrea la colección con el mismo número de puntos, la misma configuración de vectores y resultados representativos de las consultas. Compara con la release anterior las mediciones de recursos correspondientes a las dimensiones de los vectores, la construcción de HNSW, los índices de payload, las réplicas de la colección y la diferencia entre los datos memory-mapped y la RAM disponible; investiga cualquier desviación significativa antes de promoverla.

Por último, ejercita este fallo controlado: envía una entrada inofensiva cerca del límite de recursos o de formato asociado a este límite: fallan los permisos de almacenamiento o el cliente usa 6334 cuando solo está enrutado 6333. Verifica que Qdrant explica el fallo, no daña el estado existente y se recupera cuando vuelve a cumplirse la condición válida. Guarda un fragmento de log con los datos sensibles ocultos y el tiempo de recuperación. En conjunto, estas comprobaciones cubren el comportamiento, la durabilidad y la operabilidad, no solo que el proceso esté activo.

Demuestra que Qdrant sobrevive a un reemplazo

En Qdrant, la seguridad ante redeploy comienza con los snapshots de Qdrant y el directorio de almacenamiento persistente. Monta /qdrant/storage antes del bootstrap, escribe datos de muestra inofensivos y sustituye el contenedor para demostrar que esa ruta es realmente persistente. Prueba la ruta sustituyendo el contenedor mientras existan datos de muestra inofensivos; esto deja al descubierto los mounts apuntados un directorio demasiado arriba o demasiado abajo.

Después, prueba la recuperación ante desastres en un host vacío. Cuando sea necesario, utiliza una exportación de base de datos consistente con la aplicación y verifica que un snapshot recrea la colección con el mismo número de puntos, la misma configuración de vectores y resultados representativos de las consultas. La guía de backups de bases de datos probados mediante restauración proporciona un objetivo más sólido que limitarse a comprobar que se ha creado un archivo de archivo.

Credenciales, roles y superficies expuestas

En Qdrant, la superficie valiosa no es necesariamente la landing page. El error principal consiste en publicar una API sin autenticación en internet. Contrarréstalo de forma deliberada: proporciona a los servicios de ingestion acceso a la API con permisos acotados y mantén toda la API administrativa en una ruta privada.

Trata QDRANT__SERVICE__API_KEY según su función en Qdrant: mantén los valores sensibles fuera de Git, documenta los efectos de la rotación y no sustituyas un ejemplo público en producción. Usa un usuario de contenedor sin privilegios cuando la imagen lo admita y no montes credenciales que no estén relacionadas. Aplica límites de rate o de tamaño en el ingress cuando el trabajo no confiable pueda consumir dimensiones de vectores, construcción de HNSW, índices de payload, réplicas de colecciones y la diferencia entre los datos memory-mapped y la RAM disponible.

Traslada el trabajo de infraestructura repetible a Dockup

Dockup puede hacerse cargo de las piezas reemplazables de la plataforma: enrutar el tráfico al puerto 6333, emitir el dominio y el certificado, inyectar secretos, adjuntar almacenamiento persistente y conectar Qdrant con servicios gestionados o conectados de forma privada. Puede hacerlo en la infraestructura de Dockup o en un servidor que conectes.

El trabajo de aceptación de Qdrant sigue siendo explícito. Después del despliegue con un clic, mantén REST público solo cuando los clientes lo necesiten realmente y mantén gRPC privado; confirma el requisito local —suficiente RAM y disco para las dimensiones de los vectores, los payloads y los índices— y ejecuta este escenario: crear una colección con el tamaño de vector previsto, insertar puntos con payload, ejecutar una consulta de vecinos más cercanos con filtros y restaurar un snapshot de colección. Esta división es intencionada: Dockup elimina la configuración repetitiva de infraestructura sin fingir que los roles de la aplicación, las credenciales del proveedor o la política de restauración se eligen por sí solos.

Preguntas frecuentes

¿Qué necesita Qdrant para un despliegue en producción?

Enruta el contenedor de Qdrant en el puerto 6333 a través de un único origen HTTPS. El requisito del runtime local es disponer de suficiente RAM y disco para las dimensiones de los vectores, los payloads y los índices. No consideres Qdrant listo hasta que puedas crear una colección con el tamaño de vector previsto, insertar puntos con payload, ejecutar una consulta de vecinos más cercanos con filtros y restaurar un snapshot de colección.

¿Qué datos de Qdrant deben incluirse en un backup?

Persiste /qdrant/storage e incluye los snapshots de Qdrant y el directorio de almacenamiento persistente en el mismo manifiesto de recuperación. Una restauración limpia de Qdrant solo es correcta cuando un snapshot recrea la colección con el mismo número de puntos, la misma configuración de vectores y resultados representativos de las consultas.

¿Qdrant necesita HTTPS detrás de un reverse proxy?

Usa HTTPS para el origen público de Qdrant y mantén el puerto 6333 en la ruta interna. Aplica correctamente el ajuste de Qdrant: mantén REST público solo cuando los clientes lo necesiten realmente y mantén gRPC privado. En Qdrant, HTTPS protege las credenciales o el contenido de los usuarios durante el tránsito y mantiene coherente el comportamiento del cliente sensible al origen.

¿Cómo se debe probar una actualización de Qdrant?

Restaura el estado actual de Qdrant en un despliegue aislado, aplica la versión candidata y repite su transacción de aceptación. Presta especial atención, porque los snapshots de colección, la compatibilidad del formato de almacenamiento y el comportamiento de la client library deben probarse antes de cambiar la versión del servidor. Conserva la imagen anterior de Qdrant hasta comprender sus límites de migración de datos y rollback.