Indice del diarioDockup / nota dal campo
Note / self-host-qdrant

Come fare self-hosting di Qdrant nel 2026: storage, API key e backup

Una guida pratica al self-hosting di Qdrant che illustra Docker, porte, dati persistenti, TLS, sicurezza, backup e i problemi che ne impediscono l'uso in produzione. Passo dopo passo.

Il self-hosting di Qdrant diventa interessante al primo redeploy, non al primo docker run. Se i permessi dello storage non funzionano o il client usa la porta 6334 mentre è instradata solo la 6333, Docker può comunque segnalare un processo perfettamente funzionante. Il deployment qui descritto è organizzato attorno a comportamenti osservabili: creare una collection con la dimensione vettoriale prevista, inserire punti con payload, eseguire una query di nearest-neighbor filtrata e ripristinare uno snapshot della collection.

L'uso previsto di Qdrant è esplicito: database vettoriale per embeddings e sistemi di retrieval. Questa definizione indica cosa deve essere esposto, cosa dovrebbe rimanere privato e cosa deve ricostruire un backup.

Mappa Qdrant prima di toccare Docker

Non lasciare che l'immagine di Qdrant definisca accidentalmente l'architettura di produzione. L'immagine fornisce un processo sulla porta 6333; storage, routing e requisiti esterni richiedono comunque lifecycle gestiti intenzionalmente. Il requisito del runtime locale è disporre di RAM e disco sufficienti per dimensioni vettoriali, payload e indici. Documenta capacità prevista, ownership e modalità di errore invece di lasciare tutto ai valori predefiniti dell'immagine.

Il deployment è pronto per test più approfonditi quando può creare una collection con la dimensione vettoriale prevista, inserire punti con payload, eseguire una query di nearest-neighbor filtrata e ripristinare uno snapshot della collection. Segui la transazione nei log e monitora dimensioni dei vettori, costruzione di HNSW, indici dei payload, repliche delle collection e differenza tra dati memory-mapped e RAM disponibile. Queste osservazioni mostrano se la topologia attuale isola il componente corretto.

Instrada Qdrant senza fingere che HTTPS sia già configurato

Scegli l'hostname definitivo di Qdrant prima che gli utenti salvino callback o impostazioni del client, quindi mantieni REST pubblico solo quando i client ne hanno davvero bisogno e mantieni gRPC privato. Il route della piattaforma dovrebbe terminare TLS una sola volta e puntare alla porta privata 6333.

Esegui la transazione di accettazione dall'esterno. Se il client non raggiunge Qdrant, usa la checklist per la validazione SSL per verificare DNS e certificato. Se la richiesta raggiunge Qdrant ma i permessi dello storage non funzionano o il client usa la porta 6334 mentre è instradata solo la 6333, smetti di modificare i redirect del proxy e ispeziona invece il boundary specifico dell'applicazione.

Trasforma il comando locale in un servizio ispezionabile

Usa un comando che renda esplicita ogni scelta importante. Questa configurazione di base vincola Qdrant al loopback dell'host, aggiunge i mount dei dati noti e fornisce la prima impostazione necessaria. Verifica il requisito del runtime locale prima dell'esposizione: RAM e disco sufficienti per dimensioni vettoriali, payload e indici.

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

Sostituisci i tag floating con una versione testata o con un digest. Dopo l'avvio, controlla docker logs --tail 200 qdrant e verifica che il processo sia in ascolto sulla porta 6333. Esegui quindi l'azione di accettazione di Qdrant; una risposta dalla root non dimostra che l'intero scenario funzioni: creare una collection con la dimensione vettoriale prevista, inserire punti con payload, eseguire una query di nearest-neighbor filtrata e ripristinare uno snapshot della collection.

Aggiorna Qdrant senza procedere per tentativi

I test di capacità devono esercitare dimensioni vettoriali, costruzione di HNSW, indici dei payload, repliche delle collection e differenza tra dati memory-mapped e RAM disponibile, non una richiesta ripetuta a /. Esegui lo scenario “creare una collection con la dimensione vettoriale prevista, inserire punti con payload, eseguire una query di nearest-neighbor filtrata e ripristinare uno snapshot della collection” con concorrenza realistica e registra latenza, tasso di errore e crescita dello storage.

La pianificazione dell'upgrade deve tenere conto di questo rischio: gli snapshot delle collection, la compatibilità del formato di storage e il comportamento della client library devono essere testati prima di passare a una nuova versione del server. Testa la nuova release con input rappresentativi, quindi ripeti la transazione di accettazione e confronta il risultato. Se i permessi dello storage non funzionano o il client usa la porta 6334 mentre è instradata solo la 6333, acquisisci la transazione che fallisce e ispeziona il primo boundary coinvolto invece di presumere che la responsabilità sia dell'ingress.

Trasforma lo smoke test di Qdrant in un controllo di release

Una release candidate di Qdrant si guadagna il traffico completando uno scenario fisso: creare una collection con la dimensione vettoriale prevista, inserire punti con payload, eseguire una query di nearest-neighbor filtrata e ripristinare uno snapshot della collection. Acquisisci il digest dell'immagine, la configurazione effettiva non sensibile, l'origine pubblica e i timestamp relativi a quello scenario. I dati di test devono essere eliminabili, ma abbastanza realistici da esercitare lo stesso percorso seguito dagli utenti.

