Langfuse Self-Hosted

AdvancedAi Agents

Self-hosted tracing, evaluations, and prompt management for LLM applications, with every event kept in databases you run.

Published 6 October 2026 · Last updated 6 October 2026

Core Tools
PostgreSQL
PostgreSQL
ClickHouse
ClickHouse
Redis
Redis
Docker
Docker
Langfuse
Langfuse
Hosting
Hetzner
Hostinger
DigitalOcean
Amazon Web Services
Google Cloud Platform
+1
Reverse Proxy
Traefik
Caddy
NGINX
Self-Hosted PaaS
Coolify
Dokploy

About Langfuse Self-Hosted

Langfuse records what AI applications actually do in production. Every model call, tool call, retrieval step, and agent turn becomes a nested trace with cost and latency attached, and evaluations, prompt management, and usage analytics sit on top of the same data. It is open source, and the same codebase runs the vendor's cloud at billions of observations a month, so self-hosting gives you the full product rather than a cut-down edition. The reason to run it yourself is data: traces contain prompts, completions, and sometimes customer content, and a self-hosted instance keeps all of it in stores you administer.

The official Docker Compose file runs six services: the Langfuse web app and its background worker, PostgreSQL for accounts and projects, ClickHouse for traces and analytics, Redis for queues and cache, and an S3-compatible blob store that keeps every raw event. The file runs MinIO for it, from a Chainguard-built image, and MinIO's community edition is no longer maintained, so an external store (Amazon S3, Cloudflare R2, Google Cloud Storage, Azure Blob Storage, or SeaweedFS, the default in Langfuse's Helm chart) is the sturdier home for long-lived data. The components have real floors: ClickHouse alone wants 8 GiB, and the per-service minimums Langfuse publishes total about 11 vCPU and 26 GB, which lands the whole bundle on a 32 GB-class server. Kubernetes, through the Helm chart or the Terraform modules Langfuse maintains for the large clouds, is the documented route once a single VM is no longer enough.

Two ports are published, 3000 for the web interface and 9090 for the blob store's S3 endpoint; every other service in the file ships bound to the server's loopback address. The web port is what a reverse proxy in front forwards to. The blob-store port needs its own reachable address, because the browser fetches and uploads media through presigned URLs against it, and the bundled MinIO's default credentials should be changed before the server is exposed. Two settings decide whether the dashboards behave through a proxy: the public-URL variables must match the hostname the proxy serves, and timeouts and body-size limits must admit long analytics queries and large trace batches. A self-hosted PaaS is the alternative to managing a proxy yourself, installing Langfuse from a template with TLS included, and a tunnel exposes the instance without opening any inbound port at all.

Data moves through the bundle in a deliberate order: every ingested event is persisted to the blob store before anything processes it, so the raw record survives even when processing fails, and batch exports and media attachments live there too. The worker then moves events through Redis queues into ClickHouse, where the dashboards read them. A model provider is optional wiring rather than a requirement: the playground and LLM-based evaluations call one when configured, and the docs note that internet access itself is optional for ingestion, which is what makes a fully private deployment practical.

Key Features

  • ✓Langfuse in Docker from the official Compose file: web app and worker, PostgreSQL, ClickHouse, Redis, and an S3-compatible blob store
  • ✓Nested traces of model calls, tool calls, and agent steps, with cost and latency attached to every span
  • ✓Evaluations, prompt management, datasets, and usage analytics on the same data as the traces
  • ✓Every raw event persisted to the blob store before processing, so traces survive processing failures
  • ✓OpenTelemetry ingestion alongside the SDKs, so applications keep one instrumentation standard
  • ✓The same codebase as the vendor's cloud, with a Helm chart and Terraform modules for the Kubernetes route

When to Use Langfuse Self-Hosted

  • →Keeping prompts, completions, and customer content out of a third-party SaaS while tracing agents and chat applications
  • →Cost and latency dashboards for a fleet of LLM applications in one place
  • →Evaluating model or prompt changes against datasets built from real traffic
  • →A shared observability backend that several teams send traces to over OpenTelemetry or the SDKs
  • →Meeting data-residency rules by pinning the whole platform, raw events included, to one region or one rack

