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.
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
- Create an SSH key.
Replace
DANA@EXAMPLE.COM
with your email address.
_10ssh-keygen -t ed25519 -C "DANA@EXAMPLE.COM"
- 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:
_10cat ~/Downloads/host-lf.pub | pbcopy
- 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.
- 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.
- 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. ReplaceSERVER_IP_ADDRESS
with your server's IP address.
_10ssh -i PATH_TO_PRIVATE_KEY/PRIVATE_KEY_NAME root@SERVER_IP_ADDRESS
- 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.
- Install Docker on your server. Since this example server is an Ubuntu server, you can install snap packages.
_10snap install docker
- Create a file called
docker-compose.yml
.
_10touch 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.
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.
- Add the following values to
docker-compose.yml
, and then save the file.
_26version: "3.8"_26_26services:_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_26volumes:_26 caddy_data:_26 caddy_config:
- Create a file called
Caddyfile
.
_10touch Caddyfile && nano Caddyfile
- Add the following values to
Caddyfile
, and then save the file. The Caddyfile configures Caddy to listen on port80
, and forward all incoming requests to the Langflow service at port7860
.
_10:80 {_10 reverse_proxy langflow:7860_10}
- To deploy your server, enter
docker-compose up
. When theWelcome to Langflow
message appears, Langflow is running and accessible internally at http://0.0.0.0:7860 inside the Docker network. - To open Langflow, navigate to your server's public IP address, such as
http://5.161.250.132
. Your address must usehttp
, because you haven't enabled HTTPS. - To enable HTTPS, modify your domain's A record to point to your server's IP address. For example:
_10Type: A_10Name: langflow_10Value: 5.161.250.132 (your server's IP address)
- Stop your server.
- Modify your Caddyfile to include port
443
for HTTPS.
_10:80, :443 {_10 reverse_proxy langflow:7860_10}
- 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.