Índice do diárioDockup / nota de campo
Note / self-host-qdrant

Como fazer self-hosting do Qdrant em 2026: armazenamento, chaves de API e backups

Um guia prático para fazer self-hosting do Qdrant, abordando Docker, portas, dados persistentes, TLS, segurança, backups e as falhas que impedem o uso em produção. Passo a passo.

Fazer self-hosting do Qdrant torna-se interessante no primeiro redeploy, não no primeiro docker run. Se as permissões de armazenamento falharem ou o cliente usar a porta 6334 enquanto apenas a 6333 está encaminhada, o Docker ainda pode reportar um processo perfeitamente saudável. A implementação abaixo está organizada em torno de comportamentos observáveis: criar uma collection com o tamanho de vetor pretendido, inserir pontos com payload, executar uma consulta de vizinhos mais próximos com filtro e restaurar um snapshot de collection.

A finalidade do Qdrant é explícita: uma base de dados vetorial para embeddings e sistemas de retrieval. Essa descrição indica o que precisa ficar público, o que deve permanecer privado e o que um backup precisa reconstruir.

Mapear o Qdrant antes de mexer no Docker

Não deixe que a imagem do Qdrant determine a arquitetura de produção por acidente. A imagem fornece um processo na porta 6333; o armazenamento, o routing e os requisitos externos ainda precisam de ciclos de vida definidos de forma deliberada. O requisito do runtime local é ter RAM e disco suficientes para as dimensões dos vetores, os payloads e os índices. Documente a capacidade esperada, a ownership e o modo de falha, em vez de deixar isso como um default da imagem.

A implementação está pronta para testes mais profundos quando consegue criar uma collection com o tamanho de vetor pretendido, inserir pontos com payload, executar uma consulta de vizinhos mais próximos com filtro e restaurar um snapshot de collection. Acompanhe a transação nos logs e observe as dimensões dos vetores, a construção do HNSW, os índices de payload, as réplicas da collection e a diferença entre dados memory-mapped e a RAM disponível. Essas observações revelam se a topologia atual isola o componente certo.

Encaminhar o Qdrant sem fingir que existe HTTPS

Escolha o hostname final do Qdrant antes de os utilizadores guardarem callbacks ou definições do cliente; depois, mantenha o REST público apenas quando os clientes realmente precisarem dele e mantenha o gRPC privado. A rota da plataforma deve terminar o TLS uma vez e apontar para a porta privada 6333.

Execute a transação de aceitação externamente. Se o cliente nunca chegar ao Qdrant, use a checklist de validação de SSL para verificar o DNS e o certificado. Se o pedido chegar ao Qdrant, mas as permissões de armazenamento falharem ou o cliente usar a porta 6334 enquanto apenas a 6333 está encaminhada, pare de alterar redirects do proxy e inspecione a boundary específica da aplicação.

Transformar o comando local num serviço inspecionável

Use um comando que exponha todas as escolhas importantes. Esta configuração base associa o Qdrant ao loopback do host, adiciona os mounts de dados conhecidos e fornece a primeira definição obrigatória. Confirme o requisito local antes da exposição: RAM e disco suficientes para as dimensões dos vetores, os payloads e os í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

Substitua tags flutuantes por uma versão ou digest testado. Depois do arranque, inspecione docker logs --tail 200 qdrant e confirme que o processo está a escutar na porta 6333. Em seguida, execute a ação de aceitação do Qdrant; uma resposta da página inicial não consegue provar que o cenário completo funciona: criar uma collection com o tamanho de vetor pretendido, inserir pontos com payload, executar uma consulta de vizinhos mais próximos com filtro e restaurar um snapshot de collection.

Atualizar o Qdrant sem adivinhar

Os testes de capacidade devem exercitar as dimensões dos vetores, a construção do HNSW, os índices de payload, as réplicas da collection e a diferença entre dados memory-mapped e a RAM disponível, e não repetir um pedido para /. Execute o cenário “criar uma collection com o tamanho de vetor pretendido, inserir pontos com payload, executar uma consulta de vizinhos mais próximos com filtro e restaurar um snapshot de collection” com concorrência realista e registe a latência, a taxa de erros e o crescimento do armazenamento.

O planeamento da atualização deve considerar este risco: os snapshots de collections, a compatibilidade do formato de armazenamento e o comportamento da client library merecem ser testados antes de avançar a versão do servidor. Teste a nova release com dados representativos, depois repita a transação de aceitação e compare o resultado. Se as permissões de armazenamento falharem ou o cliente usar a porta 6334 enquanto apenas a 6333 está encaminhada, capture a transação que falhou e inspecione a primeira boundary envolvida, em vez de assumir que o ingress é responsável.

Transformar o smoke test do Qdrant numa verificação de release

Um release candidate do Qdrant conquista tráfego ao concluir um cenário fixo: criar uma collection com o tamanho de vetor pretendido, inserir pontos com payload, executar uma consulta de vizinhos mais próximos com filtro e restaurar um snapshot de collection. Registe o digest da imagem, a configuração efetiva não secreta, a origem pública e os timestamps desse cenário. Os dados de teste devem ser descartáveis, mas suficientemente realistas para exercitar o mesmo caminho usado pelos utilizadores.

