bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Despliegue de

calendar_month Jun 18, 2026 schedule 20 min de lectura visibility 27 vistas
Развёртывание Qdrant Vector Database на VPS для AI-приложений: шаг за шагом
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Despliegue de Qdrant Vector Database en un VPS para aplicaciones de IA: paso a paso

TL;DR

En esta guía, configuraremos y desplegaremos paso a paso una base de datos vectorial Qdrant de alto rendimiento en su propio servidor VPS. Qdrant es un componente crítico para las aplicaciones modernas de IA, como la búsqueda semántica, los sistemas de recomendación y las arquitecturas RAG (Retrieval-Augmented Generation), permitiendo almacenar y buscar eficientemente vectores de alta dimensionalidad. Obtendrá una instancia de Qdrant completamente funcional, segura y lista para operar, gestionada a través de Docker Compose, con HTTPS automático mediante Caddy.

  • Qdrant se instalará utilizando Docker Compose para una fácil gestión y escalabilidad.
  • El servidor estará protegido con configuraciones de seguridad básicas: claves SSH, UFW y Fail2ban.
  • Se configurará HTTPS automático para la API de Qdrant con Caddy, asegurando una interacción segura.
  • Se revisarán los requisitos mínimos para el VPS y se darán recomendaciones para la elección de la configuración.
  • Se proporcionarán scripts para la copia de seguridad de datos de Qdrant y recomendaciones de mantenimiento.
  • Todos los comandos y configuraciones son actuales para 2026 y han sido probados en Ubuntu 24.04 LTS.

Qué configuramos y por qué

Diagrama: Qué configuramos y por qué
Diagrama: Qué configuramos y por qué

En el mundo moderno de la inteligencia artificial, los datos a menudo se representan como vectores de alta dimensionalidad (embeddings), que codifican el significado semántico de texto, imágenes, audio u otros datos. Para trabajar eficientemente con estos vectores —buscar similitudes, realizar agrupaciones o utilizarlos en arquitecturas de Generación Aumentada por Recuperación (RAG)— se requieren bases de datos especializadas, conocidas como bases de datos vectoriales (Vector Databases).

Qdrant es una base de datos vectorial de código abierto y alto rendimiento, diseñada para almacenar, indexar y buscar vectores con latencia de milisegundos. Soporta diversas métricas de distancia, filtrado por metadatos y escalabilidad. Al desplegar Qdrant en su propio VPS, obtiene control total sobre los datos, la seguridad y el rendimiento, lo cual es crítico para muchas aplicaciones de IA.

Al final de esta guía, obtendrá una instancia de Qdrant completamente configurada y operativa, accesible por HTTPS, lista para integrarse con sus modelos y aplicaciones de IA. Esto le permitirá crear sus propios sistemas inteligentes, como chatbots capaces de responder preguntas basándose en su documentación, sistemas de recomendación de productos o servicios de búsqueda semántica, sin depender de costosos proveedores de la nube.

Existen alternativas a Qdrant, como soluciones en la nube (Pinecone, Weaviate Cloud, Azure AI Search Vector Search) u otras opciones autoalojadas (Milvus, Weaviate, Chroma). Los servicios en la nube son convenientes para un inicio rápido, pero pueden ser significativamente más caros a largo plazo, especialmente con grandes volúmenes de datos o consultas intensivas. Además, a menudo imponen limitaciones en la personalización y plantean preocupaciones sobre la privacidad de los datos. El despliegue autoalojado en un VPS, por el contrario, ofrece:

  • Ahorro de costos: Los costos a largo plazo de un VPS suelen ser más bajos que los de los servicios gestionados en la nube, especialmente con una carga de trabajo estable.
  • Control total: Usted gestiona todos los aspectos de la infraestructura, desde el sistema operativo hasta la configuración de Qdrant, lo que permite un ajuste fino del rendimiento y la seguridad.
  • Privacidad de datos: Sus datos permanecen en su servidor, lo que cumple con los estrictos requisitos de privacidad y las normativas reguladoras.
  • Flexibilidad: Posibilidad de instalar cualquier herramienta adicional e integrarse con la infraestructura existente.

La elección de una solución autoalojada en un VPS es especialmente relevante para desarrolladores, startups y empresas que valoran el equilibrio entre rendimiento, costo y control de datos.

Qué configuración de VPS se necesita para esta tarea

Los requisitos de VPS para Qdrant dependen en gran medida del volumen de vectores almacenados, su dimensionalidad, la intensidad de las consultas y los requisitos de latencia. Sin embargo, se pueden identificar configuraciones mínimas y recomendadas para empezar.

