Standalone deployment
With nebariapp.enabled: false — the chart’s default — no NebariApp is rendered, so no
operator, gateway, cert-manager, or Keycloak is needed. Just Kubernetes and Helm 3.
Install
Section titled “Install”helm repo add nebari https://nebari-dev.github.io/helm-repositoryhelm repo update
# examples/ ships in the pack repository, not inside the published chartgit clone https://github.com/nebari-dev/langfuse-pack.gitcd langfuse-pack
helm install langfuse nebari/nebari-langfuse \ -f examples/standalone-values.yamlexamples/standalone-values.yaml
is short enough to skip the clone and paste into a values file of your own:
nebariapp: enabled: false
langfuse: langfuse: nextauth: url: http://localhost:3000 auth: disableUsernamePassword: false # allow email/password locally providers: {} # no SSOTwo things are flipped from the Nebari defaults: username/password login is re-enabled (there is no Keycloak), and the providers map is emptied so NextAuth does not look for one.
Access
Section titled “Access”kubectl port-forward svc/langfuse-web 3000:3000Open http://localhost:3000 and sign up with an email and password. The first account is
created through the normal sign-up flow.
Beyond port-forward
Section titled “Beyond port-forward”The upstream chart has an ingress block for the web service
(langfuse.langfuse.ingress.* — see Value nesting), or switch the
service type. Either way, update nextauth.url to the address users will actually type,
and put TLS in front of it: sessions and API keys travel over this connection.
What standalone gives up
Section titled “What standalone gives up”- No SSO. Accounts are local to Langfuse, with no central deprovisioning.
- No TLS. Terminate it yourself.
- Bundled datastores. Frozen
bitnamilegacyimages, fine for evaluation. See Datastores. - Still four datastores. Standalone does not mean lightweight — PostgreSQL, ClickHouse, Redis, and MinIO all still run, and ClickHouse in particular needs real CPU and memory.
Generated secrets
Section titled “Generated secrets”secrets.generate defaults to true, and standalone installs are normally plain Helm, so
the lookup-based generation works as intended: values are created once and preserved across
upgrades.
If you later move this deployment under Argo CD, that changes — see Secrets and GitOps.
Sending traces
Section titled “Sending traces”Nothing about the client integration is Nebari-specific. Create a project in the UI, generate API keys, and point the SDK at the port-forwarded address:
from langfuse import Langfuse
langfuse = Langfuse( public_key="pk-lf-...", secret_key="sk-lf-...", host="http://localhost:3000",)From inside the cluster, use http://langfuse-web.<namespace>.svc.cluster.local:3000.
Testing it end to end
Section titled “Testing it end to end”The repository has a black-box e2e suite that works against any deployment:
BASE_URL=http://localhost:3000 MODE=standalone ./tests/e2e/run.shrun.sh needs only curl. To build a throwaway cluster and run the whole thing:
./tests/e2e/kind-e2e.shSee Local development.