Epure
Guides

Migrate Sentry to Epure (DSN swap + Verify)

migrate from Sentry to self-hosted

Keep official Sentry SDK init, replace only dsn, zero traces/replay/profile rates, Confirm with Verify. No history import claim. Cutover checklist, not a compat matrix.

On this pageShow
  1. Host up /health
  2. Project and DSN
  3. Swap only dsn
  4. Zero sample rates
  5. Capture and Verify
  6. What you lose
  7. Who should use what
  8. Limitations
  9. Questions

Keep your official Sentry SDK init options, replace only dsn with your Epure host, and set traces, profiles, and replay sample rates to 0. Bring the host up, create a project DSN, capture one exception, Confirm with Verify (202 then env chip then Issues). Event history import is not documented; omit it.

You already ship official Sentry SDKs against Sentry SaaS (or a large Sentry self-host flotilla) and want exception Issues on a two-container Epure host (Rust binary + PostgreSQL 16) without rewiring every init option. Full Sentry self-host for replay and APM, or staying on SaaS for those products, is the undesired alternative when exception-only is enough. This is a cutover checklist, not another "who accepts a DSN" matrix.

Unique wedge: Welcome FAQ and Quickstart one-liner: keep the same init; replace only dsn; zero discarded sample rates; Verify bisect. Bias disclosed: Epure first-party docs. Distinct from Sentry SDK compatible (scoreboard) and from any GlitchTip-only migrate.

Primary how-to: Welcome, Quickstart. Acceptance: Verify. Host: Installation. Runtime pins: Platforms. Sibling: Sentry SDK compatible, Two-container error tracking, Epure vs Sentry.

Host up /health

Clone the public tree and start two containers, or use the production overlay on a VPS. Wait until GET /health returns { "status": "ok" }. Laptop: git clone https://github.com/epure-sh/epure.git && cd epure && docker compose up, then curl -sS http://localhost:8080/health. Production steps: Installation § Production.

Project and DSN

Register, open Settings → SDK connection, create a key if needed. Secret is shown once. DSN shape: http://{public_key}@YOUR_HOST/{project_id} (HTTPS in production).

Swap only dsn

Welcome FAQ: you can keep your Sentry SaaS init options. Quickstart: migrating from Sentry SaaS, keep the same init; replace only dsn. Do not rewrite integrations just to change host.

Zero sample rates

Set traces, profiles, and replay sample rates to 0. Those item types are discarded on Epure ingest (exception-only product). On Sentry JS v8+, set enableTracing: false when the option exists. CI fixtures for JS are @sentry/browser / @sentry/node 7.120.0; 8.x often works; confirm with Verify. Per-runtime pins: Next.js @sentry/nextjs@7.120.0, Go fixture-captured 0.28.0, Python pip install sentry-sdk unpinned.

Capture and Verify

Call Sentry.captureException(new Error("Epure verify test")) (or your runtime equivalent). Expect 202 Accepted plus { "id" }, then an unresolved Issues row. Match the environment chip to your SDK environment tag (local / production / all). Wrong project or env filter is the usual empty-Issues cause after a 202.

Verify success checks (Verify docs)

Ingest HTTP

Expected
202 Accepted

Body

Expected
{ "id": "<uuid>" }

Issues list

Expected
New unresolved issue for the exception type

Env chip

Expected
Matches Sentry.init environment
DimensionExpected
Ingest HTTP202 Accepted
Body{ "id": "<uuid>" }
Issues listNew unresolved issue for the exception type
Env chipMatches Sentry.init environment

What you lose

Epure is not 100% Sentry compatible. Session replay, APM tracing, and profiling are not Epure features. JS/TS demangle is available via source maps; other languages stay raw frames. Event / history import from Sentry SaaS is not a documented Epure path; do not invent export steps. Redis, Kafka, and ClickHouse are not default Epure services. Cloud is not live.

Who should use what

Cut over when exception Issues on your box with official SDKs is enough. Stay on Sentry Cloud when session replay or APM is the daily debug loop. For "which backends accept a DSN swap" read the sibling scoreboard; this post does not remake it.

Use this cutover if

  • You keep official Sentry SDKs and only need to change dsn to Epure.
  • You will Confirm with Verify (202 → env chip → Issues).
  • Exception-only is enough; replay/APM are not the daily loop.

Read something else if

Limitations

No history import claim. Not a GlitchTip migrate. Not a backends scoreboard remake. Not 100% compatible. Cloud is not live.

  • Epure is not 100% Sentry compatible.
  • Session replay, APM tracing, and profiling are not Epure features.
  • No documented event/history import path; omit inventing one.
  • Do not claim Sentry 8.x as CI-proven; fixtures are 7.120.0; confirm with Verify.
  • This post is not a GlitchTip migrate and not a remake of sentry-sdk-compatible.
  • Cloud is not live.

Deep links: Welcome | Quickstart | Verify | Installation | Platforms.

FAQ

Questions

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.
Do I import event history from Sentry?
No documented Epure path for SaaS event/history import. This cutover starts fresh Issues on your Epure project after the DSN swap.
What sample rates should I set?
Set traces, profiles, and replay sample rates to 0. On Sentry JS v8+, also set enableTracing: false when the option exists.
How do I confirm the cutover worked?
Capture a test exception, expect HTTP 202 plus { "id" }, then an unresolved Issues row. Match the environment chip to your SDK environment tag.
Who should stay on Sentry Cloud?
Teams whose daily debug loop needs session replay or APM tracing. Epure is exception-only on two Compose services.
Does Sentry JS 8.x work?
Often yes, though CI fixtures are 7.120.0. Keep sample rates at 0, set enableTracing: false when present, and confirm with Verify.
Is Epure 100% Sentry compatible?
No. Exception-only ingest; no replay/tracing/profiling as Epure features; not a drop-in for the full Sentry product surface.