Eseguilo dopo aver sostituito il runtime, quindi ricostruisci il servizio dagli snapshot di Qdrant e dalla directory di storage persistente. Il recovery ha esito positivo quando uno snapshot ricrea la collection con lo stesso numero di punti, la stessa configurazione vettoriale e risultati rappresentativi delle query. Confronta con la release precedente le misurazioni delle risorse relative a dimensioni vettoriali, costruzione di HNSW, indici dei payload, repliche delle collection e differenza tra dati memory-mapped e RAM disponibile, quindi analizza ogni variazione significativa prima della promozione.

Infine, esegui questo errore controllato: invia un input innocuo vicino al limite di risorse o di formato associato a questo boundary: i permessi dello storage non funzionano oppure il client usa la porta 6334 mentre è instradata solo la 6333. Verifica che Qdrant spieghi l'errore, non danneggi lo stato esistente e riprenda a funzionare quando la condizione valida torna disponibile. Salva un estratto dei log anonimizzato e il tempo di recovery. Nel complesso, questi controlli coprono comportamento, durabilità e operatività, non solo l'uptime del processo.

Dimostra che Qdrant sopravvive alla sostituzione

Per Qdrant, la sicurezza del redeploy inizia dagli snapshot di Qdrant e dalla directory di storage persistente. Monta /qdrant/storage prima del bootstrap, scrivi dati di esempio innocui e sostituisci il container per dimostrare che il percorso è effettivamente persistente. Verifica il percorso sostituendo il container mentre sono presenti dati di esempio innocui; questo mette in evidenza i mount puntati a una directory troppo in alto o troppo in basso.

Testa quindi il disaster recovery su un host vuoto. Quando necessario, usa un export del database coerente con l'applicazione e verifica che uno snapshot ricrei la collection con lo stesso numero di punti, la stessa configurazione vettoriale e risultati rappresentativi delle query. La guida al backup del database testato con un restore fornisce un obiettivo più solido del semplice controllo della creazione di un file di archivio.

Credenziali, ruoli e superfici esposte

Per Qdrant, la superficie di valore non coincide necessariamente con la landing page. L'errore principale è pubblicare su Internet un'API senza autenticazione. Contrastalo in modo intenzionale: assegna ai servizi di ingestion un accesso API con privilegi limitati e mantieni l'intera API amministrativa su una route privata.

Gestisci QDRANT__SERVICE__API_KEY in base al suo ruolo in Qdrant: mantieni i valori sensibili fuori da Git, documenta gli effetti della rotazione e non sostituire mai un esempio pubblico in produzione. Usa un container user senza privilegi quando l'immagine lo supporta e non montare credenziali non pertinenti. Applica limiti di rate o di dimensione all'ingress, dove il lavoro non attendibile può consumare dimensioni vettoriali, costruzione di HNSW, indici dei payload, repliche delle collection e la differenza tra dati memory-mapped e RAM disponibile.

Sposta il lavoro infrastrutturale ripetibile su Dockup

Dockup può gestire i componenti sostituibili della piattaforma: instradare il traffico verso la porta 6333, emettere dominio e certificato, iniettare i secret, collegare lo storage persistente e connettere Qdrant a servizi gestiti o collegati privatamente. Può farlo sull'infrastruttura Dockup o su un server collegato da te.

Il lavoro di accettazione di Qdrant rimane esplicito. Dopo il deployment one-click, mantieni REST pubblico solo quando i client ne hanno davvero bisogno e mantieni gRPC privato, verifica il requisito locale — RAM e disco sufficienti per dimensioni vettoriali, payload e indici — ed esegui questo scenario: creare una collection con la dimensione vettoriale prevista, inserire punti con payload, eseguire una query di nearest-neighbor filtrata e ripristinare uno snapshot della collection. Questa divisione è intenzionale: Dockup elimina la configurazione infrastrutturale ripetitiva senza fingere che ruoli applicativi, credenziali del provider o policy di restore si scelgano da soli.

Domande frequenti

Di cosa ha bisogno Qdrant per un deployment in produzione?

Instrada il container Qdrant sulla porta 6333 attraverso un'unica origine HTTPS. Il requisito del runtime locale è disporre di RAM e disco sufficienti per dimensioni vettoriali, payload e indici. Non considerare Qdrant pronto finché non puoi creare una collection con la dimensione vettoriale prevista, inserire punti con payload, eseguire una query di nearest-neighbor filtrata e ripristinare uno snapshot della collection.

Quali dati di Qdrant devono essere inclusi in un backup?

Rendi persistente /qdrant/storage e includi gli snapshot di Qdrant e la directory di storage persistente nello stesso manifest di recovery. Un restore pulito di Qdrant ha esito positivo solo quando uno snapshot ricrea la collection con lo stesso numero di punti, la stessa configurazione vettoriale e risultati rappresentativi delle query.

Qdrant richiede HTTPS dietro un reverse proxy?

Usa HTTPS per l'origine pubblica di Qdrant e mantieni la porta 6333 nella route interna. Applica correttamente l'impostazione di Qdrant: mantieni REST pubblico solo quando i client ne hanno davvero bisogno e mantieni gRPC privato. Per Qdrant, HTTPS protegge le credenziali o i contenuti degli utenti durante il transito e mantiene coerente il comportamento dei client sensibile all'origine.

Come si deve testare un upgrade di Qdrant?

Ripristina lo stato attuale di Qdrant in un deployment isolato, applica la versione candidata e ripeti la relativa transazione di accettazione. Presta particolare attenzione perché gli snapshot delle collection, la compatibilità del formato di storage e il comportamento della client library devono essere testati prima di passare a una nuova versione del server. Mantieni l'immagine precedente di Qdrant finché non sono chiari i limiti della migrazione dei dati e del rollback.