Guide de déploiement

Héberger Typesense sur un VPS

Déployer sur un VPS Cloud →

Bases de données6 min de lecture

Héberger Typesense sur un VPS

Typesense est un moteur de recherche open source typo-tolérant, ultra-léger et bien plus simple à opérer qu'Elasticsearch. Sur un VPS dédié, vous gardez la main sur vos données et vos coûts. Voici comment le déployer proprement en production.

Pourquoi auto-héberger Typesense sur un VPS

Les services de recherche managés (Algolia, etc.) facturent à la requête et au document indexé : la note grimpe vite dès que votre catalogue grandit. Typesense offre une recherche instantanée (latence p95 sous les 50 ms) avec tolérance aux fautes de frappe et tri par pertinence, le tout en un binaire unique sans JVM. En le déployant sur votre propre VPS, vous fixez un coût mensuel prévisible, vous gardez vos index utilisateurs hors d'un cloud tiers, et vous pouvez coller votre instance au plus près de votre application pour minimiser la latence réseau.

Ce que vous gagnez concrètement

  • Coût fixe au lieu d'une facturation par requête qui explose avec le trafic
  • Latence minimale en plaçant Typesense sur le même réseau privé que votre app
  • Tolérance aux fautes et recherche à la frappe (typo-tolerance) sans réglage complexe
  • Données d'index et logs de recherche conservés sur votre infrastructure
  • Empreinte mémoire réduite : pas de JVM, un seul processus à superviser
  • API REST simple et clés d'API à portée (search-only / admin) pour sécuriser le front

Prérequis réalistes

Typesense charge ses index en mémoire : dimensionnez la RAM en fonction de la taille de votre corpus. Pour un catalogue jusqu'à quelques centaines de milliers de documents, un VPS 2 vCPU / 4 Go de RAM suffit largement. Comptez 8 Go au-delà du million de documents ou pour des champs vectoriels (recherche sémantique). Prévoyez un SSD pour la persistance des données, Docker et Docker Compose installés, ainsi qu'un sous-domaine type search.votredomaine.ma pointant vers l'IP du VPS.

Déploiement pas à pas

01

Préparer le VPS et Docker

Mettez à jour le système, installez Docker et le plugin Compose, puis créez un dossier dédié : mkdir -p /opt/typesense/data. Ce volume hébergera les index persistés sur le SSD.

02

Définir le service avec une clé d'API forte

Dans un docker-compose.yml, déclarez l'image typesense/typesense:0.25.2, montez /opt/typesense/data:/data, exposez le port 8108 en local uniquement (127.0.0.1:8108) et passez --api-key via une variable générée avec openssl rand -base64 32.

03

Lancer et vérifier la santé

Démarrez avec docker compose up -d puis testez : curl http://127.0.0.1:8108/health doit renvoyer {"ok":true}. Créez ensuite une première collection via l'API REST pour valider l'indexation.

04

Placer un reverse proxy + SSL

Configurez Nginx (ou Caddy) pour exposer search.votredomaine.ma vers 127.0.0.1:8108. Avec Caddy, un simple bloc reverse_proxy 127.0.0.1:8108 génère le certificat Let's Encrypt automatiquement ; avec Nginx, utilisez certbot --nginx.

05

Cloisonner les clés d'API

Ne diffusez jamais la clé admin côté navigateur. Générez une clé search-only scoping (actions: documents:search) et n'exposez que celle-ci dans votre front-end JavaScript.

06

Automatiser les sauvegardes

Planifiez un docker exec de l'endpoint /operations/snapshot ou un tar du volume /opt/typesense/data poussé chaque nuit vers un stockage objet distant.

Activez un nœud unique en mode persistant suffit pour la plupart des projets, mais si votre recherche devient critique, montez un cluster Raft à 3 nœuds (--nodes) sur 3 VPS pour la haute disponibilité : Typesense gère lui-même la réplication et bascule automatiquement le leader en cas de panne, sans load balancer applicatif côté écriture.

Déployez Typesense en quelques minutes

Le VPS Cloud ServOrbit arrive avec Docker préconfiguré et un réseau privé bas-latence, idéal pour faire tourner Typesense à côté de votre application. Templates prêts à l'emploi inclus.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou écrivez à notre équipe — support en anglais, français et arabe.