Por qué alojar LangFlow en un VPS
LangFlow responde a un caso de uso preciso: diseñar pipelines de IA arrastrando y soltando componentes — modelos LLM, retrievers, prompts, memoria, agentes — y probarlos después sin escribir una sola línea de código. Es la alternativa visual a LangChain en modo solo código, pensada para los equipos que quieren iterar rápido antes de fijar una lógica en Python.
En un VPS obtiene una instancia estable y persistente, accesible para todo el equipo, a diferencia de una instalación local que desaparece al reiniciar. Sus flujos codifican a menudo una lógica de negocio sensible — cadenas de prompts, claves API, conectores hacia sus bases de datos. Estos datos no deben transitar por un SaaS cuya política de retención usted no controla.
LangFlow se apoya en FastAPI del lado del servidor y expone cada flujo como un endpoint REST: sus aplicaciones pueden llamar directamente a sus pipelines de IA, sin código intermedio. Es esta combinación — interfaz visual para el diseño, API para la integración — la que lo convierte en una herramienta de prototipado seria para casos como el RAG documental, los chatbots de asistencia, los agentes de varios pasos o los pipelines de clasificación.
Lo que gana con una instancia autoalojada
- Interfaz visual de pipelines — arrastre componentes LLM, retriever, memoria y prompt a un canvas, conéctelos y pruebe sin código.
- Conectores LLM variados — OpenAI, Anthropic, Ollama (local), Hugging Face y cualquier proveedor compatible con la API de OpenAI.
- RAG integrado — cargue documentos PDF o de texto, chunking, embedding y búsqueda vectorial en el mismo flujo.
- API automática por flujo — cada pipeline se convierte en un endpoint REST invocable desde cualquier aplicación.
- Variables globales cifradas — sus claves API se almacenan en el servidor, nunca quedan expuestas en el código del cliente.
- Componentes Python personalizados — amplíe LangFlow con su propia lógica de negocio sin bifurcar el proyecto.
- Control de versiones de los flujos — expórtelos en JSON y versiónelos en Git, con independencia del estado de la base de datos.
Requisitos previos antes de empezar
LangFlow consume más memoria que una herramienta web clásica: su motor de ejecución carga modelos y embeddings en RAM. Prevea como mínimo 2 vCPU y 4 GB de RAM para un uso cómodo. Si conecta un modelo Ollama local para la inferencia en el mismo VPS, suba a 8 GB como mínimo.
En el plano del software, necesita Docker (versión 24 o superior) y Docker Compose v2, instalados y operativos. El puerto 7860 debe ser accesible en local (LangFlow escucha en este puerto por defecto). No exponga este puerto directamente en Internet: de eso se encarga el reverse proxy nginx.
Prepare un subdominio que apunte a la IP de su VPS — por ejemplo langflow.votre-domaine.com — con los registros DNS ya propagados antes de lanzar certbot. Por último, la base de datos PostgreSQL es muy recomendable en producción: SQLite, el valor por defecto, se corrompe bajo carga concurrente y no admite los accesos simultáneos de varios usuarios.
Instalar LangFlow con Docker Compose y PostgreSQL
Crear el directorio de trabajo
Conéctese por SSH a su VPS y cree después la carpeta que alojará la stack:
mkdir -p /opt/langflow && cd /opt/langflowEscribir el archivo docker-compose.yml
Cree un archivo
docker-compose.ymlcon dos servicios —postgresylangflow— y las variables de entorno de autenticación: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:Observe que el puerto
7860está enlazado a127.0.0.1: LangFlow no es accesible desde el exterior sin pasar por el proxy.Lanzar la stack
Arranque los dos contenedores en segundo plano:
docker compose up -dSiga los logs de LangFlow durante la primera inicialización (creación del esquema en la base de datos, entre 30 segundos y 1 minuto aproximadamente):
docker compose logs -f langflowEspere a la línea que indica que el servidor escucha en el puerto
7860antes de continuar.Comprobar que la interfaz responde
Desde su VPS, compruebe que LangFlow responde localmente antes de configurar el proxy:
curl -s http://127.0.0.1:7860/healthLa respuesta esperada es
{"status":"ok"}. Si obtiene un error de conexión rechazada, los logs de arranque contienen la causa.Configurar el reverse proxy nginx con HTTPS
Instale nginx y certbot si aún no lo ha hecho, y cree después un archivo de configuración:
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; } }Las cabeceras
UpgradeyConnectionson imprescindibles para el soporte WebSocket, que utiliza el canvas interactivo. Obtenga el certificado con certbot:certbot --nginx -d langflow.votre-domaine.comIniciar sesión y crear un primer flujo
Abra
https://langflow.votre-domaine.comen su navegador. Inicie sesión con las credenciales definidas enLANGFLOW_SUPERUSERyLANGFLOW_SUPERUSER_PASSWORD. En la interfaz, haga clic en New Flow y elija una plantilla o parta de un canvas vacío. Añada un componente LLM, un prompt y un componente de salida, conéctelos y haga clic después en Run para probar el pipeline.Guardar las claves API en las variables globales
En lugar de introducir sus claves API en cada componente, utilice las Variables globales (icono en la parte superior derecha): la clave queda cifrada en la base de datos y es reutilizable en todos sus flujos. Desde el menú API de un flujo, obtiene el código de llamada
curlo Python para integrar este pipeline en una aplicación externa.Hacer copia de seguridad de los flujos y de la base de datos
Programe un
pg_dumpdiario de la base de datos desde el host:docker exec langflow-postgres-1 pg_dump -U langflow langflow > /opt/backups/langflow-$(date +%F).sqlExporte también sus flujos en JSON desde el menú Export de cada flujo: es una red de seguridad versionable en Git, independiente del estado de la base de datos.
Configuración avanzada: variables de entorno útiles
LangFlow expone varias variables de entorno para adaptar la instancia a su contexto. LANGFLOW_SECRET_KEY cifra los datos sensibles almacenados en la base de datos — cambie el valor por defecto antes del primer arranque, porque una rotación posterior invalida los datos cifrados existentes. LANGFLOW_AUTO_LOGIN en false obliga siempre a un inicio de sesión explícito, incluso desde localhost. LANGFLOW_WORKERS controla el número de procesos Uvicorn: el valor por defecto (1) sirve para un uso moderado; súbalo a 2 o 4 si varios usuarios ejecutan flujos simultáneamente.
Para los flujos que llaman a modelos locales mediante Ollama, defina OLLAMA_BASE_URL en las variables globales de LangFlow y no en el entorno Docker: así el valor lo gestiona la interfaz y puede cambiarse sin reiniciar.
Si actualiza LangFlow, haga siempre un pg_dump antes de docker compose pull && docker compose up -d: algunas subidas de versión afectan al esquema de la base de datos.
Seguridad: no exponer LangFlow directamente en Internet
LangFlow no incorpora rate limiting en sus endpoints API. Sin una medida complementaria, un flujo expuesto públicamente puede ser invocado sin límite por cualquiera que conozca la URL. Dos enfoques se complementan.
En primer lugar, deje LANGFLOW_AUTO_LOGIN=false de forma permanente y cree cuentas de usuario distintas para cada miembro del equipo. En segundo lugar, si sus flujos solo deben ser invocados por sus propias aplicaciones (y no por usuarios directos), añada un bloqueo auth_basic de nginx delante de la interfaz de gestión y exponga únicamente los endpoints /api/v1/run/<flow-id> con autenticación por token a sus aplicaciones.
Nunca deje LangFlow en producción con SQLite: la base de datos se corrompe con accesos concurrentes y pierde sus flujos sin ningún mensaje de error explícito.
Solución de los errores más frecuentes
Error OOM (Out of Memory). Si el contenedor LangFlow se reinicia de forma espontánea, consulte docker compose logs langflow y busque Killed. La causa es la falta de RAM. Reduzca LANGFLOW_WORKERS a 1 y, si el problema persiste, aumente la RAM del VPS o evite ejecutar flujos pesados simultáneamente.
Conexión rechazada a Ollama. Si LangFlow no consigue alcanzar a Ollama ejecutándose en el mismo VPS, compruebe que Ollama escucha en 0.0.0.0 y no únicamente en 127.0.0.1. En docker-compose.yml, añada extra_hosts: ["host-gateway:host-gateway"] al servicio LangFlow y utilice la dirección http://host-gateway:11434 en los componentes Ollama de LangFlow.
Logs de flujo ausentes o incompletos. LangFlow almacena los logs de ejecución en la base de datos. Si la base PostgreSQL no estaba lista cuando arrancó LangFlow, las primeras peticiones fallan en silencio. El depends_on del docker-compose.yml espera a que el contenedor Postgres esté arrancado, pero no necesariamente a que PostgreSQL esté listo para aceptar conexiones. Añada un healthcheck al servicio postgres para forzar la espera.
Canvas en blanco o WebSocket cortado. Compruebe que las cabeceras Upgrade y Connection se transmiten correctamente por nginx. Un proxy intermedio (Cloudflare en modo Full Strict, balanceador de carga) puede interceptar los WebSockets: asegúrese de que el protocolo WebSocket está bien configurado en el proxy.
Próximos pasos: ampliar su instancia LangFlow
Una vez LangFlow operativo, varias integraciones amplían su ámbito de uso.
Si desea un modelo LLM totalmente local (sin ninguna llamada a una API externa), instale Ollama en el mismo VPS y conéctelo a LangFlow mediante el componente Ollama: sus pipelines dejan de enviar datos fuera de su infraestructura. Ollama expone una API compatible con OpenAI en el puerto 11434.
Para un RAG documental, añada un componente Chroma o Qdrant — dos bases de datos vectoriales de código abierto que puede desplegar en un contenedor vecino. Importe sus documentos PDF en un flujo LangFlow, chunking y embedding incluidos, y consúltelos desde un chatbot o una API.
Por último, si varios equipos utilizan la instancia, plantéese aislar los flujos por espacio de trabajo (funcionalidad disponible según la versión) o desplegar una instancia LangFlow por proyecto con la plantilla ServOrbit, que configura automáticamente Docker Compose, PostgreSQL y el reverse proxy.