Pros

  • MIT-licensed core with no feature cap on tracing, evaluations, or prompt management
  • The same software the vendor's own cloud runs, so nothing learned on it is wasted
  • Standard interfaces everywhere: PostgreSQL, ClickHouse, Redis or Valkey, and any S3-compatible store
  • Official templates on two deploy platforms and Terraform modules for three large clouds

Cons

  • Six services with real floors: the official per-service minimums total about 11 vCPU and 26 GB of memory
  • The Compose path has no high availability, and the vendor names Kubernetes as the production route
  • Backups are yours to build: the Compose file ships none, and state sits in four stores in three different formats
  • Upgrades are usually a pull of new images, but the database migrations inside them take real time on large datasets

Hosting Options for Langfuse Self-Hosted

Hetzner

Deploy Langfuse Self-Hosted on Hetzner

The default. A server in the 32 GB class costs about €29 a month on the shared-vCPU line and about €41 on the Arm line, either of which clears the official memory minimum with the whole bundle on one machine. Langfuse publishes no host-specific guides, so this is the general Docker route: the Compose file, its marked secrets, a proxy in front of port 3000 and a hostname for MinIO's port 9090 behind it, with the other services left bound to loopback as the file ships them.

Hostinger

Deploy Langfuse Self-Hosted on Hostinger

The budget entry. The KVM 8 plan carries 8 vCPUs, 32 GB of RAM, and 400 GB of NVMe at $25.99 a month on a two-year term, $49.99 at the standard rate, which covers the official memory minimum with room to spare; its 8 vCPUs sit under the per-service CPU sum, so expect less headroom than a 16-vCPU box at high ingestion. Root access is full, and the panel adds weekly backups and a web terminal, but the services and their upgrades stay your job. Watch disk before memory: traces accumulate, and 400 GB fills within months at production volume.

DigitalOcean

Deploy Langfuse Self-Hosted on DigitalOcean

Per-second billing up to a monthly cap and snapshots from the panel, which suit a data-heavy service that grows by volume. The General Purpose tier with 32 GB and 8 vCPUs at $252 a month meets the official minimums with headroom; nothing in the Basic line does, because the per-service minimums total about 26 GB of memory. Managed PostgreSQL and managed Redis can take over two of the stores later, though ClickHouse and the blob store stay self-run here. Place the server where your applications run, so trace traffic stays on the private network.

Amazon Web Services

Deploy Langfuse Self-Hosted on Amazon Web Services

The official route for teams already in AWS: Langfuse maintains a Terraform module that provisions the containers and the data stores, or the Helm chart runs on EKS, whose control plane costs $0.10 an hour, about $73 a month, before any nodes. S3 is a native endpoint for the blob-store settings, RDS can run the PostgreSQL store, and ElastiCache the queue. The bill is the most complex of the routes here, but nothing else puts traces in the same network as the systems that generate them.

Google Cloud Platform

Deploy Langfuse Self-Hosted on Google Cloud Platform

The same argument on Google's side: the maintained Terraform module, or the Helm chart on GKE, where the management fee is waived for one zonal cluster. The blob-store settings can point at any S3-compatible endpoint, Cloud SQL runs the PostgreSQL store, and Memorystore the queue. It fits when the applications being traced already run in the same project, so ingestion stays on the internal network.

Microsoft Azure

Deploy Langfuse Self-Hosted on Microsoft Azure

Langfuse maintains a Terraform module for Azure as well, running the containers on AKS, whose free tier waives the cluster management fee. Azure Blob Storage is a supported blob-store backend in the configuration, with Azure Database for PostgreSQL available behind it. It fits organizations whose data-residency rules name a specific region: everything, raw event blobs included, stays inside it.

These are highlighted picks. To see all the tools, check the Hosting & Cloud category.

Reverse Proxy Options for Langfuse Self-Hosted

Traefik