Requisitos mínimos (para pruebas y proyectos pequeños):

  • CPU: 2 núcleos (un procesador moderno, por ejemplo, Intel Xeon E5 o AMD EPYC). Qdrant utiliza activamente la CPU para la indexación y búsqueda.
  • RAM: 4 GB. Qdrant almacena los índices en la memoria RAM para una búsqueda rápida. Si el volumen de vectores y metadatos excede la RAM disponible, el rendimiento puede disminuir significativamente debido al swapping.
  • Disco: 50 GB NVMe SSD. Los vectores y metadatos se almacenan en el disco. Un NVMe SSD es críticamente importante para el rendimiento, ya que Qdrant accede frecuentemente al disco.
  • Red: 100 Mbit/s. Para consultas internas esto es suficiente, pero para tráfico intenso se requerirá más.

Plan de VPS recomendado (para aplicaciones de producción pequeñas y medianas):

Para proyectos más serios, donde se planea almacenar millones de vectores y atender cientos de consultas por segundo, se requerirán las siguientes características:

  • CPU: 4-8 núcleos (por ejemplo, Intel Xeon Gold/Platinum o AMD EPYC de últimas generaciones).
  • RAM: 16-32 GB. Esto permitirá a Qdrant mantener una parte significativa de los índices y datos en memoria, asegurando bajas latencias.
  • Disco: 200-500 GB NVMe SSD. Teniendo en cuenta el crecimiento de los datos y la necesidad de almacenar copias de seguridad.
  • Red: 1 Gbit/s. Para APIs de alta carga y transmisión rápida de vectores.

Para empezar con Qdrant en un VPS para aplicaciones de IA, se puede optar por un VPS con las características indicadas, por ejemplo, con 4 núcleos de CPU, 16 GB de RAM y 200 GB NVMe SSD. Esta configuración proporcionará un buen equilibrio entre costo y rendimiento para la mayoría de las tareas medianas.

Cuándo se necesita un servidor dedicado y no un VPS

Un servidor dedicado se vuelve necesario cuando:

  • Volúmenes de datos muy grandes: Miles de millones de vectores o terabytes de datos que requieren más RAM y espacio en disco de lo que la mayoría de los VPS pueden ofrecer.
  • Requisitos de rendimiento extremos: Miles de consultas por segundo o latencias críticamente bajas que demandan el máximo rendimiento de CPU e I/O sin la sobrecarga de la virtualización.
  • Aislamiento total: Requisitos de seguridad o normativas que exigen un aislamiento físico completo del hardware.
  • Hardware especializado: Necesidad de utilizar GPU para acelerar la generación de embeddings u otras tareas que no siempre están disponibles en un VPS.

Si sus necesidades superan las configuraciones de VPS recomendadas anteriormente, considere alquilar un servidor dedicado adecuado.

Ubicación: qué factores influyen

La elección de la ubicación del servidor VPS influye en:

  • Latencia: Cuanto más cerca esté el servidor de sus usuarios finales u otros servicios que interactuarán con Qdrant, menor será la latencia. Elija una ubicación lo más cercana posible a la audiencia principal de su aplicación de IA.
  • Residencia de datos: Algunos requisitos regulatorios (por ejemplo, GDPR en Europa) exigen almacenar los datos en regiones geográficas específicas. Asegúrese de que la ubicación elegida cumpla con estos requisitos.
  • Costo: Los precios de los VPS pueden variar ligeramente en diferentes centros de datos.

Preparación del servidor

Después de obtener un nuevo servidor VPS, es necesario realizar una serie de configuraciones básicas para garantizar la seguridad y estabilidad. Utilizaremos el sistema operativo Ubuntu Server 24.04 LTS, que será relevante y compatible en 2026.

1. Conexión al servidor por SSH

Utilice los datos proporcionados por su proveedor de VPS para la primera conexión. Normalmente, esto implica el usuario root y una contraseña.


ssh root@ВАШ_IP_АДРЕС_VPS

2. Actualización del sistema

Siempre comience actualizando la lista de paquetes e instalando todas las actualizaciones disponibles.


sudo apt update && sudo apt upgrade -y

3. Creación de un nuevo usuario con permisos sudo

Trabajar como usuario root no es seguro. Cree un nuevo usuario y otórguele permisos sudo.


# Crear un nuevo usuario "qdrant_admin" (puede elegir cualquier otro nombre)
sudo adduser qdrant_admin

# Añadir el usuario al grupo sudo
sudo usermod -aG sudo qdrant_admin

Ahora, salga de la sesión root e inicie sesión con el nuevo usuario.


exit
ssh qdrant_admin@ВАШ_IP_АДРЕС_VPS