Execute-o depois de substituir o runtime e, em seguida, reconstrua o serviço a partir dos snapshots do Qdrant e do diretório de armazenamento persistente. A recuperação é bem-sucedida quando um snapshot recria a collection com a mesma quantidade de pontos, a mesma configuração de vetores e resultados representativos de consulta. Compare com a release anterior as medições de recursos relativas às dimensões dos vetores, à construção do HNSW, aos índices de payload, às réplicas da collection e à diferença entre dados memory-mapped e RAM disponível; investigue desvios significativos antes da promoção.

Por fim, exercite esta falha controlada: envie dados inofensivos próximos do limite de recursos ou de formato associado a esta boundary: as permissões de armazenamento falham ou o cliente usa a porta 6334 enquanto apenas a 6333 está encaminhada. Verifique se o Qdrant explica a falha, não danifica o estado existente e retoma o funcionamento quando a condição válida regressa. Guarde um excerto de log redigido e o tempo de recuperação. Em conjunto, estas verificações cobrem comportamento, durabilidade e operabilidade, e não apenas o uptime do processo.

Comprovar que o Qdrant sobrevive à substituição

No Qdrant, a segurança do redeploy começa pelos snapshots do Qdrant e pelo diretório de armazenamento persistente. Monte /qdrant/storage antes do bootstrap, escreva dados de exemplo inofensivos e substitua o container para provar que esse caminho é realmente persistente. Teste o caminho substituindo o container enquanto existirem dados de exemplo inofensivos; isto revela mounts apontados um diretório acima ou abaixo do necessário.

Em seguida, teste a recuperação de desastre num host vazio. Use, quando necessário, uma exportação da base de dados consistente com a aplicação e verifique se um snapshot recria a collection com a mesma quantidade de pontos, a mesma configuração de vetores e resultados representativos de consulta. O guia de backup de bases de dados com restore testado fornece um objetivo mais sólido do que simplesmente verificar se foi criado um ficheiro de arquivo.

Credenciais, roles e superfícies expostas

No Qdrant, a superfície valiosa não é necessariamente a landing page. O principal erro é publicar uma API sem autenticação na internet. Neutralize-o deliberadamente: conceda acesso à API com permissões limitadas aos serviços de ingestão e mantenha a API administrativa completa numa rota privada.

Trate QDRANT__SERVICE__API_KEY de acordo com a sua função no Qdrant: mantenha os valores sensíveis fora do Git, documente os efeitos da rotação e nunca substitua um exemplo público em produção. Use um utilizador de container sem privilégios quando a imagem o suportar e não monte credenciais não relacionadas. Aplique limites de rate ou de tamanho no ingress quando trabalho não confiável puder consumir dimensões de vetores, construção do HNSW, índices de payload, réplicas da collection e a diferença entre dados memory-mapped e RAM disponível.

Transferir o trabalho repetitivo de infraestrutura para o Dockup

O Dockup pode assumir as peças substituíveis da plataforma: encaminhar o tráfego para a porta 6333, emitir o domínio e o certificado, injetar secrets, associar armazenamento persistente e ligar o Qdrant a serviços geridos ou associados de forma privada. Pode fazer isso na infraestrutura do Dockup ou num servidor que associe.

O trabalho de aceitação do Qdrant continua explícito. Depois da implementação one-click, mantenha o REST público apenas quando os clientes realmente precisarem dele e mantenha o gRPC privado, confirme o requisito local — RAM e disco suficientes para as dimensões dos vetores, os payloads e os índices — e execute este cenário: criar uma collection com o tamanho de vetor pretendido, inserir pontos com payload, executar uma consulta de vizinhos mais próximos com filtro e restaurar um snapshot de collection. Esta divisão é intencional: o Dockup elimina a configuração repetitiva da infraestrutura sem fingir que as roles da aplicação, as credenciais do provider ou a política de restore se escolhem sozinhas.

Perguntas frequentes

O que o Qdrant precisa para uma implementação em produção?

Encaminhe o container do Qdrant na porta 6333 através de uma única origem HTTPS. O requisito do runtime local é ter RAM e disco suficientes para as dimensões dos vetores, os payloads e os índices. Não considere o Qdrant pronto até conseguir criar uma collection com o tamanho de vetor pretendido, inserir pontos com payload, executar uma consulta de vizinhos mais próximos com filtro e restaurar um snapshot de collection.

Que dados do Qdrant devem fazer parte de um backup?

Persista /qdrant/storage e inclua os snapshots do Qdrant e o diretório de armazenamento persistente no mesmo manifesto de recuperação. Um restore limpo do Qdrant só é bem-sucedido quando um snapshot recria a collection com a mesma quantidade de pontos, a mesma configuração de vetores e resultados representativos de consulta.

O Qdrant precisa de HTTPS atrás de um reverse proxy?

Use HTTPS para a origem pública do Qdrant e mantenha a porta 6333 na rota interna. Aplique corretamente a definição do Qdrant: mantenha o REST público apenas quando os clientes realmente precisarem dele e mantenha o gRPC privado. No Qdrant, o HTTPS protege as credenciais ou o conteúdo dos utilizadores em trânsito e mantém consistente o comportamento do cliente dependente da origem.

Como deve ser testada uma atualização do Qdrant?

Restaure o estado atual do Qdrant numa implementação isolada, aplique a versão candidata e repita a respetiva transação de aceitação. Preste especial atenção, porque os snapshots de collections, a compatibilidade do formato de armazenamento e o comportamento da client library merecem ser testados antes de avançar a versão do servidor. Mantenha a imagem anterior do Qdrant até compreender os limites da migração de dados e do rollback.