← Blog

Self-hosted Plausible analytics, in one command

Railyard

October 20, 2026

For a while, railyard.run ran with zero analytics. Not out of principle — we just hadn’t gotten to it, which meant every “is anyone actually reading this” question was a guess. Fixing it became the first real test of whether “self-hosted, one click” actually holds up for something we’d use ourselves, not just something we built for other people’s apps.

What we launched

Plausible Community Edition, as a Railyard stack template: three services — Plausible itself, Postgres for its own app data, and ClickHouse for the actual analytics events — provisioned together on one of our own servers.

railyard launch plausible --server <id>

That’s the whole provisioning step. No separate ClickHouse setup, no wiring connection strings by hand — the template declares all three services and how they talk to each other, and Railyard deploys the set as one unit.

What came after the launch command

The rest was the normal first-run of any self-hosted app, not anything Railyard-specific:

  1. Open the app’s URL, sign up as the instance owner — Plausible’s own first-run flow, nothing to pre-seed.
  2. + Add a website, enter the domain being tracked.
  3. Copy the tracking snippet it generates and drop it in the site’s <head>.

No custom domain was even necessary — the app’s default *.apps.railyard.run URL was enough to run the dashboard and serve the tracking script. We only use that path because it’s genuinely simpler, not because anything was missing.

Where it actually broke, briefly

It didn’t — which is itself worth saying plainly, since the point of posting this at all is to be honest about what self-hosting something actually costs in practice. The template launched clean, the three services found each other over Railyard’s private networking without any manual env var wiring, and the tracking script started showing pageviews in Plausible’s Realtime view within seconds of being added to the site.

The one thing worth knowing going in: a fresh launch creates a new app every time you run it, so launching twice means two full stacks running side by side, not an update to the first one. Easy mistake, easy fix — apps:rm <name> --confirm <name> in the CLI removes the extra one cleanly.

Why self-hosted instead of Plausible Cloud

Plausible Cloud is a fine product and the simpler choice for most teams. We picked self-hosted specifically because it’s the same category of claim we make about everything else on Railyard: you should be able to run the tools you depend on, on infrastructure you control, without a second vendor relationship for every piece of your stack. Cookie-free, no consent banner, and the data never leaves a server we provisioned ourselves.

If you’re weighing the same tradeoff for your own site, the Plausible template is one click away, and Logs, metrics and alerts covers the rest of what Railyard surfaces about traffic without a separate analytics stack at all.

Launch Plausible on your own server.

One click, no server to configure — Postgres and ClickHouse come wired up automatically.

Free plan, no card, and 14 days of Pro for every new team. One flat price per team.