Index du journalDockup / note de terrain
Note / self-host-typesense

Comment auto-héberger Typesense en 2026 : clés API, collections et sauvegardes

Auto-hébergez Typesense avec les bons ports, un stockage persistant, HTTPS, des secrets, des sauvegardes et des contrôles de mise à niveau. Découvrez comment corriger l’absence de --data-dir dans la commande.

La démonstration Typesense la plus simple prouve qu’un processus écoute sur le port 8108. En production, il faut des preuves plus solides. Ce scénario doit réussir même après le remplacement du container : définir un schéma de collection, importer des documents d’exemple, effectuer une recherche tolérant les fautes, utiliser des facettes et des filtres, puis tester l’endpoint de health check.

Typesense est déployé dans un but précis : fournir un moteur de recherche instantané avec une API HTTP simple. Le piège de déploiement le plus courant est l’absence de --data-dir dans la commande ou l’utilisation d’un chemin incorrect par les health checks. La gestion de l’URL publique et la persistance de l’état doivent donc recevoir la même attention que le démarrage de l’image.

Réduire les privilèges accordés à Typesense

Le principal risque de sécurité propre à l’application consiste à intégrer la clé API d’administration bootstrap dans le code du navigateur. La bonne pratique opérationnelle est de ne jamais transmettre cette clé au navigateur ; générez plutôt des clés de recherche limitées pour les clients publics. Terminez le bootstrap via une route restreinte, puis supprimez immédiatement l’accès temporaire à la fin de la configuration.

Traitez TYPESENSE_API_KEY selon son rôle dans Typesense : gardez les valeurs sensibles hors de Git, documentez les effets de leur rotation et ne remplacez jamais une valeur publique d’exemple en production. Accordez au processus Typesense uniquement les mounts et les routes de dépendance documentés ; évitez tout accès à la racine de l’hôte et au socket Docker. Journalisez les échecs d’authentification et les erreurs de configuration, mais masquez les tokens, les chaînes de connexion et le contenu utilisateur.

L’architecture de production de Typesense

Le processus HTTP de Typesense écoute sur le port 8108 ; conservez ce port sur le réseau de l’application et n’exposez que la route de la plateforme. L’exigence locale d’exécution concerne le disque nécessaire aux collections et une quantité de mémoire suffisante pour le dataset actif. Documentez la capacité attendue, les permissions et le mode de défaillance au lieu de vous en remettre aux valeurs par défaut de l’image.

Formalisez la frontière sous la forme d’un contrat court : qui est responsable de l’exigence, quel credential est utilisé, quel timeout est acceptable et comment la défaillance se manifeste. Exécutez ensuite cette transaction : définir un schéma de collection, importer des documents d’exemple, effectuer une recherche tolérant les fautes, utiliser des facettes et des filtres, puis tester l’endpoint de health check. Observez la RAM nécessaire aux index actifs, la taille des imports en masse, la persistance sur disque et le trafic de réplication du cluster pendant l’exécution, car cette charge fournit une estimation initiale plus utile qu’un container inactif.

Paramètres du container à vérifier

Le premier container doit être facile à supprimer et à recréer. Conservez les données en dehors de la writable layer, ne liez le port 8108 que là où le proxy peut l’atteindre et transmettez la configuration au runtime.

docker run -d \
  --name typesense \
  --restart unless-stopped \
  -p 127.0.0.1:8108:8108 \
  -v typesense-data:/data \
  -e TYPESENSE_API_KEY=replace-with-a-long-random-value \
  -e TYPESENSE_DATA_DIR=/data \
  typesense/typesense:latest

Épinglez l’image après le test initial. Lisez la première erreur au démarrage plutôt que le dernier message de restart, vérifiez chaque mount avec docker inspect et suivez les logs pendant que vous définissez un schéma de collection, importez des documents d’exemple, effectuez une recherche tolérant les fautes, utilisez des facettes et des filtres, puis testez l’endpoint de health check. Cette séquence permet de distinguer une commande d’image incorrecte d’un problème de dépendance ou de permissions.

La release gate de Typesense

Une release candidate de Typesense mérite de recevoir du trafic lorsqu’elle termine un scénario fixe : définir un schéma de collection, importer des documents d’exemple, effectuer une recherche tolérant les fautes, utiliser des facettes et des filtres, puis tester l’endpoint de health check. Capturez le digest de l’image, la configuration effective non secrète, l’origine publique et les timestamps associés à ce scénario. Les données de test doivent être jetables, tout en restant suffisamment réalistes pour emprunter le même chemin que les utilisateurs.

Exécutez ce scénario après avoir remplacé le runtime, puis reconstruisez le service à partir du data directory et, pour les clusters, de snapshots cohérents de chaque nœud. La récupération est réussie lorsque les collections, aliases, overrides et synonyms sont restaurés et que la même requête produit un résultat classé équivalent. Comparez les mesures de ressources — RAM nécessaire aux index actifs, taille des imports en masse, persistance sur disque et trafic de réplication du cluster — avec celles de la release précédente, puis analysez toute dérive significative avant la promotion.

Enfin, provoquez cette défaillance contrôlée : envoyez une entrée inoffensive proche de la limite de ressources ou de format associée à cette frontière : la commande omet --data-dir ou les health checks utilisent le mauvais chemin. Vérifiez que Typesense explique la défaillance, ne dégrade pas l’état existant et reprend son fonctionnement lorsque la condition valide est rétablie. Conservez un extrait de log expurgé et le temps de récupération. Ensemble, ces contrôles couvrent le comportement, la durabilité et l’opérabilité, et pas uniquement la disponibilité du processus.

