Pourquoi self-héberger Lobe Chat sur un VPS
Lobe Chat agrège plusieurs fournisseurs LLM (OpenAI, Anthropic, Google, Mistral, Ollama local) dans une UI unique avec marché de plugins, agents personnalisés et reconnaissance/synthèse vocale. En SaaS, vos historiques et vos clés transitent par un tiers ; en l'hébergeant sur votre propre VPS, les conversations restent dans votre base PostgreSQL et vos clés API ne quittent jamais votre serveur. Un VPS offre aussi une IP fixe utile pour whitelister vos appels sortants vers les API payantes, et la liberté d'activer le mode base de données (multi-utilisateurs avec authentification) plutôt que le simple stockage navigateur.
Bénéfices concrets de l'auto-hébergement
- Centralisation de toutes vos clés API LLM côté serveur, jamais exposées au navigateur
- Historiques de conversation persistés dans votre propre PostgreSQL, sauvegardables et chiffrables
- Mode multi-utilisateurs via authentification (Logto, Auth0, Clerk) pour toute une équipe
- Connexion à un Ollama local sur le même VPS pour des réponses 100% privées sans coût d'API
- Marché de plugins et agents personnalisés sans quota ni limite imposée par un SaaS
- Maîtrise totale des coûts : vous ne payez que la consommation réelle des API que vous branchez
Prérequis matériels et logiciels
Lobe Chat est une application Node.js relativement légère. En mode stockage navigateur, 1 vCPU et 1 Go de RAM suffisent. Pour le mode base de données (recommandé en production) avec PostgreSQL embarqué, prévoyez 2 vCPU et 2 à 4 Go de RAM, plus 10 Go de disque pour les images, les pièces jointes et la base. Côté logiciel : Docker et le plugin Docker Compose, un nom de domaine pointant vers l'IP du VPS (enregistrement A), et au moins une clé API d'un fournisseur LLM. Si vous activez le mode S3 pour les fichiers, prévoyez un bucket compatible (MinIO peut tourner sur le même VPS).
Déploiement de Lobe Chat avec Docker
Préparer le VPS et Docker
Connectez-vous en SSH, mettez à jour le système puis installez Docker via curl -fsSL https://get.docker.com | sh. Vérifiez l'installation avec docker compose version. Créez un dossier de travail : mkdir -p /opt/lobe-chat && cd /opt/lobe-chat.
Écrire le fichier compose en mode base de données
Créez un docker-compose.yml avec le service lobe-chat-database, un service postgres (image pgvector/pgvector:pg16) et minio pour le stockage S3. Renseignez les variables DATABASE_URL, KEY_VAULTS_SECRET (généré avec openssl rand -base64 32) et NEXT_AUTH_SECRET.
Injecter les clés et le fournisseur d'auth
Ajoutez vos clés dans un fichier .env : OPENAI_API_KEY, ANTHROPIC_API_KEY, etc. Configurez NEXT_AUTH_SSO_PROVIDERS et les identifiants Logto ou Clerk pour activer l'authentification multi-utilisateurs avant l'exposition publique.
Lancer la stack
Démarrez l'ensemble avec docker compose up -d. Suivez les logs avec docker compose logs -f lobe-chat-database jusqu'à voir le serveur écouter sur le port 3210.
Mettre en place le reverse proxy et le SSL
Placez Caddy ou Nginx devant le conteneur. Avec Caddy, un Caddyfile de trois lignes (chat.votredomaine.ma { reverse_proxy localhost:3210 }) génère automatiquement le certificat Let's Encrypt et force le HTTPS.
Vérifier et sécuriser
Ouvrez https://chat.votredomaine.ma, créez le premier compte administrateur, puis fermez le port 3210 au pare-feu (ufw deny 3210) pour ne laisser passer que le trafic via le reverse proxy.
Pour des conversations totalement privées sans coût d'API, installez Ollama sur le même VPS et renseignez OLLAMA_PROXY_URL=http://host.docker.internal:11434/v1 dans Lobe Chat. Vous obtenez un assistant local (Llama 3, Qwen, Mistral) qui ne dépend d'aucun fournisseur externe. Pensez à augmenter la RAM du VPS selon la taille du modèle chargé.