Welcome
Epure groups exceptions: stack traces, breadcrumbs, occurrence counts. Self-host is one Rust binary + PostgreSQL 16 (RLS), two Compose containers. Cloud is the same binary, hosted. Official Sentry SDKs; change only dsn.
Job: app throws → grouped issue + readable stack → ship the fix.
What is Epure?
Error tracking for exceptions: grouped issues, stack traces, breadcrumbs. Keep the official Sentry SDK for your runtime and point dsn at your host (self-host or Cloud).
Fastest path if the host is already up: Quickstart. From zero, published repo:
git clone https://github.com/epure-sh/epure.git && cd epure && docker compose up8080 taken? cp .env.example .env and set EPURE_PORT. Configuration.
http://{public_key}@localhost:8080/{project_id}Who is this for?
You already ship an official Sentry SDK, or you are about to. You want Issues on a VPS without another APM suite.
Self-host is $0 on hardware you control. Unsure which SDK package: Pick your SDK. Prefer managed hosting: Epure Cloud.
What you keep
Keep the official Sentry client and the envelope/store wire shape. Change the host and project id in dsn.
| Keep | Change |
|---|---|
| Official Sentry SDK for your runtime (see Pick your SDK) | Point dsn at your host |
| Envelope / store wire shape | Host and project id in the DSN |
CI fixtures cover @sentry/browser and @sentry/node 7.120.0; other languages have captured fixtures. Set traces, profiles, and replay sample rates to 0.
What ships today?
Two Compose containers, no Redis or Kafka.
| Ships | Does not ship |
|---|---|
| Exception events + breadcrumbs | Tracing / APM |
| JS/TS source map demangle | Session replay, profiling |
| Issues triage, releases, webhooks | Generic logs product |
| Spike valve, ingest caps | iOS / Android crash reporting |
Where to go next
Install Compose if the host is down. Otherwise copy a DSN and capture one exception.
Also useful
FAQ
Can I keep my Sentry SaaS init options?
Yes. Replace dsn and leave the rest of Sentry.init. Set sample rates for traces, profiles, and replay to 0, since those item types are discarded on ingest. Confirm a throw with Verify. Full init tables: JavaScript.
Do Python, Go, or PHP SDKs work?
Do I need Redis or Kafka?
No. Two containers: the Rust binary and PostgreSQL 16. Ingest uses an in-process Tokio queue and sessions live in Postgres. Operators set env vars in Configuration.
What if port 8080 is taken?
cp .env.example .env, set EPURE_PORT (public URL follows on localhost), recreate epure. Details: Configuration.
Can I deploy on Render or a homelab panel?
Yes. Templates ship in the public repo — import from Git, no marketplace export. PaaS and panels, one-click deploy guide, Self-host § Deploy.