Pourquoi héberger LangFlow sur un VPS
LangFlow répond à un cas d'usage précis : concevoir des pipelines IA en glissant-déposant des composants — modèles LLM, retrievers, prompts, mémoire, agents — puis les tester sans écrire une seule ligne de code. C'est l'alternative visuelle à LangChain en mode code-only, adaptée aux équipes qui veulent itérer vite avant de figer une logique en Python.
Sur un VPS, vous obtenez une instance stable et persistante, accessible à toute l'équipe, contrairement à un setup local qui disparaît au redémarrage. Vos flows encodent souvent une logique métier sensible — chaînes de prompts, clés API, connecteurs vers vos bases de données. Ces données ne doivent pas transiter par un SaaS dont vous ne contrôlez pas la politique de rétention.
LangFlow s'appuie sur FastAPI côté serveur et expose chaque flow comme un endpoint REST : vos applications peuvent appeler vos pipelines IA directement, sans code intermédiaire. C'est cette combinaison — interface visuelle pour la conception, API pour l'intégration — qui en fait un outil de prototypage sérieux pour des cas tels que le RAG documentaire, les chatbots d'assistance, les agents multi-étapes ou les pipelines de classification.
Ce que vous gagnez avec une instance auto-hébergée
- Interface visuelle de pipelines — glissez des composants LLM, retriever, mémoire et prompt dans un canvas, connectez-les, testez sans code.
- Connecteurs LLM variés — OpenAI, Anthropic, Ollama (local), Hugging Face et tout fournisseur compatible OpenAI API.
- RAG intégré — chargez des documents PDF ou texte, chunking, embedding et recherche vectorielle dans le même flow.
- API automatique par flow — chaque pipeline devient un endpoint REST appelable depuis n'importe quelle application.
- Variables globales chiffrées — vos clés API sont stockées côté serveur, jamais exposées dans le code du client.
- Composants Python personnalisés — étendez LangFlow avec votre propre logique métier sans forker le projet.
- Contrôle de version des flows — exportez en JSON et versionnez dans Git, indépendamment de l'état de la base.
Prérequis avant de commencer
LangFlow est plus gourmand en mémoire qu'un outil web classique : son moteur d'exécution charge des modèles et des embeddings en RAM. Prévoyez au minimum 2 vCPU et 4 Go de RAM pour un usage confortable. Si vous connectez un modèle Ollama local pour l'inférence sur le même VPS, passez à 8 Go minimum.
Côté logiciel, il vous faut Docker (version 24 ou supérieure) et Docker Compose v2, installés et opérationnels. Le port 7860 doit être accessible en local (LangFlow écoute sur ce port par défaut). Vous n'exposez pas ce port directement sur Internet : le reverse proxy nginx s'en charge.
Préparez un sous-domaine pointant vers l'IP de votre VPS — par exemple langflow.votre-domaine.com — avec les enregistrements DNS déjà propagés avant de lancer certbot. Enfin, la base PostgreSQL est fortement recommandée pour la production : SQLite, la valeur par défaut, se corrompt sous charge concurrente et ne supporte pas les accès simultanés de plusieurs utilisateurs.
Installer LangFlow avec Docker Compose et PostgreSQL
Créer le répertoire de travail
Connectez-vous en SSH à votre VPS, puis créez le dossier qui accueillera la stack :
mkdir -p /opt/langflow && cd /opt/langflowÉcrire le fichier docker-compose.yml
Créez un fichier docker-compose.yml avec deux services — postgres et langflow — et les variables d'environnement d'authentification :
services:
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: langflow
POSTGRES_PASSWORD: motdepasse-fort
POSTGRES_DB: langflow
volumes:
- pgdata:/var/lib/postgresql/data
langflow:
image: langflowai/langflow:latest
restart: unless-stopped
ports:
- "127.0.0.1:7860:7860"
environment:
LANGFLOW_DATABASE_URL: postgresql://langflow:motdepasse-fort@postgres:5432/langflow
LANGFLOW_SECRET_KEY: changez-cette-valeur-par-une-chaine-aleatoire
LANGFLOW_AUTO_LOGIN: "false"
LANGFLOW_SUPERUSER: admin
LANGFLOW_SUPERUSER_PASSWORD: motdepasse-admin-fort
depends_on:
- postgres
volumes:
pgdata:Notez que le port 7860 est lié à 127.0.0.1 : LangFlow n'est pas accessible depuis l'extérieur sans passer par le proxy.
Lancer la stack
Démarrez les deux conteneurs en arrière-plan :
docker compose up -dSuivez les logs de LangFlow pendant la première initialisation (création du schéma en base, environ 30 secondes à 1 minute) :
docker compose logs -f langflowAttendez la ligne indiquant que le serveur écoute sur le port 7860 avant de continuer.
Vérifier que l'interface répond
Depuis votre VPS, testez que LangFlow répond localement avant de configurer le proxy :
curl -s http://127.0.0.1:7860/healthLa réponse attendue est {"status":"ok"}. Si vous obtenez une erreur de connexion refusée, les logs de démarrage contiennent la cause.
Configurer le reverse proxy nginx avec HTTPS
Installez nginx et certbot si ce n'est pas déjà fait, puis créez un fichier de configuration :
server {
listen 80;
server_name langflow.votre-domaine.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name langflow.votre-domaine.com;
ssl_certificate /etc/letsencrypt/live/langflow.votre-domaine.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/langflow.votre-domaine.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:7860;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}Les en-têtes Upgrade et Connection sont indispensables pour le support WebSocket, utilisé par le canvas interactif. Obtenez le certificat avec certbot :
certbot --nginx -d langflow.votre-domaine.comSe connecter et créer un premier flow
Ouvrez https://langflow.votre-domaine.com dans votre navigateur. Connectez-vous avec les identifiants définis dans LANGFLOW_SUPERUSER et LANGFLOW_SUPERUSER_PASSWORD. Dans l'interface, cliquez sur New Flow, choisissez un template ou partez d'un canvas vide. Ajoutez un composant LLM, un prompt et un composant de sortie, connectez-les, puis cliquez sur Run pour tester le pipeline.
Enregistrer les clés API dans les variables globales
Plutôt que de saisir vos clés API dans chaque composant, utilisez les Variables globales (icône en haut à droite) : la clé est chiffrée en base et réutilisable dans tous vos flows. Depuis le menu API d'un flow, vous récupérez le code d'appel curl ou Python pour intégrer ce pipeline dans une application externe.
Sauvegarder les flows et la base
Planifiez un pg_dump quotidien de la base depuis l'hôte :
docker exec langflow-postgres-1 pg_dump -U langflow langflow > /opt/backups/langflow-$(date +%F).sqlExportez aussi vos flows en JSON depuis le menu Export de chaque flow : c'est un filet de sécurité versionnable dans Git, indépendant de l'état de la base.
Configuration avancée : variables d'environnement utiles
LangFlow expose plusieurs variables d'environnement pour adapter l'instance à votre contexte. LANGFLOW_SECRET_KEY chiffre les données sensibles stockées en base — changez la valeur par défaut avant le premier démarrage, car une rotation ultérieure invalide les données chiffrées existantes. LANGFLOW_AUTO_LOGIN à false oblige toujours un login explicite, même depuis localhost. LANGFLOW_WORKERS contrôle le nombre de processus Uvicorn : la valeur par défaut (1) convient pour un usage modéré, augmentez à 2 ou 4 si plusieurs utilisateurs exécutent des flows simultanément.
Pour les flows qui appellent des modèles locaux via Ollama, définissez OLLAMA_BASE_URL dans les variables globales de LangFlow plutôt que dans l'environnement Docker : la valeur est alors gérée par l'interface et peut être changée sans redémarrage.
Si vous mettez à jour LangFlow, faites toujours un pg_dump avant docker compose pull && docker compose up -d : certaines montées de version touchent au schéma de la base.
Sécurité : ne pas exposer LangFlow directement sur Internet
LangFlow n'a pas de rate limiting intégré sur ses endpoints API. Sans mesure complémentaire, un flow exposé publiquement peut être appelé sans limite par n'importe qui connaissant l'URL. Deux approches se complètent.
Premièrement, laissez LANGFLOW_AUTO_LOGIN=false en permanence et créez des comptes utilisateurs distincts pour chaque membre de l'équipe. Deuxièmement, si vos flows ne doivent être appelés que par vos propres applications (et non par des utilisateurs directs), ajoutez un blocage auth_basic nginx devant l'interface de gestion et exposez uniquement les endpoints /api/v1/run/<flow-id> avec authentification par token à vos applications.
Ne laissez jamais LangFlow en production avec SQLite : la base se corrompt sous accès concurrents et vous perdez vos flows sans message d'erreur explicite.
Dépannage des erreurs courantes
Erreur OOM (Out of Memory). Si le conteneur LangFlow se redémarre spontanément, consultez docker compose logs langflow et recherchez Killed. La cause est le manque de RAM. Réduisez LANGFLOW_WORKERS à 1 et, si le problème persiste, augmentez la RAM du VPS ou évitez d'exécuter des flows chargés simultanément.
Connexion refusée à Ollama. Si LangFlow ne peut pas joindre Ollama tournant sur le même VPS, vérifiez que Ollama écoute sur 0.0.0.0 et non sur 127.0.0.1 uniquement. Dans docker-compose.yml, ajoutez extra_hosts: ["host-gateway:host-gateway"] au service LangFlow et utilisez l'adresse http://host-gateway:11434 dans les composants Ollama de LangFlow.
Logs de flow absents ou incomplets. LangFlow stocke les logs d'exécution en base. Si la base PostgreSQL n'était pas prête au démarrage de LangFlow, les premières requêtes échouent silencieusement. Le depends_on dans le docker-compose.yml attend que le conteneur Postgres soit démarré, mais pas nécessairement que PostgreSQL soit prêt à accepter des connexions. Ajoutez un healthcheck sur le service postgres pour forcer l'attente.
Canvas blanc ou WebSocket coupé. Vérifiez que les en-têtes Upgrade et Connection sont bien transmis par nginx. Un proxy intermédiaire (Cloudflare en mode Full Strict, load balancer) peut intercepter les WebSockets : assurez-vous que le protocole WebSocket est bien configuré en proxy.
Prochaines étapes : étendre votre instance LangFlow
Une fois LangFlow opérationnel, plusieurs intégrations élargissent son périmètre d'usage.
Si vous souhaitez un modèle LLM entièrement local (sans appel API externe), installez Ollama sur le même VPS et connectez-le à LangFlow via le composant Ollama : vos pipelines n'envoient plus de données hors de votre infrastructure. Ollama expose une API compatible OpenAI sur le port 11434.
Pour un RAG documentaire, ajoutez un composant Chroma ou Qdrant — deux bases vectorielles open source que vous pouvez déployer en conteneur voisin. Importez vos documents PDF dans un flow LangFlow, chunking et embedding compris, et interrogez-les depuis un chatbot ou une API.
Enfin, si plusieurs équipes utilisent l'instance, envisagez d'isoler les flows par espace de travail (feature disponible selon la version) ou de déployer une instance LangFlow par projet avec le template ServOrbit, qui configure automatiquement Docker Compose, PostgreSQL et le reverse proxy.