Bugsink
Error tracking compatible with Sentry SDKs in a single container - the lightest way to own your error data.
One-click deploy, from $13/mo on a Miget plan.
Bugsink takes the minimalist position on error tracking: one container that ingests Sentry SDK events, groups them into issues, and alerts you - no Celery, no Redis, no microservices. Where GlitchTip is the lean Sentry, Bugsink is the leanest thing that still does the job properly.
This template pairs that single container with a managed Postgres (auto-provisioned, DATABASE_URL auto-wired). It runs its own migrations on start. Two secrets and you are catching exceptions.
Built by a Sentry-ecosystem veteran with strong opinions about software that fits in your head: synchronous ingestion, sensible defaults, and a UI focused on the only question that matters - what broke, where, how often.
Upstream project: Bugsink
#what you get
- Compatible with all Sentry SDKs - just swap the DSN
- Single application container; migrations run on start
- Issue grouping, release tracking, and email alerts
- Managed Postgres auto-provisioned and auto-wired
- No event quotas - disk is the only meter
- The smallest error-tracking footprint in the catalogue: 2 GiB total
#topology
| Service | Role | Public |
|---|---|---|
| bugsink | UI + API + ingestion (:5000); migrates on start | yes |
| db | Postgres - managed service on Miget | no |
#miget sizing
// this stack needs
2 GiB RAM · 5 GB disk · 2 services
1 GiB for the app, 1 GiB for the managed Postgres. Bugsink ingests synchronously, so sizing is simple - it either keeps up (it does, for most teams) or you scale the one container up.
Hobby - recommended fit
$13/mo
1 vCPU · 2 GiB · 50 GiB disk
Headroom for your own apps: 2 GiB at $19/mo
Professional - production
$22/mo
1 vCPU · 2 GiB · 10 GiB disk
Dedicated resources, production SLOs - plan details
One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.
#vs. the managed service
What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| Bugsink on Miget ★ | 2 GiB plan | $13 | this whole stack, flat - no usage meters, and room left for your own apps |
| Sentry | Team | ~$26 | 50k errors/mo included, pay-as-you-go overage beyond quota |
#vs. other PaaS
Estimated monthly cost of running this exact stack (2 GiB RAM, 5 GB disk, 2 containers) elsewhere, from published June 2026 rates.
| Platform | Est. monthly | Notes |
|---|---|---|
| Miget ★ | $13 flat | compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan |
| Heroku | ~$100 | no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown |
| DO App Platform | ~$29 | no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here) |
| Render | ~$26 | per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service |
| Railway | ~$21 | usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top |
| Fly.io | ~$13 | cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra |
Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.
#deploy it
On Miget
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
bugsink -
Set the required variables:
SECRET_KEY, Django secretADMIN_PASSWORD, initial admin login (with ADMIN_EMAIL)BASE_URL, set to the app’s https domain after first deploy
- Deploy. Miget layers
compose.miget.yaml(RAM, privacy, volumes, managed services) automatically
Locally first?
Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:
git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/bugsink
docker compose up -d Same files, same behavior. The template README covers connection strings and scaling notes.
#faq
Bugsink or GlitchTip - which should I pick?
Bugsink if you want the absolute minimum to operate (one container, $13-20/month plans) and primarily need error tracking. GlitchTip if you also want performance monitoring, uptime checks, and a multi-worker ingestion pipeline. Both speak Sentry SDK.
Does Bugsink work with my language’s Sentry SDK?
Yes - Python, JavaScript/Node, Ruby, PHP, Go, Java, .NET, mobile: anything that emits the Sentry event protocol. Configure the SDK with your Bugsink DSN and errors arrive.
How much does self-hosted error tracking cost with Bugsink?
The stack totals 2 GiB: $13/month hobby fits it exactly, $25/month gives comfortable headroom. Compare to event-metered SaaS where one crash-looping client can exhaust a monthly quota in minutes.
Can Bugsink handle production traffic?
Bugsink is engineered for exactly this scale-down: synchronous ingestion with deliberate performance work upstream, comfortably handling millions of events per day on modest hardware according to its docs. For most teams, the single container is genuinely enough.
Ship Bugsink today
One compose stack, 2 GiB of RAM, from $13/month flat, and it runs on your laptop with the same files.