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 Copy
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:
Open the app’s URL, sign up as the instance owner — Plausible’s own first-run flow, nothing to pre-seed.
- Add a website, enter the domain being tracked. Copy the tracking snippet it generates and drop it in the site’s . 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 --confirm 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.
Top comments (0)