Langfuse Self-Hosted with Traefik

The family default and the least work here: it discovers the web container from Docker labels and renews certificates itself. The Compose file publishes the web app on port 3000 and MinIO on 9090 and binds the other services to loopback, so Traefik needs one router for the web app and a second hostname for MinIO, which the browser reaches for media. Two settings decide whether the dashboards behave: the public-URL variables must match the hostname Traefik serves, and its idle timeout should be raised, since long analytics queries over large traces are what the troubleshooting docs' intermittent 502 and 504 entries are about.

Caddy

Langfuse Self-Hosted with Caddy

Automatic HTTPS from a few lines of config, the least ceremony for one Langfuse instance on one domain. It forwards one hostname to the web container's port 3000 and a second to MinIO's port 9090, which the browser reaches for media, and leaves the rest of the bundle on loopback as the Compose file ships it. The same cautions as any proxy here: the public-URL settings must match the domain Caddy serves, and its generous default timeouts suit the long dashboard queries better than tighter defaults, though a busy deployment still deserves a raised limit.

NGINX

Langfuse Self-Hosted with NGINX

The proxy many servers already run. Two of its defaults need attention with Langfuse: the 1 MB request-body limit, which real trace batches exceed, so client_max_body_size has to rise, and the idle timeout, which long dashboard queries overrun; the troubleshooting docs keep a dedicated entry for intermittent 502 and 504 errors. Point the public-URL variables at the hostname NGINX serves, forward to port 3000, add a second server block for MinIO's port 9090, which the browser reaches for media, and leave the rest of the bundle on loopback.

Self-Hosted PaaS Options for Langfuse Self-Hosted

Coolify

Langfuse Self-Hosted with Coolify

A free, self-hosted deploy platform with a Langfuse template in its library, though the template pins the v3 images, one major release behind the current version. It provisions the web app, the worker, PostgreSQL, Redis, and ClickHouse with generated secrets, signups disabled by default, and a headless-init admin account whose default email should be changed before real use. The template runs no MinIO: the S3 endpoints are left for you to point at your own store, which, since MinIO's community edition is no longer maintained, is a chance to point Langfuse at an existing S3, R2, or SeaweedFS store. Coolify's own proxy handles the domain and TLS.

Dokploy

Langfuse Self-Hosted with Dokploy

Free and self-hosted, with a blueprint adapted from Langfuse's official Compose file on the current v4 images, MinIO included, which the older Coolify template omits. MinIO's community edition is no longer maintained, so an external S3 endpoint is the sturdier home for long-lived data. One deployment insight is built in: the web interface fetches media through presigned S3 URLs in the browser, so the blueprint gives MinIO its own domain rather than leaving it internal. Domains, HTTPS, and Traefik routing come with the platform, so no separate reverse proxy is added next to it.

Langfuse Self-Hosted Add-ons

Each addition below extends this stack with a capability the base stack works fine without. None are required: include the ones your product actually needs when building this stack, and skip the rest.

Tunnel Add-ons

Add a tunnel when you're self-hosting without a static IP or can't open inbound ports — a home server, a VPS behind restrictive network policies, or anywhere a reverse proxy alone can't reach the internet.

Cloudflare Tunnel

Langfuse Self-Hosted with Cloudflare Tunnel

A public HTTPS address through an outbound-only connection, for the applications that send traces from infrastructure that is not yours: an app deployed on someone else's platform can POST to a tunnel hostname while no inbound port is open on the server. Free, with Cloudflare Access in front if you want login protection on the dashboards too. Point the tunnel at the web service, since the ingestion API and the interface are what must be reachable, and add a second hostname for the blob store's port 9090 when media is uploaded or viewed from outside the server's network. A stable hostname needs a domain on Cloudflare.

ngrok

Langfuse Self-Hosted with ngrok

