Best self-hosted error tracking: Sentry, GlitchTip, Bugsink, Telebugs, Epure
best self-hosted error tracking
Install shortlist for a VPS. Matrix on /research. MiB on /proof. Rank by license, containers, and DSN swap.
On this pageShowHide
You are choosing software to install on a VPS, not a hosted free quota. The SDK you already ship is an official Sentry package. Rank each tool on license, how many containers it asks for, and whether exceptions are the whole product. Hosted free tiers live on Best free error tracking. Leaving Sentry Cloud as a product decision lives on Sentry alternatives. The dated five-tool matrix (license, architecture, deploy, scope) lives on Self-hosted research. Dated Epure MiB receipts live on Resource footprint. This page is the install shortlist with lived picks.
Shortlist
Five installs show up when people ask for the best self-hosted error tracking on a small box. Sentry self-host is the full suite. GlitchTip, Bugsink, Telebugs, and Epure are the small-box rows that still accept a Sentry DSN for exceptions. Pick from the constraint you actually have: license, RAM, process count, or suite features. For the compact sourced matrix, open Self-hosted research instead of duplicating tables here.
Matrix pointer
License, compose shape, DB default, and SDK path for all five tools are scored once on the research page (method dated 2026-10-05). This essay does not keep a second scoreboard. When counsel asks for the table, send that URL. When an operator asks which install to try on Friday, keep reading here.
Sentry self-host floor
Official self-hosted Sentry asks for about 16 GB of RAM plus 16 GB of swap on the full suite. That is a real floor, not a marketing jab. Sentry also documents COMPOSE_PROFILES=errors-only, an official lighter profile that still runs a large fleet compared with a two-container box. Disclose that profile before you argue footprint. Keep Sentry self-host when replay, tracing, or profiling is the daily job and you can operate the compose. If the daily job is a grouped exception and a readable stack, the small installs below are the shortlist. Suite-floor narrative: Sentry self-hosted RAM.
GlitchTip row
GlitchTip is MIT. The usual compose is about four services: app, worker, Postgres, and Redis or Valkey. Install docs list 256 MB as a minimum and 512 MB as recommended. You keep the official Sentry SDK and change the DSN. Years in production matter when you want a Django crew and an OSI license. GlitchTip also sells performance and uptime features that Epure does not ship. Stay on GlitchTip when MIT or that maturity is the requirement. Head-to-head: vs GlitchTip.
Bugsink row
Bugsink is Polyform Shield: source-available, not an OSI license. The win is one Django container, SQLite by default, Postgres optional. DSN swap works. Pick Bugsink when one process is the whole requirement and counsel accepts Shield. Leave when Shield blocks the use or when you want Postgres and row-level defaults without arguing SQLite. Head-to-head: vs Bugsink.
Telebugs row
Telebugs is $299 once per domain, then your VPS. One Rails plus SQLite container. Documented minimum around 1 GB. DSN swap after you pay. Leave it off a $0 license shortlist. It is a purchase, not a clone-and-run Apache or MIT grant. Head-to-head: vs Telebugs.
Epure row
Epure is Apache 2.0. Two Compose services: a Rust binary (epure) and postgres:16-alpine. No Redis, Kafka, or ClickHouse in the OSS compose. You keep the official Sentry SDK and change the DSN. Epure stores exception events and drops transaction, replay, and profile items. That is partial compatibility, not full Sentry protocol parity. Grouping is SHA-256 of exception type plus the top in-app frame (file, function, line). A custom SDK fingerprint array overrides the default hash.
Do not paste idle MiB into this essay. Quote the dated row that matches your box on Resource footprint. You still own backups, upgrades, and disk alerts. The software fee is $0. The machine is not.
Lived pick
I needed a box that would not become a second product during an incident. Checkout started returning 500s. I opened the issue list: exception type, a climbing count, and one stack with our frame. That screen is the product. A usage-priced suite bills the same spike. A 16 GB self-host wants ops time I did not have for an errors-only job. I stood up Epure with docker compose up -d, waited for GET /health to return {"status":"ok"}, pasted a new DSN, set tracesSampleRate, replay rates, and profilesSampleRate to 0, and sent one captureException. HTTP 202, then an Issues row. The second send raised the count on the same issue.
Two gotchas showed up the first week. First, a binary older than the public-key-only ingest change returned 401 invalid_dsn until I pulled a current image (Epure v0.1.5+). Second, a minified front-end release without matching source maps collapsed unrelated throws into one junk group because the top frame looked like a single letter at line 1. Fix the map for that release; a smarter grouper will not. Both are ops facts, not marketing bullets. Map path: Sourcemaps. DSN failures: Invalid DSN.
Friday install path
- Clone
https://github.com/epure-sh/epureand bring Compose up with the prod overlay when you leave laptop Docker. - Wait for
GET /health→{"status":"ok"}on the public URL. - Create a project. Copy the DSN from Settings → SDK connection (numeric project id).
- Point the official Sentry SDK. Zero traces, replay, and profile sample rates.
- Send
captureExceptiononce. Expect HTTP 202, then one Issues row. Send again; the count rises. - Pin the image tag. Schedule
pg_dump. Details: Installation, Verify, Backups.
Pick the install
Pick Epure if counsel wants Apache 2.0, you will run Docker Compose and a Postgres volume on a small VPS, the daily job is a grouped exception and a readable stack, and you already ship a Sentry SDK you can re-point. Pick GlitchTip for MIT and a Django stack you already know. Pick Bugsink for one container when Shield is acceptable. Pick Telebugs if $299 once and a Rails appliance is the purchase. Pick Sentry self-host when the suite is the job and you can run the large compose, including the official errors-only profile if you only need errors inside that fleet.
Limits
None of the small hosts is a full Sentry replacement. Epure has no session replay, distributed tracing, profiling, mobile crash symbolication, or generic log product. Cloud list prices on this site (Pro $24, Plus $79) are published, and Cloud is not live or checkout-ready as of 2026-10-05. Self-host is the path that ships today. Pairwise pages: vs Sentry, vs GlitchTip, vs Bugsink, vs Telebugs. Research matrix: Self-hosted research. Footprint table: Resource footprint.
When not to self-host
If nobody on the team will own Compose, backups, and image pins, a hosted exception product is the honest choice. If support closes tickets from session recordings every day, buy a suite that stores replay. If the constraint is a free hosted quota this month, read Best free error tracking instead of forcing a VPS. Self-host is a license and an ops contract. This shortlist assumes you accepted both.