Exposer Typesense sans donner une fausse impression de HTTPS

La frontière publique de Typesense doit reposer sur un hostname canonique, un TLS automatique et une seule cible interne sur le port 8108. Acheminez l’API HTTP tout en gardant les ports de peering privés, afin que les clients reviennent vers une adresse reconnue par le service.

Si la transaction d’acceptation échoue, classez la première erreur. Les problèmes de DNS, de certificat et de 502 relèvent de la checklist de validation TLS. La condition « la commande omet --data-dir ou les health checks utilisent le mauvais chemin » relève de l’application, une fois qu’une requête a atteint Typesense avec succès.

Répéter la modification risquée de Typesense

Utilisez la définition d’un schéma de collection, l’import de documents d’exemple, la recherche tolérant les fautes, les facettes et les filtres, puis le test de l’endpoint de health check comme smoke test de Typesense après chaque déploiement. Les métriques associées sont la RAM nécessaire aux index actifs, la taille des imports en masse, la persistance sur disque et le trafic de réplication du cluster ; déclenchez des alertes lorsque ces ressources approchent un niveau susceptible de dégrader l’action utilisateur.

Le principal risque de modification vient du fait que les changements de schéma de collection et les snapshots méritent une répétition, car un rollback d’image ne peut pas annuler une modification du format des données. Une release sûre commence par un snapshot restaurable et valide toute modification d’état irréversible avant le basculement du trafic. Lorsque la commande omet --data-dir ou que les health checks utilisent le mauvais chemin, conservez le container défaillant assez longtemps pour lire sa configuration et sa première erreur.

Vérifier que Typesense survit au remplacement

Répertoriez l’état avant la création du premier véritable enregistrement : le data directory et, pour les clusters, des snapshots cohérents de chaque nœud. Montez /data avant le bootstrap, écrivez des données d’exemple inoffensives, puis remplacez le container pour prouver que ce chemin est réellement persistant. Confirmez le mount en écrivant des données inoffensives, en remplaçant Typesense, puis en les relisant.

Les snapshots sont précieux pour effectuer rapidement un rollback, mais une sauvegarde indépendante est nécessaire si l’hôte ou le volume disparaît. Effectuez une restauration dans un environnement vide avec l’image épinglée et vérifiez que les collections, aliases, overrides et synonyms sont restaurés et que la même requête produit un résultat classé équivalent. Utilisez les volumes persistants et les snapshots pour distinguer clairement ces deux mécanismes de récupération.

Un déploiement Dockup nécessite toujours un test d’acceptation de Typesense

Le routage, les certificats, le remplacement des services et le stockage attaché sont de bonnes cibles d’automatisation. Dockup les prend en charge pour Typesense et peut provisionner la base de données managée associée ou se connecter à des services exécutés sur le serveur du client.

En revanche, il ne doit pas inventer la trust policy de Typesense. Après le déploiement, acheminez l’API HTTP tout en gardant les ports de peering privés, appliquez cette règle — ne transmettez jamais la clé d’administration bootstrap au navigateur ; générez des clés de recherche limitées pour les clients publics — et vérifiez le résultat de ce scénario : définir un schéma de collection, importer des documents d’exemple, effectuer une recherche tolérant les fautes, utiliser des facettes et des filtres, puis tester l’endpoint de health check. Vous obtenez ainsi une infrastructure déployable en un clic avec un test d’acceptation propre à l’application.

Foire aux questions

De quoi Typesense a-t-il besoin pour un déploiement en production ?

Acheminez le container Typesense sur le port 8108 via une seule origine HTTPS. L’exigence locale d’exécution concerne le disque nécessaire aux collections et une quantité de mémoire suffisante pour le dataset actif. Ne considérez pas Typesense comme prêt tant que vous ne pouvez pas définir un schéma de collection, importer des documents d’exemple, effectuer une recherche tolérant les fautes, utiliser des facettes et des filtres, puis tester l’endpoint de health check.

Quelles données Typesense doivent être sauvegardées ?

Conservez /data et incluez le data directory ainsi que, pour les clusters, des snapshots cohérents de chaque nœud dans le même recovery manifest. Une restauration propre de Typesense n’est réussie que lorsque les collections, aliases, overrides et synonyms sont restaurés et que la même requête produit un résultat classé équivalent.

Typesense nécessite-t-il HTTPS derrière un reverse proxy ?

Utilisez HTTPS pour l’origine publique de Typesense et conservez le port 8108 sur la route interne. Appliquez correctement le paramètre Typesense : acheminez l’API HTTP tout en gardant les ports de peering privés. Pour Typesense, HTTPS protège les credentials ou le contenu utilisateur pendant leur transport et garantit un comportement cohérent des clients dépendant de l’origine.

Comment tester une mise à niveau de Typesense ?

Restaurez l’état actuel de Typesense dans un déploiement isolé, appliquez la version candidate et répétez sa transaction d’acceptation. Soyez particulièrement attentif, car les changements de schéma de collection et les snapshots méritent une répétition : un rollback d’image ne peut pas annuler une modification du format des données. Conservez l’image Typesense précédente jusqu’à ce que les limites de migration des données et de rollback soient clairement établies.