The quick-start tunnel, for trying Langfuse from a laptop or testing SDK ingestion against it: one command gives a public HTTPS address, and no domain is needed. The free plan includes three endpoints, enough for the web app and the blob store's port, with 1 GB of transfer, 20,000 requests, and an interstitial page on browser visits, so it suits a trial more than a production capture endpoint. Paid plans start at $10 a month, and sustained use belongs on pay-as-you-go from $20 a month or on Cloudflare Tunnel.

Frequently Asked Questions about Langfuse Self-Hosted

Why self-host Langfuse instead of using Langfuse Cloud?

Langfuse Cloud starts free: the Hobby plan covers 50,000 units a month for two users with 30 days of data access, Core is $29 a month for 100,000 units with unlimited users and 90 days, and Pro at $199 a month extends retention to three years, with extra units at $8 per 100,000. A server that runs the whole self-hosted bundle costs from about €29 or $26 a month, so on pure price self-hosting wins only once your volume passes what the paid clouds include. What it buys is control: traces hold prompts and completions, and a self-hosted instance keeps them, raw events included, in your own databases for as long as you keep them, with no per-unit billing to watch. What it costs is operating six services. It is the same software either way, so the choice is where the data lives and who does the patching.

What size server does Langfuse need?

Langfuse publishes per-service minimums: the web app and the worker each want 2 vCPU and 4 GB, PostgreSQL the same, Redis 1 vCPU and 1.5 GB, ClickHouse 2 vCPU and 8 GB, and the blob store 2 vCPU and 4 GB when MinIO runs in the bundle. That totals about 11 vCPU and 26 GB of memory, which in practice means a 32 GB-class server for the single-VM path; pointing the blob settings at serverless S3 instead of MinIO drops the total to about 21.5 GB. Two figures move with scale: the guide recommends at least 16 GB for ClickHouse on larger deployments, and a busy Redis wants 4 vCPU before its networking and background work contend. Disk has no official floor; it grows with trace volume, since every raw event is kept.

Where does state live, and what needs backing up?

Four stores, each with a different job. PostgreSQL holds accounts, organizations, projects, and prompt definitions. ClickHouse holds traces, observations, scores, and the analytics computed from them. The blob store holds every ingested event in raw form, plus media and batch exports, which makes it the recovery path if ClickHouse is ever lost. The MinIO in the Compose file is a community-edition build whose upstream is archived, so a deployment meant to last should point the blob settings at S3, R2, or SeaweedFS and keep the data there. Redis holds queues and cache rather than durable state, but losing it discards events still awaiting processing. None of this is backed up by the Compose file, and the docs are explicit that the single-VM path includes no backups: PostgreSQL goes into pg_dump, ClickHouse needs its own backup tooling, and the blob store should be synced before any upgrade. The Kubernetes path carries the same split, so the stores, not the app containers, are what a backup schedule must cover.

Is it actually free? Licensing, telemetry, and upgrades.

The core is MIT-licensed, web app and worker included, and everything the Compose file runs is open source. Some features are Enterprise Edition and need a paid license key: project-level roles, audit logs, data retention policies, protected prompt labels, and the instance management API are the ones most teams notice. Releases follow semantic versioning, and an upgrade is a pull of the new images; long database migrations run as a background job to shorten the downtime window, which is worth planning around on large datasets. One default to know: telemetry is on and reports basic usage statistics, and one environment variable turns it off. There is no feature meter and no per-unit billing in the self-hosted edition, whatever your volume.

Langfuse or LangSmith: which observability platform?

Both trace LLM applications well, with SDKs for the common frameworks and OpenTelemetry support, and both evaluate runs and manage prompts. The difference is deployment: LangSmith, from the team behind LangChain, is proprietary and cloud-first, with self-hosting reserved for its Enterprise plan in your own cloud, so trace data normally sits on the vendor's infrastructure. Langfuse is open source under MIT and self-hostable without a license, which suits teams whose traces must stay in-house and whose volume makes a fixed server cheaper than per-unit billing. If you are deep in the LangChain ecosystem and want zero infrastructure, LangSmith's hosted tiers are the simpler start; if the data or the bill decides, Langfuse is the one you can run yourself.

Scores

Popularity5/5

