Guía de despliegue

Alojar LangFlow en un VPS: guía completa con Docker y HTTPS

Desplegar en un VPS Cloud →

Tutorial

Alojar LangFlow en un VPS: guía completa con Docker y HTTPS

Inteligencia Artificial8 min de lectura8 pasos

LangFlow es un editor visual de pipelines de IA — RAG, chatbots, agentes LangChain — que se ejecuta en su navegador y expone cada flujo como una API de Python. Alojado en su VPS, se convierte en un taller privado y compartible: sus flujos, sus claves API y su historial de ejecución permanecen bajo su control, sin pasar por un SaaS externo. Esta guía cubre la instalación completa con Docker Compose, PostgreSQL, reverse proxy nginx y HTTPS.

Contenido· Por qué alojar LangFlow en un VPS1/8
  1. 01Por qué alojar LangFlow en un VPS
  2. 02Lo que gana con una instancia autoalojada
  3. 03Requisitos previos antes de empezar
  4. 04Instalar LangFlow con Docker Compose y PostgreSQL
  5. 05Configuración avanzada: variables de entorno útiles
  6. 06Seguridad: no exponer LangFlow directamente en Internet
  7. 07Solución de los errores más frecuentes
  8. 08Próximos pasos: ampliar su instancia LangFlow

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

  1. 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/langflow
  2. Escribir el archivo docker-compose.yml

    Cree un archivo docker-compose.yml con dos servicios — postgres y langflow — 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 7860 está enlazado a 127.0.0.1: LangFlow no es accesible desde el exterior sin pasar por el proxy.

  3. Lanzar la stack

    Arranque los dos contenedores en segundo plano:

    docker compose up -d

    Siga 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 langflow

    Espere a la línea que indica que el servidor escucha en el puerto 7860 antes de continuar.

  4. 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/health

    La respuesta esperada es {"status":"ok"}. Si obtiene un error de conexión rechazada, los logs de arranque contienen la causa.

  5. 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 Upgrade y Connection son imprescindibles para el soporte WebSocket, que utiliza el canvas interactivo. Obtenga el certificado con certbot:

    certbot --nginx -d langflow.votre-domaine.com
  6. Iniciar sesión y crear un primer flujo

    Abra https://langflow.votre-domaine.com en su navegador. Inicie sesión con las credenciales definidas en LANGFLOW_SUPERUSER y LANGFLOW_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.

  7. 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 curl o Python para integrar este pipeline en una aplicación externa.

  8. Hacer copia de seguridad de los flujos y de la base de datos

    Programe un pg_dump diario de la base de datos desde el host:

    docker exec langflow-postgres-1 pg_dump -U langflow langflow > /opt/backups/langflow-$(date +%F).sql

    Exporte 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.

Aloje LangFlow en un VPS dedicado

Despliegue su propia instancia de LangFlow en unos minutos en un VPS ServOrbit — confidencialidad total, sin límites de API, acceso HTTPS seguro con certificado TLS incluido.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva