<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Langfuse on Cloudron - Community Package]]></title><description><![CDATA[<h2><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /> Langfuse: community package now available</h2>
<blockquote>
<p dir="auto"><strong>TL;DR:</strong> Langfuse is an open-source LLM observability platform. It captures the traces and generations from your AI apps — prompts, completions, model, token usage, latency and cost — so you can actually see what your LLM calls are doing. Now packaged for Cloudron and ready to install. Built and tested on Cloudron 9.x; unofficial and community-maintained.</p>
</blockquote>
<h3>Links</h3>
<ul>
<li><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3e0.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--house" style="height:23px;width:auto;vertical-align:middle" title="🏠" alt="🏠" /> Project homepage: <a href="https://langfuse.com" target="_blank" rel="noopener noreferrer nofollow ugc">https://langfuse.com</a></li>
<li><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e6.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--package" style="height:23px;width:auto;vertical-align:middle" title="📦" alt="📦" /> Upstream repo: <a href="https://github.com/langfuse/langfuse" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/langfuse/langfuse</a></li>
<li>🧱 Cloudron package repo: <a href="https://github.com/OrcVole/langfuse-cloudron" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/OrcVole/langfuse-cloudron</a></li>
</ul>
<p dir="auto">Self-hosted, so there's no public demo to click — once installed it has a full web UI at your chosen domain, behind your Cloudron login. (Screenshot below.)</p>
<hr />
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e5.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--inbox_tray" style="height:23px;width:auto;vertical-align:middle" title="📥" alt="📥" /> How to install</h3>
<p dir="auto">Community packages aren't in the App Store, so install via the CLI or easily as explained here:</p>
<h2>Installation</h2>
<ul>
<li>Click on the Add custom app drop down top right in the App Store and choose Community app:</li>
<li>Then paste in the CloudronVersions.json URL into the box that pops up:</li>
</ul>
<p dir="auto"><img src="/assets/uploads/files/1782553024126-community-package-resized.jpeg" alt="Community Package.jpeg" class=" img-fluid img-markdown" /> <img src="/assets/uploads/files/1782553033195-cloudronversions.jpeg" alt="CloudronVersions.jpeg" class=" img-fluid img-markdown" /></p>
<pre><code class="language-bash"># recommended: install the published community build from the versions URL
cloudron install \
  --versions-url https://raw.githubusercontent.com/OrcVole/langfuse-cloudron/main/CloudronVersions.json \
  --location langfuse.example.com

# or pin the prebuilt image directly (digest is in CloudronVersions.json)
cloudron install \
  --image ghcr.io/orcvole/langfuse-cloudron@sha256:3e1388815ef1d0faecd9f4571e174d8ffa0e2d2a01a658119629c62d5e501dbb \
  --location langfuse.example.com

# or build it yourself from the repo
git clone https://github.com/OrcVole/langfuse-cloudron.git
cd langfuse-cloudron
cloudron build
cloudron install --image your-registry/langfuse:latest --location langfuse.example.com
</code></pre>
<p dir="auto"><strong>Minimums:</strong> 5 GiB RAM (ClickHouse is the main consumer; a 4 GiB constrained option is documented). Addons used: <code>localstorage</code>, <code>postgresql</code>, <code>redis</code>, <code>oidc</code>, and <code>sendmail</code> (optional). It also claims one extra subdomain for trace-media presigned URLs — Cloudron prompts for it during install. Needs box version 9.1.0+.</p>
<p dir="auto"><strong>First run:</strong> sign in with your Cloudron account (OIDC SSO). Create a project, then copy your public and secret API keys from the Langfuse UI (Settings → API Keys) for your SDKs or the OTLP endpoint. The trace-encryption key is generated for you and preserved across updates and restores — you never have to manage it.</p>
<hr />
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f464.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--bust_in_silhouette" style="height:23px;width:auto;vertical-align:middle" title="👤" alt="👤" /> For users</h3>
<p dir="auto"><strong>Why try it:</strong> if you're building anything with LLMs and can't see what your prompts, completions, costs and latencies actually are, Langfuse is the open-source answer — self-hosted, on your own box.</p>
<p dir="auto">What you get out of the box:</p>
<ul>
<li>Trace and generation capture from the Langfuse SDKs (Python/JS) or any OpenTelemetry/OTLP client — prompts, completions, model, tokens, cost, latency.</li>
<li>Evals, datasets, prompt management and dashboards layered on top of those traces.</li>
<li><strong>Cloudron-specific wins:</strong> SSO through your Cloudron login, automatic backups (the bundled ClickHouse, the trace media and the secrets all ride along), one-click updates with your encryption key preserved, and all state under <code>/app/data</code>.</li>
</ul>
<p dir="auto">Good fit if you run AI apps and want self-hosted observability instead of shipping traces to a SaaS. Probably not for you if you only need basic request logging, or if you specifically need the enterprise/EE features — this ships the MIT core only.</p>
<hr />
<h3>🧰 For packagers: what we learned</h3>
<p dir="auto"><strong>What helped</strong></p>
<ul>
<li>Cloudron's <code>postgresql</code> and <code>redis</code> addons cover two of Langfuse's four stores out of the box, so only ClickHouse and S3 needed bundling.</li>
<li><code>localstorage</code> gives <code>/app/data</code> backup and restore for free — the bundled ClickHouse and MinIO data ride along with it, no custom backup hook needed.</li>
</ul>
<p dir="auto"><strong>What was tricky and how we solved it</strong></p>
<ul>
<li>Langfuse ships <strong>musl</strong> (Alpine) Node and Prisma engine binaries, but the Cloudron base is <strong>glibc</strong>. Because the ELF interpreter is per-binary, the two coexist: we run the upstream musl Node and musl Prisma engines in place via an isolated musl loader, with <code>PRISMA_*_ENGINE</code> pointed at version-agnostic paths so Prisma doesn't try to re-detect the platform.</li>
<li>ClickHouse defaulted to listening on all interfaces — removed the docker-related config so it binds localhost only.</li>
<li>MinIO collided with ClickHouse on a port; moved MinIO to alternate ports.</li>
<li>A bootstrap script used a bashism (<code>&amp;&gt;</code>) but <code>/bin/sh</code> is dash — run it with <code>bash</code>, not <code>sh</code>.</li>
</ul>
<p dir="auto"><strong>Still rough and open questions</strong></p>
<ul>
<li>Memory sizing: ClickHouse is the swing factor. We default to 5 GiB; real-world footprint reports would be very welcome.</li>
</ul>
<hr />
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f6e0.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--hammer_and_wrench" style="height:23px;width:auto;vertical-align:middle" title="🛠" alt="🛠" />️ For the Cloudron team</h3>
<p dir="auto"><strong>Maintenance burden:</strong> Langfuse is very actively developed and releases often, so expect regular version bumps — but the build takes a single <code>LANGFUSE_VERSION</code> arg, so a rebump is one line plus a rebuild.</p>
<p dir="auto"><strong>Why it would suit the App Store:</strong> LLM observability is a hot category with real demand, the upstream is clean with official Docker images, ingestion is the vendor-neutral OTLP standard, and the core is MIT.</p>
<p dir="auto"><strong>Friction worth knowing about:</strong> the <code>versions-url</code> install path silently requires <code>packagerName</code> in the manifest (it's stricter than the documented schema and fails install without it); and the <code>httpPorts</code> contract (manifest key = the runtime env var that holds the subdomain FQDN) took some trial and error to get right.</p>
<hr />
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4bb.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--computer" style="height:23px;width:auto;vertical-align:middle" title="💻" alt="💻" /> For the app's developers and contributors</h3>
<p dir="auto">A few low-effort things that help packagers a lot:</p>
<ul>
<li>Document the musl-vs-glibc assumption explicitly — that the Node and Prisma binaries are musl surprises anyone packaging onto a glibc base.</li>
<li>Keep the single-encryption-key and single-data-directory model; it's what makes backup/restore clean.</li>
<li>Keep tagging releases and publishing the changelog so we can track update triggers.</li>
</ul>
<p dir="auto">Package source and PRs welcome here: <a href="https://github.com/OrcVole/langfuse-cloudron" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/OrcVole/langfuse-cloudron</a>. Happy to co-maintain.</p>
<hr />
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f513.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--unlock" style="height:23px;width:auto;vertical-align:middle" title="🔓" alt="🔓" /> Unlocks</h3>
<p dir="auto">Once it's running, you can:</p>
<ul>
<li>Point any LLM app's OpenTelemetry exporter or Langfuse SDK at your own instance and watch traces and generations land in real time.</li>
<li>Track token usage and cost per model, feature or user across all your AI apps — fully self-hosted, nothing leaves your box.</li>
</ul>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f517.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--link" style="height:23px;width:auto;vertical-align:middle" title="🔗" alt="🔗" /> Synergies</h3>
<p dir="auto">Pairs nicely with other Cloudron apps:</p>
<ul>
<li><strong>Langfuse + Open WebUI:</strong> Open WebUI's built-in OpenTelemetry export lands infrastructure traces in Langfuse over TLS (point <code>OTEL_EXPORTER_OTLP_ENDPOINT</code> at the Langfuse OTLP path with <code>OTEL_OTLP_SPAN_EXPORTER=http</code>); for rich per-generation tracing, use Open WebUI's Pipelines Langfuse filter.</li>
<li><strong>Langfuse + your own AI code:</strong> any app or script using the Langfuse Python/JS SDK — RAG pipelines, agents, batch jobs — gets a full trace and generation tree, including model, prompt and token usage.</li>
</ul>
<hr />
<p dir="auto">Feedback, bug reports, and "works on my install" confirmations all welcome below. <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f64f.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--pray" style="height:23px;width:auto;vertical-align:middle" title="🙏" alt="🙏" /></p>
]]></description><link>https://forum.cloudron.io/topic/15652/langfuse-on-cloudron-community-package</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 14:52:34 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/15652.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Jun 2026 01:41:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Langfuse on Cloudron - Community Package on Tue, 30 Jun 2026 12:15:32 GMT]]></title><description><![CDATA[<h2>Update: hardening pass complete, production-proven, and one correction on backups</h2>
<p dir="auto">A few days on from the original post, the package has been through a full integration and hardening pass on a live Cloudron box. Most of this is good news. There is also one correction to a claim in the original that is important enough to lead with.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--warning" style="height:23px;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ Correction: bundled-ClickHouse backup needs care (a fix is in progress)</h3>
<p dir="auto">The original post said that <code>/app/data</code> backup "just works, no custom backup hook needed." That holds right up until ClickHouse happens to be running a background merge during the backup snapshot.</p>
<p dir="auto">Here is the race. ClickHouse continuously creates and deletes temporary merge directories under its store (<code>tmp_merge_*</code>, <code>tmp_insert_*</code>, <code>tmp_fetch_*</code>). Cloudron's rsync syncer walks that tree, and if one of those directories disappears between enumeration and read, <code>readTree</code> receives <code>null</code> and crashes on <code>.sort()</code>. The part that matters: that crash aborts the entire server backup run, not only Langfuse. Every app scheduled after it is left on the previous night's snapshot. The failure is timing-dependent, so it appears intermittently with no configuration change on your side.</p>
<p dir="auto">This affects any ClickHouse-backed package (Plausible, PostHog, SigNoz, and others), so we have filed it upstream as a platform robustness issue: <a href="https://forum.cloudron.io/topic/15663/backup-task-crashes-when-a-clickhouse-app-deletes-a-temp-merge-dir-mid-snapshot">https://forum.cloudron.io/topic/15663/backup-task-crashes-when-a-clickhouse-app-deletes-a-temp-merge-dir-mid-snapshot</a>. A single null-guard before the sort would fix it for every affected app.</p>
<p dir="auto">Until that lands, the workaround (full detail in <a href="https://github.com/OrcVole/langfuse-cloudron/blob/main/docs/KNOWN-ISSUES.md" target="_blank" rel="noopener noreferrer nofollow ugc">KNOWN-ISSUES.md</a>:</p>
<ul>
<li>Exclude Langfuse from the automatic backup schedule so a racy run cannot abort the others, and back it up out of band.</li>
<li>One correction to the obvious workaround: Cloudron will not back up a stopped app, so "stop the app, then back it up" is not a valid path. A quiesced backup has to be a filesystem-level snapshot taken outside the platform, or you simply re-run the schedule, since it is a timing collision and usually clears on the next attempt.</li>
</ul>
<p dir="auto">The real fix is the next release. Version 0.2.0 moves the ClickHouse store to a <code>persistentDir</code> and backs it up as a consistent logical dump through <code>backupCommand</code> and <code>restoreCommand</code>, which removes the race structurally, because the syncer never walks the live store at all. It is scoped and tracked, and it gets its own backup-and-restore round-trip gate before it ships.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /> What is new since the original</h3>
<ul>
<li>A full hardening pass on the live instance, covering the code, configuration and dependency surface, container capabilities, the network surface, the authentication surface, and secrets at rest and in transit. Verdict: pass. The write-up is here: <a href="https://github.com/OrcVole/langfuse-cloudron/blob/main/docs/SECURITY.md" target="_blank" rel="noopener noreferrer nofollow ugc">SECURITY.md</a>. In short: the internal services (ClickHouse and the worker) are unreachable from outside; the only surface open without a login is <code>/api/public/*</code>, which is API-key gated by design; secrets are <code>0600</code>; and the encryption key is byte-identical across both update and restore.</li>
<li>Production-proven from the public package: installed from the <code>versions-url</code> exactly as any operator would, OIDC single sign-on confirmed end to end, presigned trace-media working through the proxy, update and backup-restore both preserving the encryption key, and memory measured under sustained ingestion (peak around 2.6 GiB, with the 5 GiB default holding comfortably).</li>
</ul>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f50c.png?v=af5271e93de" class="not-responsive emoji emoji-android emoji--electric_plug" style="height:23px;width:auto;vertical-align:middle" title="🔌" alt="🔌" /> Integration note: agentgateway</h3>
<p dir="auto">If you are considering wiring agentgateway's own traces into Langfuse, it will not work on agentgateway 1.3.1, and the cause is not on the Langfuse side. Its <code>config.tracing</code> OTLP exporter sends cleartext even when the endpoint is <code>https://</code>, and Cloudron's TLS-terminating proxy rejects that with a <code>400</code>. Langfuse accepts the identical payload over TLS without complaint. agentgateway simply will not negotiate TLS for trace export, and there is no configuration option to change that. Filed upstream: [agentgateway issue — link]. Open WebUI and the Langfuse SDKs both handle TLS correctly, so the integrations described in the original post work as written.</p>
<h3>What is next</h3>
<p dir="auto">Version 0.2.0 is the ClickHouse backup rework described above. Source, issues and pull requests are here: <a href="https://github.com/OrcVole/langfuse-cloudron" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/OrcVole/langfuse-cloudron</a>. Real-world memory-footprint reports and "works on my install" confirmations remain very welcome.</p>
]]></description><link>https://forum.cloudron.io/post/126274</link><guid isPermaLink="true">https://forum.cloudron.io/post/126274</guid><dc:creator><![CDATA[LoudLemur]]></dc:creator><pubDate>Tue, 30 Jun 2026 12:15:32 GMT</pubDate></item><item><title><![CDATA[Reply to Langfuse on Cloudron - Community Package on Sat, 27 Jun 2026 01:51:27 GMT]]></title><description><![CDATA[<p dir="auto">Also note the earlier work of <a class="plugin-mentions-user plugin-mentions-a" href="/user/lanhild" aria-label="Profile: lanhild">@<bdi>lanhild</bdi></a></p>
<p dir="auto"><a href="https://github.com/Lanhild/langfuse-cloudron" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/Lanhild/langfuse-cloudron</a></p>
]]></description><link>https://forum.cloudron.io/post/126177</link><guid isPermaLink="true">https://forum.cloudron.io/post/126177</guid><dc:creator><![CDATA[LoudLemur]]></dc:creator><pubDate>Sat, 27 Jun 2026 01:51:27 GMT</pubDate></item></channel></rss>