Open the server Apps tab
Select your VPS, open the Apps tab, and start a new app deployment. Keep sensitive server details hidden before capturing or sharing screenshots.


Open-source LLM observability, tracing, and evaluation platform
Add your server credentials to Server Compass
Choose from our template library
Fill in settings and click Deploy
Use the Langfuse template in Server Compass to deploy a self-hosted LLM observability stack with PostgreSQL, Redis, ClickHouse, and MinIO on your VPS, then verify the Langfuse web UI in a browser.
Select your VPS, open the Apps tab, and start a new app deployment. Keep sensitive server details hidden before capturing or sharing screenshots.

Click New App and choose the template deployment path so Server Compass can load the built-in catalog.

Use the template picker search to find Langfuse in the Server Compass template catalog.

Choose the Langfuse template. Server Compass fills the Langfuse image, host port, generated secrets, PostgreSQL, Redis, ClickHouse, and MinIO settings.

Confirm the app name and compose services. In this run, the app was named langfuse-demo and used host port 3000.

Review the generated environment values, confirm the port is available, and click Deploy Now.

Keep the deployment modal open while Server Compass uploads the compose file, pulls the Langfuse image, starts the container, and verifies the stack.

After deployment finishes, return to the Apps tab and confirm the Langfuse app is marked Running with its application URL available.

Open the application URL in a browser. The Langfuse web UI confirms the site is reachable.

It deploys Langfuse with PostgreSQL, Redis, ClickHouse, and MinIO backing services plus persistent database volumes.
The tutorial used host port 3000, which maps to the Langfuse web server on container port 80.
The tutorial verifies the clean first-run web UI because real traces, projects, users, and access settings depend on the production server.
No. The deployment guide should live on the Langfuse template detail page and be linked from the reusable template deployment docs page.
Take the DIY route and deploy Langfuse on your own server using Docker.
Initiate a secure shell connection to your server using the command below.
# Connect to your VPS
ssh root@your-server-ip
# Or with a specific SSH key
ssh -i ~/.ssh/your-key root@your-server-ipFirst time? Docker required! Install it with: curl -fsSL https://get.docker.com | sh
Organize your deployment by creating a dedicated project folder.
# Create and navigate to project directory
mkdir -p ~/apps/langfuse
cd ~/apps/langfuseCreate a new docker-compose.yml file and paste this configuration:
services:
langfuse-web:
image: langfuse/langfuse:3
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://langfuse:<your-db-password>@postgres:5432/langfuse
- NEXTAUTH_SECRET=<your-nextauth-secret>
- SALT=<your-salt>
- ENCRYPTION_KEY=<your-encryption-key>
- CLICKHOUSE_URL=http://clickhouse:8123
- CLICKHOUSE_MIGRATION_URL=clickhouse://clickhouse:9000
- CLICKHOUSE_USER=default
- CLICKHOUSE_PASSWORD=<your-clickhouse-password>
- REDIS_CONNECTION_STRING=redis://redis:6379/0
- LANGFUSE_S3_EVENT_UPLOAD_BUCKET=langfuse
- LANGFUSE_S3_EVENT_UPLOAD_REGION=auto
- LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID=langfuse
- LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=<your-minio-password>
- LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT=http://minio:9000
- LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE=true
- LANGFUSE_S3_MEDIA_UPLOAD_BUCKET=langfuse
- LANGFUSE_S3_MEDIA_UPLOAD_REGION=auto
- LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID=langfuse
- LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY=<your-minio-password>
- LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT=http://minio:9000
- LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE=true
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
clickhouse:
condition: service_started
minio:
condition: service_started
langfuse-worker:
image: langfuse/langfuse-worker:3
environment:
- DATABASE_URL=postgresql://langfuse:<your-db-password>@postgres:5432/langfuse
- SALT=<your-salt>
- ENCRYPTION_KEY=<your-encryption-key>
- CLICKHOUSE_URL=http://clickhouse:8123
- CLICKHOUSE_MIGRATION_URL=clickhouse://clickhouse:9000
- CLICKHOUSE_USER=default
- CLICKHOUSE_PASSWORD=<your-clickhouse-password>
- REDIS_CONNECTION_STRING=redis://redis:6379/0
- LANGFUSE_S3_EVENT_UPLOAD_BUCKET=langfuse
- LANGFUSE_S3_EVENT_UPLOAD_REGION=auto
- LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID=langfuse
- LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=<your-minio-password>
- LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT=http://minio:9000
- LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE=true
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
clickhouse:
condition: service_started
minio:
condition: service_started
postgres:
image: postgres:17-alpine
environment:
- POSTGRES_USER=langfuse
- POSTGRES_PASSWORD=<your-db-password>
- POSTGRES_DB=langfuse
volumes:
- langfuse_postgres:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U langfuse -d langfuse"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
clickhouse:
image: clickhouse/clickhouse-server:latest
user: "101:101"
environment:
- CLICKHOUSE_DB=default
- CLICKHOUSE_USER=default
- CLICKHOUSE_PASSWORD=<your-clickhouse-password>
volumes:
- langfuse_clickhouse:/var/lib/clickhouse
- langfuse_clickhouse_logs:/var/log/clickhouse-server
restart: unless-stopped
minio:
image: minio/minio:latest
entrypoint: sh
command: -c 'mkdir -p /data/langfuse && minio server /data --console-address ":9001"'
environment:
- MINIO_ROOT_USER=langfuse
- MINIO_ROOT_PASSWORD=<your-minio-password>
volumes:
- langfuse_minio:/data
restart: unless-stopped
redis:
image: redis:7-alpine
volumes:
- langfuse_redis:/data
restart: unless-stopped
volumes:
langfuse_postgres:
langfuse_clickhouse:
langfuse_clickhouse_logs:
langfuse_minio:
langfuse_redis:
PORTHost port to expose(default: 3000)DB_PASSWORDDatabase passwordNEXTAUTH_SECRETSession secretSALTAPI key saltENCRYPTION_KEYEncryption keyCLICKHOUSE_PASSWORDClickHouse passwordStart the services and tail the logs to verify startup.
# Spin up containers
docker compose up -d
# Verify deployment
docker compose ps
# Check logs for errors
docker compose logs -fOpen the required port in your firewall to allow access.
# Allow the application port through firewall
sudo ufw allow 3000/tcp
sudo ufw reload
# Access your app at:
# http://your-server-ip:3000Forget SSH and YAML files. Deploy Langfuse visually with Server Compass in just a few clicks.
After deploying Langfuse with Server Compass, complete these steps to finish setup
Open the Langfuse URL in your browser
Create your account
Create a project and generate API keys
Integrate the Langfuse SDK into your LLM application
Need help? Check out our documentation for detailed guides.
Common questions about self-hosting Langfuse
Simply download Server Compass, connect to your VPS, and select Langfuse from the templates list. Fill in the required configuration and click Deploy. The entire process takes under 3 minutes.
Langfuse requires a minimum of 1024MB RAM. We recommend a VPS with at least 2048MB RAM for optimal performance. Any modern Linux server with Docker support will work.
Yes! Server Compass provides volume mapping that allows you to import existing data. You can also use standard Langfuse backup and restore procedures.
Server Compass makes updates easy. Simply click the Update button in your deployment dashboard, and the latest Langfuse image will be pulled and deployed with zero downtime.
Langfuse is open-source software. You only pay for your VPS hosting (typically $5-20/month) and optionally Server Compass ($29 one-time). No subscription fees or per-seat pricing.
Download Server Compass and deploy Langfuse to your VPS in under 3 minutes. No Docker expertise required.
Download Server Compass