Tens of thousands of GitHub stars and tens of millions of container pulls make Langfuse the default open-source answer in LLM observability, with one-click templates on two deploy platforms and Terraform modules maintained for three large clouds.

Learning Curve2/5

One command starts the whole bundle, but this is not a single-container product: PostgreSQL, ClickHouse, Redis, and an S3 store all run alongside the app, each with its own upgrade and backup story. The SDKs and the interface are simple; the operations around them are the learning curve.

Flexibility5/5

Every store sits behind a standard interface, so the layout bends: managed PostgreSQL, Valkey in place of Redis, any S3-compatible blob store, Compose or a deploy platform or Kubernetes, and any model provider for the playground. The Compose file is a starting point, not a box.

Performance4/5

Ingestion queues every event through Redis and writes analytics to ClickHouse's columnar engine, the same architecture the vendor's cloud runs at billions of observations a month. A single server caps the ceiling and the Compose path has no high availability, which is what keeps it off the top score.

Portability5/5

MIT-licensed core on PostgreSQL, ClickHouse, Redis or Valkey, and S3-compatible storage, with the data in each exportable. The same images run on any Linux host, a Kubernetes cluster, or the vendor's own cloud, and moving between them is a data copy plus configuration.

Tools in the Langfuse Self-Hosted Stack

DevOps & CI/CD

Observability & Monitoring

Hosting (choose one)

Reverse Proxy or PaaS (choose one)

Reverse Proxy

Self-Hosted PaaS

Add-ons (optional — add any, or none)

Tunnel

Langfuse Self-Hosted Pricing

From ~€29/mo Free to start

The software is free, so the fixed cost is a serious server: the official per-service minimums total about 11 vCPU and 26 GB of memory, which lands on the 32 GB class, from about €29 a month on a shared line to $252 for a 32 GB cloud instance. Blob storage is free with MinIO in the bundle or a few dollars a month on an S3-compatible store. Enterprise Edition features need a paid license key. For comparison, Langfuse Cloud is free up to 50,000 units a month, then $29 for Core and $199 for Pro.

Server (VPS or cloud)$29–252/mo

The six services' official minimums total about 11 vCPU and 26 GB of memory, so a single server needs the 32 GB class: roughly €29 to €41 a month on shared and Arm lines or about €138 on dedicated cores at Hetzner, $26 to $50 at Hostinger, and $252 for a 32 GB cloud instance at DigitalOcean. Kubernetes and managed stores on the large clouds cost more and remove the operations.

LangfuseFree (MIT core)

The web app, the worker, and the self-hosting core are MIT-licensed. Enterprise Edition features, such as organization-wide roles, the instance management API, and SSO enforcement, need a paid license key.

Blob storageFree with MinIO, or cents on S3

Every ingested event is persisted to the blob store before processing. MinIO runs free inside the bundle, or the settings point at S3 or any S3-compatible store, where a busy month costs a few dollars.

Exposure (optional)Free

The reverse proxies, deploy platforms, and tunnels here are free, open-source software, and TLS certificates come from Let's Encrypt.

Langfuse Self-Hosted System Requirements

source
CPU
2 vCPU per service, 1 for Redis; about 11 vCPU in total
RAM
26 GB in total across the six services at the per-service minimums
Disk
No official floor; grows with trace volume, since PostgreSQL and the blob store keep every raw event and ClickHouse the processed analytics
OS
Any Linux with Docker for the Compose path; Kubernetes for the production path

Quoted from the per-service minimums in Langfuse's scaling guide: web 2 vCPU and 4 GB, worker 2 and 4, PostgreSQL 2 and 4, Redis 1 and 1.5, ClickHouse 2 and 8, blob store 2 and 4 when MinIO runs in the bundle. That sums to about 11 vCPU and 25.5 GiB, rounded to 26 GB in the row above; a serverless S3 blob store drops the total to about 21.5 GiB. The guide recommends at least 16 GiB of memory for ClickHouse on larger deployments, and these are floors, not targets: capacity is driven by ingestion throughput and query load.