4. Configuración de claves SSH (recomendado)

Para mejorar la seguridad, utilice claves SSH en lugar de contraseñas. Si aún no tiene un par de claves, genérelas en su máquina local:


# En su máquina local
ssh-keygen -t rsa -b 4096 -C "[email protected]"

Copie la clave pública al servidor:


# En su máquina local
ssh-copy-id qdrant_admin@ВАШ_IP_АДРЕС_VPS

Después de iniciar sesión correctamente con la clave, desactive la autenticación por contraseña para el usuario root y, posiblemente, para todos los usuarios en el archivo /etc/ssh/sshd_config. Desactive el inicio de sesión para root:


# En el servidor, como qdrant_admin
sudo nano /etc/ssh/sshd_config

Busque la línea PermitRootLogin yes y cámbiela a PermitRootLogin no. También asegúrese de que PasswordAuthentication esté configurado en no, si desea deshabilitar completamente el inicio de sesión con contraseña después de configurar las claves SSH. Reinicie el servicio SSH:


sudo systemctl restart sshd

5. Configuración del firewall (UFW)

UFW (Uncomplicated Firewall) es una interfaz conveniente para gestionar iptables. Lo configuraremos para permitir solo los puertos necesarios.


# Permitir SSH (puerto 22 por defecto)
sudo ufw allow OpenSSH

# Permitir HTTP (para Caddy)
sudo ufw allow http

# Permitir HTTPS (para Caddy)
sudo ufw allow https

# Permitir puerto Qdrant (por defecto 6333 para gRPC y REST)
sudo ufw allow 6333/tcp

# Habilitar el firewall
sudo ufw enable
# Confirme "y"

Verifique el estado del firewall:


sudo ufw status verbose

6. Instalación de Fail2ban

Fail2ban protege contra ataques de fuerza bruta, bloqueando automáticamente las direcciones IP que realizan demasiados intentos fallidos de inicio de sesión.


# Instalación de Fail2ban
sudo apt install fail2ban -y

# Crear una copia del archivo de configuración para personalización
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# Abrir el archivo para editar (opcional, se puede dejar por defecto)
sudo nano /etc/fail2ban/jail.local

En jail.local puede configurar bantime (tiempo de bloqueo), findtime (período para detectar intentos) y maxretry (número máximo de intentos). Asegúrese de que la sección [sshd] esté habilitada (enabled = true). Después de los cambios, reinicie Fail2ban:


sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Ahora su servidor tiene protección básica y está listo para la instalación de Qdrant.

Instalación de Software — paso a paso

Desplegaremos Qdrant utilizando Docker Compose, que es el enfoque recomendado para entornos de producción. Esto garantiza aislamiento, facilidad de gestión y actualizaciones. Las versiones del software serán actuales para el año 2026.

1. Instalación de Docker Engine

Para empezar, instalaremos Docker Engine, que gestionará los contenedores.


# Eliminar versiones antiguas de Docker, si las hay
sudo apt remove docker docker-engine docker.io containerd runc

# Instalar los paquetes necesarios para instalar Docker a través de HTTPS
sudo apt install ca-certificates curl gnupg lsb-release -y

# Añadir la clave GPG oficial de Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Añadir el repositorio de Docker a las fuentes de APT
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Actualizar la lista de paquetes con el nuevo repositorio
sudo apt update

# Instalar Docker Engine, Docker CLI y Containerd (la versión será actual para 2026, por ejemplo, 26.x)
sudo apt install docker-ce docker-ce-cli containerd.io -y

# Añadir el usuario actual al grupo docker para ejecutar comandos sin sudo
sudo usermod -aG docker ${USER}

# Aplicar los cambios de grupo (será necesario salir y volver a iniciar sesión en SSH)
newgrp docker

Verifique la instalación de Docker:


docker run hello-world

Debería ver el mensaje "Hello from Docker!".

2. Instalación de Docker Compose

Docker Compose permite definir y ejecutar aplicaciones Docker multicontenedor. En las versiones modernas de Docker, Compose está integrado en el Docker CLI.


# Verificar si Docker Compose está instalado (a partir de Docker 20.10, suele estarlo)
docker compose version
# Si el comando no se encuentra, instálelo por separado:
# sudo apt install docker-compose-plugin -y

3. Creación de un directorio para Qdrant

Crearemos la estructura de directorios para almacenar la configuración y los datos de Qdrant.


# Crear el directorio principal para Qdrant
mkdir -p ~/qdrant
cd ~/qdrant

# Crear el directorio para almacenar los datos de Qdrant
mkdir -p ./data

