Skip to main content

Deploy Langflow on a remote server

Learn how to deploy Langflow on your own remote server with secure web access. This guide walks you through setting up Langflow on a remote server using Docker and configuring secure web access with Caddy.

tip

The host-langflow repository offers pre-built copies of this docker-compose.yml and Caddyfile, if you prefer to fork the repository to your server.

Prerequisites

  • A server with a dual-core CPU and at least 2 GB of RAM. This example uses Hetzner cloud for hosting. Your deployment may vary.

Connect to your remote server with SSH

  1. Create an SSH key. Replace DANA@EXAMPLE.COM with your email address.

_10
ssh-keygen -t ed25519 -C "DANA@EXAMPLE.COM"

  1. In your terminal, follow the instructions to create your public key. This key allows you to connect to your server remotely. To copy the key from your terminal, enter the following command:

_10
cat ~/Downloads/host-lf.pub | pbcopy

  1. In your remote server, add the SSH key you copied in the previous step. For example, in the Hetzner cloud server, click Server > SSH keys, and then click Add SSH key.
  2. Paste your SSH key into the SSH key field, and click Enter. You can now use the SSH key stored on your local machine to connect to your remote server.
  3. To connect to your server with SSH, enter the following command. Replace PATH_TO_PRIVATE_KEY/PRIVATE_KEY_NAME with the path to your private SSH key. Replace SERVER_IP_ADDRESS with your server's IP address.

_10
ssh -i PATH_TO_PRIVATE_KEY/PRIVATE_KEY_NAME root@SERVER_IP_ADDRESS

  1. When prompted for a key fingerprint, type yes. You are connected to your server.

_10
System information as of Mon May 19 04:34:44 PM UTC 2025
_10
_10
System load: 0.0 Processes: 129
_10
Usage of /: 1.5% of 74.79GB Users logged in: 0
_10
Memory usage: 5% IPv4 address for eth0: 5.161.250.132
_10
Swap usage: 0% IPv6 address for eth0: 2a01:4ff:f0:4de7::1

Deploy Langflow on your server

Now that you're connected to your server, install Docker, create a docker-compose.yml file, and serve it publicly with Caddy as a reverse proxy.

  1. Install Docker on your server. Since this example server is an Ubuntu server, you can install snap packages.

_10
snap install docker

  1. Create a file called docker-compose.yml.

_10
touch docker-compose.yml && nano docker-compose.yml

This file defines the Langflow service from the langflow:latest image, and a Caddy service to expose Langflow through a reverse proxy.

tip

The host-langflow repository offers pre-built copies of this docker-compose.yml and Caddyfile, if you prefer to fork the repository to your server.

  1. Add the following values to docker-compose.yml, and then save the file.

_26
version: "3.8"
_26
_26
services:
_26
langflow:
_26
image: langflowai/langflow:latest
_26
ports:
_26
- "7860:7860"
_26
environment:
_26
- LANGFLOW_HOST=0.0.0.0
_26
- LANGFLOW_PORT=7860
_26
_26
caddy:
_26
image: caddy:latest
_26
ports:
_26
- "80:80"
_26
- "443:443"
_26
volumes:
_26
- ./Caddyfile:/etc/caddy/Caddyfile
_26
- caddy_data:/data
_26
- caddy_config:/config
_26
depends_on:
_26
- langflow
_26
_26
volumes:
_26
caddy_data:
_26
caddy_config:

  1. Create a file called Caddyfile.

_10
touch Caddyfile && nano Caddyfile

  1. Add the following values to Caddyfile, and then save the file. The Caddyfile configures Caddy to listen on port 80, and forward all incoming requests to the Langflow service at port 7860.

_10
:80 {
_10
reverse_proxy langflow:7860
_10
}

  1. To deploy your server, enter docker-compose up. When the Welcome to Langflow message appears, Langflow is running and accessible internally at http://0.0.0.0:7860 inside the Docker network.
  2. To open Langflow, navigate to your server's public IP address, such as http://5.161.250.132. Your address must use http, because you haven't enabled HTTPS.
  3. To enable HTTPS, modify your domain's A record to point to your server's IP address. For example:

_10
Type: A
_10
Name: langflow
_10
Value: 5.161.250.132 (your server's IP address)

  1. Stop your server.
  2. Modify your Caddyfile to include port 443 for HTTPS.

_10
:80, :443 {
_10
reverse_proxy langflow:7860
_10
}

  1. Start your server. Caddy recognizes the incoming traffic and routes it to your server.

To exit your SSH session, type exit.

Step-by-step video guide

For a step-by-step guide to deploying Langflow, including deployments to fly.io and Flightcontrol.dev, see How to Host Langflow Anywhere.

Search