Self-hosted Piqo
One container, one SQLite file, every feature of the cloud dashboard. This manual covers deploying, licensing and running it.
Fastest pathDeploy on RailwayOne click. Volume, secret and domain are set up for you. Live in about a minute.Your own serverDocker ComposeAny VPS with Docker: Hetzner, DigitalOcean, Vultr. One compose file, one volume.
What you get
The self-hosted build is the same product as piqo.app, packaged as a single Docker image. Realtime visitors, sources, pages, countries, devices, custom events, goals, funnels and journeys. Revenue attribution for Stripe, Paddle, Polar, Lemon Squeezy, Dodo and Creem. Signup attribution from Firebase, Supabase and Clerk. Google Search Console and Bing data. Shareable dashboards, a read-only JSON API, an MCP server and Ask AI with your own Anthropic key.
- No external services. Everything lives in one SQLite file. No Postgres, ClickHouse or Redis.
- Unlimited sites per install. The license never meters sites, events or team members.
- Your own domain serves the tracker. Ad blockers don't see a first-party script.
Requirements
- Docker, or a platform that runs Docker images (Railway, Render, Fly, Coolify).
- About 512 MB of RAM. 1 GB is comfortable to roughly 1M events a month; 10M a month is workable on a bigger box.
- A public hostname with HTTPS. The license registers that hostname as your install, and the tracker is served from it.
- A license key from piqo.app/self-hosted. One-time purchase, updates included.
How a deploy works
Every platform guide is the same four moves. The image is:
ghcr.io/mddanishyusuf/piqo-selfhost:0- Run the image with a persistent volume mounted at
/app/data. That's the database, backups and geo data. - Set
AUTH_SECRET(32+ random characters) andAPP_URL(your public URL). Nothing else is required. - Open the URL, create the owner account on
/setup, paste the license key on/activate. SettingPIQO_LICENSE_KEYskips that screen. - Add a site and put the script tag on your pages.
<script defer data-site="YOUR_SITE_KEY" src="https://analytics.example.com/piqo.js"></script>The
:0 tag follows every 0.x release automatically and never crosses a breaking major. See Updates & backups for how to move between versions.