# Crear el directorio para la configuración de Caddy
mkdir -p ./caddy/Caddyfile
mkdir -p ./caddy/data
mkdir -p ./caddy/config

4. Configuración del archivo Docker Compose

Cree el archivo docker-compose.yml en el directorio ~/qdrant.


nano docker-compose.yml

Pegue el siguiente contenido:


# docker-compose.yml
version: '3.8'

services:
  qdrant:
    image: qdrant/qdrant:1.14.0 # Versión actual de Qdrant para 2026
    container_name: qdrant_db
    restart: unless-stopped
    volumes:
      - ./data:/qdrant/data # Almacenamiento de datos de Qdrant
      - ./qdrant_config.yaml:/qdrant/config/production.yaml # Archivo de configuración opcional
    ports:
      - "6333:6333" # REST API y gRPC
      - "6334:6334" # gRPC para clúster interno (si se usa)
    environment:
      # Ajustes de rendimiento y memoria
      QDRANT__STORAGE__PERFORMANCE_CONFIG__MAX_SEARCH_THREADS: 4 # Número de hilos para búsqueda
      QDRANT__STORAGE__PERFORMANCE_CONFIG__MAX_OPTIMIZATION_THREADS: 2 # Número de hilos para optimización
      QDRANT__SERVICE__GRPC_PORT: 6334 # Puerto gRPC
      QDRANT__SERVICE__HTTP_PORT: 6333 # Puerto REST API

  caddy:
    image: caddy:2.8.0-alpine # Versión actual de Caddy para 2026
    container_name: caddy_proxy
    restart: unless-stopped
    ports:
      - "80:80"  # HTTP para el desafío de Let's Encrypt
      - "443:443" # HTTPS
    volumes:
      - ./caddy/Caddyfile:/etc/caddy/Caddyfile # Archivo de configuración de Caddy
      - ./caddy/data:/data # Certificados Let's Encrypt y datos de Caddy
      - ./caddy/config:/config # Configuración de Caddy
    depends_on:
      - qdrant # Caddy depende de Qdrant

Explicaciones:

  • qdrant/qdrant:1.14.0: Indica el uso de la imagen de Qdrant versión 1.14.0, que será estable y actual para 2026.
  • ./data:/qdrant/data: Monta el directorio local ./data en el contenedor de Qdrant para el almacenamiento persistente de datos.
  • ./qdrant_config.yaml: Opcionalmente, permite montar un archivo de configuración de Qdrant personalizado. Si no es necesario, se puede eliminar.
  • ports: Redirige los puertos 6333 (REST API) y 6334 (gRPC) del contenedor al host.
  • environment: Pasa variables de entorno para configurar Qdrant (por ejemplo, el número de hilos).
  • caddy:2.8.0-alpine: Utiliza la imagen ligera de Caddy versión 2.8.0.
  • caddy/Caddyfile: Monta el archivo de configuración de Caddy.
  • caddy/data y caddy/config: Montan los directorios para almacenar los certificados de Let's Encrypt y la configuración interna de Caddy.

5. Inicio de Qdrant y Caddy

Después de guardar docker-compose.yml, inicie los servicios:


# Iniciar los contenedores en segundo plano
docker compose up -d

Verifique el estado de los contenedores:


docker compose ps

Debería ver que los contenedores qdrant_db y caddy_proxy están en ejecución.

En este punto, Qdrant está instalado y funcionando, pero solo es accesible a través de HTTP en el puerto 6333. A continuación, configuraremos Caddy para proporcionar HTTPS.

Configuración

Después de instalar Qdrant y Caddy, el siguiente paso es su correcta configuración. La tarea principal es asegurar el acceso a Qdrant a través de HTTPS utilizando un nombre de dominio y, si es necesario, ajustar finamente el propio Qdrant.

1. Configuración de Caddy para HTTPS

Caddy genera y renueva automáticamente certificados SSL de Let's Encrypt, lo que lo convierte en una opción ideal para esta tarea. Para ello, necesitará un nombre de dominio que apunte a la dirección IP de su VPS. Supongamos que su dominio es qdrant.example.com.

Edite el archivo ./caddy/Caddyfile (que creamos anteriormente):


nano ./caddy/Caddyfile

Pegue el siguiente contenido, reemplazando qdrant.example.com por su dominio real:


# Caddyfile
qdrant.example.com {
    # Proxy de todas las solicitudes al contenedor Qdrant
    reverse_proxy qdrant:6333 {
        # Encabezados adicionales para Qdrant (opcional)
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    # Habilitar el registro (opcional, para depuración)
    log {
        output file /var/log/caddy_access.log
    }

    # Compresión de respuestas (opcional, puede mejorar el rendimiento)
    encode gzip zstd
}

Explicaciones:

  • qdrant.example.com: Indica el dominio para el cual Caddy procesará las solicitudes y obtendrá el certificado SSL.
  • reverse_proxy qdrant:6333: Redirige todas las solicitudes entrantes al servicio interno de Qdrant (nombre del servicio de docker-compose.yml) en el puerto 6333. Docker Compose crea una red interna donde los contenedores pueden comunicarse entre sí por sus nombres de servicio.
  • log: Configura el registro de solicitudes.
  • encode gzip zstd: Habilita la compresión de respuestas, lo que puede acelerar la carga de datos para los clientes.

Guarde el archivo y reinicie el contenedor de Caddy para aplicar los cambios:


docker compose restart caddy

Caddy intentará automáticamente obtener un certificado SSL para su dominio. Asegúrese de que el registro DNS para qdrant.example.com (tipo A) apunte a la dirección IP de su VPS.

2. Configuración de Qdrant (opcional)

Qdrant tiene muchas configuraciones que se pueden cambiar a través de variables de entorno en docker-compose.yml o mediante un archivo de configuración production.yaml. Ya hemos configurado algunas variables de entorno en docker-compose.yml. Si necesita una configuración más profunda, cree el archivo qdrant_config.yaml en el directorio ~/qdrant.


nano ~/qdrant/qdrant_config.yaml

Ejemplo de contenido (para demostración, no es necesario usar todo):


# ~/qdrant/qdrant_config.yaml
service:
  grpc_port: 6334
  http_port: 6333
  max_request_size_mb: 256 # Aumentar el tamaño máximo de la solicitud
  enable_cors_for_all: true # Habilitar CORS para todos los orígenes (para desarrollo, en producción es mejor restringir)

storage:
  storage_path: /qdrant/data
  snapshots_path: /qdrant/snapshots # Ruta para guardar instantáneas
  wal_capacity_mb: 32
  segments:
    max_indexing_threads: 4
    max_search_threads: 8
    max_optimization_threads: 2

telemetry_disabled: true # Deshabilitar el envío de telemetría anónima (recomendado)

Si ha creado y montado este archivo en docker-compose.yml, reinicie Qdrant:


docker compose restart qdrant

Importante: Para entornos de producción, si habilita CORS, siempre restrinja enable_cors_for_all a dominios específicos de su frontend, en lugar de true.

3. Verificación de la operatividad

Después de todas las configuraciones, nos aseguraremos de que Qdrant esté disponible y responda.

Verificación de Caddy y HTTPS:

Abra su dominio en el navegador: https://qdrant.example.com. Debería ver una respuesta de Qdrant, por ejemplo, un mensaje JSON indicando que es la API de Qdrant. También asegúrese de que el certificado sea válido (el candado verde en el navegador).

Verificación de la API de Qdrant a través de curl:

# Verificar el estado de Qdrant a través del dominio configurado con HTTPS
curl -k https://qdrant.example.com/collections
# O si no confía en el certificado (para pruebas)
# curl -k https://qdrant.example.com/collections

# Verificar el estado del servicio Qdrant dentro del contenedor
docker exec qdrant_db curl -s http://localhost:6333/collections

Ambos comandos deberían devolver una respuesta JSON, por ejemplo: {"result":{"collections":[]},"status":"ok","time":...}, lo que significa que Qdrant está en ejecución y listo para trabajar. Si ve un error, revise los registros de los contenedores:


docker compose logs qdrant
docker compose logs caddy

¡Su base de datos vectorial Qdrant ahora está completamente desplegada y protegida con HTTPS!

Copias de seguridad y mantenimiento

Las copias de seguridad y el mantenimiento regular son aspectos críticos para cualquier sistema en producción, incluyendo Qdrant. La pérdida de datos vectoriales puede ser catastrófica para las aplicaciones de IA.

1. Qué respaldar

Para Qdrant, es necesario respaldar regularmente los siguientes componentes:

  • Datos de Qdrant: Este es el componente más importante, que incluye todas las colecciones, vectores y metadatos. Se almacenan en el directorio que montamos como ./data (por ejemplo, ~/qdrant/data).
  • Archivos de configuración: Si utiliza un qdrant_config.yaml personalizado, también debe respaldarlo.
  • Configuración de Caddy: El archivo Caddyfile y los directorios caddy/data y caddy/config (para almacenar certificados SSL).
  • Archivo Docker Compose: docker-compose.yml, para poder restaurar rápidamente toda la infraestructura.

2. Script simple de copia de seguridad automática

Crearemos un script simple que creará instantáneas de Qdrant y luego las archivará junto con otros archivos importantes. Qdrant proporciona una API para almacenar instantáneas.

Cree el script backup_qdrant.sh en el directorio ~/qdrant/scripts:


mkdir -p ~/qdrant/scripts
nano ~/qdrant/scripts/backup_qdrant.sh

Contenido del script:


#!/bin/bash

# --- Настройки ---
BACKUP_DIR="/var/backups/qdrant" # Директория для хранения бэкапов на сервере
QDRANT_CONTAINER_NAME="qdrant_db"
QDRANT_HOST="localhost:6333" # Внутренний доступ к Qdrant изнутри докера
TIMESTAMP=$(date +%Y%m%d%H%M%S)
SNAPSHOT_NAME="qdrant_snapshot_${TIMESTAMP}.snapshot"
QDRANT_DATA_PATH="/qdrant/data" # Путь данных внутри контейнера Qdrant
LOCAL_QDRANT_DATA_PATH="/home/qdrant_admin/qdrant/data" # Путь данных на хосте

# --- Создание директории для бэкапов ---
mkdir -p "${BACKUP_DIR}"

# --- 1. Создание снапшота Qdrant ---
echo "Создание снапшота Qdrant..."
# Используем Docker exec для создания снапшота через API Qdrant
docker exec -it "${QDRANT_CONTAINER_NAME}" curl -X POST "http://${QDRANT_HOST}/collections/{collection_name}/snapshots" -H "Content-Type: application/json" -d '{}'

# Qdrant сохраняет снапшоты в свою директорию данных.
# Мы будем бэкапить всю директорию данных Qdrant, которая включает снапшоты.
# Это упрощает процесс, так как снапшоты уже находятся в монтированной директории.

# --- 2. Архивирование всех необходимых файлов ---
echo "Архивирование Qdrant данных и конфигураций..."
tar -czf "${BACKUP_DIR}/qdrant_backup_${TIMESTAMP}.tar.gz" -C /home/qdrant_admin/qdrant data docker-compose.yml qdrant_config.yaml caddy/Caddyfile caddy/data caddy/config

# --- 3. Очистка старых бэкапов (например, хранить последние 7 дней) ---
echo "Очистка старых бэкапов..."
find "${BACKUP_DIR}" -type f -name "qdrant_backup_*.tar.gz" -mtime +7 -delete

echo "Бэкап Qdrant завершен: ${BACKUP_DIR}/qdrant_backup_${TIMESTAMP}.tar.gz"

Notas importantes:

  • El script crea instantáneas para cada colección. Si hay muchas colecciones, esto puede ser lento. Qdrant 1.14.0 (versión estimada para 2026) podría tener una API para crear instantáneas globales. En el script actual, para simplificar, confiamos en que Qdrant guarda las instantáneas en su directorio de datos, y respaldamos todo ese directorio.
  • Para crear una instantánea de una colección, deberá reemplazar {collection_name} con el nombre de su colección. Para automatizar, puede obtener una lista de colecciones a través de la API y crear un bucle. Para simplificar, aquí se respalda todo el directorio de datos, que ya contiene las instantáneas.
  • tar -czf ... -C /home/qdrant_admin/qdrant data docker-compose.yml ...: Este comando archiva el directorio data (que contiene los datos de Qdrant y las instantáneas creadas por él), así como docker-compose.yml y las configuraciones de Caddy.

Haga el script ejecutable:


chmod +x ~/qdrant/scripts/backup_qdrant.sh

3. Programación de copias de seguridad con Cron

Agregue el script a Cron para su ejecución automática. Por ejemplo, diariamente a las 3:00 de la madrugada.


crontab -e

Agregue la siguiente línea al final del archivo:


0 3 * * * /home/qdrant_admin/qdrant/scripts/backup_qdrant.sh >> /var/log/qdrant_backup.log 2>&1

Esta línea significa: "Cada día a las 3 horas y 0 minutos, ejecutar el script y redirigir su salida a un archivo de registro".

4. Dónde almacenar las copias de seguridad (almacenamiento externo)

Almacenar las copias de seguridad en el mismo servidor que los datos es arriesgado. Si el servidor falla, perderá tanto los datos como las copias de seguridad. Se recomienda utilizar almacenamiento externo:

  • Almacenamiento compatible con S3: Servicios en la nube como AWS S3, Backblaze B2, DigitalOcean Spaces. Puede usar rclone o s3cmd para sincronizar automáticamente los archivos de /var/backups/qdrant a S3.
  • VPS separado: Puede configurar un segundo VPS menos potente y usar rsync a través de SSH para copiar las copias de seguridad.
  • Restic/BorgBackup: Estas herramientas proporcionan copias de seguridad deduplicadas y cifradas, compatibles con múltiples backends, incluyendo S3 y SSH.

Ejemplo de uso de rclone para S3 (se asume que rclone está instalado y configurado):


# Добавить в скрипт backup_qdrant.sh после tar-архивирования
echo "Sincronizando copias de seguridad con S3..."
rclone sync "${BACKUP_DIR}" "s3_remote:qdrant-backups" --include "*.tar.gz"

5. Actualizaciones: rolling vs ventana de mantenimiento

  • Actualización de Qdrant: Para actualizar Qdrant a una nueva versión (por ejemplo, de 1.14.0 a 1.15.0), basta con cambiar la etiqueta de la imagen en docker-compose.yml y reiniciar el contenedor:
    
    # Изменить image: qdrant/qdrant:1.14.0 на qdrant/qdrant:1.15.0
    nano docker-compose.yml
    docker compose pull qdrant # Скачать новый образ
    docker compose up -d # Перезапустить с новым образом
                

    Qdrant suele ser compatible con versiones anteriores, pero siempre lea las notas de la versión. Para actualizaciones críticas, es mejor planificar una maintenance window (ventana de mantenimiento) para minimizar los riesgos.

  • Actualización del SO y Docker: Actualice regularmente el sistema operativo y Docker Engine. Para ello, puede usar sudo apt update && sudo apt upgrade -y. Esto también se recomienda hacer en una maintenance window, ya que puede requerir un reinicio del servidor.
  • Actualizaciones continuas (para clúster): Si utiliza Qdrant en modo clúster (más de un nodo), puede realizar actualizaciones continuas, actualizando los nodos uno por uno para mantener la disponibilidad del servicio. Para un solo VPS, esto no es relevante.

Siempre pruebe las actualizaciones en un entorno de prueba antes de aplicarlas en producción.

Solución de problemas + Preguntas frecuentes

Esta sección recopila problemas típicos que pueden surgir durante el despliegue y la operación de Qdrant, así como respuestas a preguntas frecuentes.

Caddy no obtiene el certificado SSL o no se inicia

Error: Caddy no se inicia, o recibe el error "Your connection is not private" en el navegador.

Qué verificar:

  • Asegúrese de que el registro DNS (tipo A) para su dominio (por ejemplo, qdrant.example.com) apunte a la dirección IP pública de su VPS. Use dig qdrant.example.com o herramientas en línea para verificar.
  • Verifique los registros del contenedor Caddy: docker compose logs caddy. Busque errores relacionados con Let's Encrypt o la vinculación de puertos.
  • Asegúrese de que los puertos 80 y 443 estén abiertos en el firewall UFW: sudo ufw status verbose.
  • Verifique la sintaxis de Caddyfile: docker run --rm -it -v ~/qdrant/caddy/Caddyfile:/etc/caddy/Caddyfile caddy:2.8.0-alpine caddy validate --config /etc/caddy/Caddyfile.

Cómo solucionarlo: Corrija el registro DNS, abra los puertos en UFW, corrija la sintaxis de Caddyfile y reinicie Caddy: docker compose restart caddy.

Qdrant no está disponible o devuelve errores

Error: Las solicitudes a Qdrant (a través de Caddy o directamente al puerto 6333) fallan o devuelven errores 500/502.

Qué verificar:

  • Verifique el estado del contenedor Qdrant: docker compose ps. Asegúrese de que esté en estado "running".
  • Verifique los registros del contenedor Qdrant: docker compose logs qdrant. Busque mensajes de error o excepciones.
  • Asegúrese de que Qdrant sea accesible dentro de la red Docker: docker exec qdrant_db curl -s http://localhost:6333/collections.
  • Verifique si el servidor tiene suficiente memoria RAM. Si Qdrant usa demasiada memoria, podría ser eliminado por el OOM killer.

Cómo solucionarlo: Reinicie el contenedor Qdrant: docker compose restart qdrant. Si el problema es de memoria, considere aumentar la RAM del VPS u optimizar la configuración de Qdrant (por ejemplo, reduciendo el tamaño de las cachés). Verifique el archivo qdrant_config.yaml en busca de errores.

Búsqueda o indexación de vectores lenta

Error: Las solicitudes de búsqueda o las operaciones de indexación tardan demasiado.

Qué verificar:

  • E/S de disco: Asegúrese de que su VPS use NVMe SSD. Un disco lento afecta significativamente el rendimiento de Qdrant.
  • RAM: Qdrant utiliza activamente la RAM para los índices. Si la RAM es insuficiente, los datos se cargan constantemente desde el disco, lo que ralentiza el rendimiento. Verifique el uso de memoria: docker stats.
  • CPU: La búsqueda y la indexación son operaciones intensivas en CPU. Verifique la carga de la CPU: htop.
  • Configuración de Qdrant: Parámetros max_search_threads y max_optimization_threads en qdrant_config.yaml o variables de entorno. Auméntelos si hay núcleos de CPU disponibles.
  • Dimensionalidad de vectores y tipo de índice: Una dimensionalidad muy alta o un tipo de índice inadecuado (por ejemplo, sin usar HNSW) pueden ralentizar la búsqueda.

Cómo solucionarlo: Aumente los recursos del VPS (RAM, CPU). Optimice la configuración de Qdrant. Asegúrese de usar el índice HNSW para las colecciones. Considere reducir la dimensionalidad de los vectores, si es posible.

¿Qué configuración mínima de VPS es adecuada?

Para proyectos pequeños, pruebas y desarrollo, un VPS con 2 núcleos de CPU, 4 GB de RAM y 50 GB de NVMe SSD será suficiente. Esto bastará para almacenar varios cientos de miles de vectores de dimensionalidad media y manejar una carga baja. Sin embargo, para un entorno de producción con millones de vectores y solicitudes activas, se recomienda un mínimo de 4 núcleos de CPU, 16 GB de RAM y 200 GB de NVMe SSD.

¿Qué elegir: VPS o dedicado para esta tarea?

La elección entre un VPS y un servidor dedicado depende de la escala de su proyecto. Un VPS es ideal para la mayoría de las aplicaciones de IA medianas y grandes, ofreciendo un buen equilibrio entre costo, flexibilidad y rendimiento. Es adecuado si trabaja con millones de vectores y una carga moderada o alta. Un servidor dedicado es necesario para proyectos muy grandes (miles de millones de vectores, terabytes de datos), cargas extremadamente altas, o si se requieren recursos de hardware especializados (por ejemplo, GPU) que no siempre están disponibles en un VPS. Un servidor dedicado también proporciona aislamiento físico completo y un rendimiento predecible sin los efectos de "vecindario ruidoso" de la virtualización.

¿Cómo actualizar Qdrant a una nueva versión?

Actualizar Qdrant, desplegado a través de Docker Compose, es muy sencillo. Debe cambiar la etiqueta de la imagen en el archivo docker-compose.yml (por ejemplo, de qdrant/qdrant:1.14.0 a qdrant/qdrant:1.15.0), guardar el archivo, luego ejecutar docker compose pull qdrant para descargar la nueva imagen y docker compose up -d para reiniciar el contenedor con la nueva versión. Siempre lea la documentación de Qdrant sobre la compatibilidad de versiones antes de actualizar.

¿Puedo usar Qdrant sin Caddy (sin HTTPS)?

Sí, puede acceder a Qdrant directamente por HTTP, usando la dirección IP de su VPS y el puerto 6333 (por ejemplo, http://SU_DIRECCIÓN_IP_VPS:6333). Sin embargo, esto es altamente desaconsejable para un entorno de producción, ya que todo el tráfico se transmitirá sin cifrar, lo cual no es seguro. Caddy proporciona HTTPS de forma automática y gratuita, por lo que su uso es un estándar de seguridad.

Conclusiones y próximos pasos

¡Felicidades! Ha desplegado con éxito Qdrant Vector Database en su servidor VPS, asegurándolo con claves SSH, UFW, Fail2ban y HTTPS a través de Caddy. Su propia base de datos vectorial está lista para funcionar, proporcionando una base sólida para sus aplicaciones de IA.

Ahora que Qdrant está en funcionamiento, puede:

  • Integrar Qdrant con sus aplicaciones de IA: Comience a cargar vectores (embeddings) de sus datos y use Qdrant para búsqueda semántica, recomendaciones o en arquitecturas RAG. Utilice los clientes oficiales de Qdrant para Python, Rust, Go o TypeScript.
  • Monitoreo y optimización: Configure un sistema de monitoreo (por ejemplo, Prometheus + Grafana) para rastrear el rendimiento de Qdrant (uso de CPU, RAM, E/S, latencias de consulta) y optimice la configuración según sea necesario.
  • Escalado: A medida que aumenten los requisitos, considere escalar Qdrant horizontalmente, desplegándolo en modo clúster en varios VPS o servidores dedicados para mejorar la tolerancia a fallos y el rendimiento.

¿Te fue útil esta guía?

Despliegue de Qdrant vector database en VPS para aplicaciones de IA: paso a paso
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.