Epure
Guides

Migrate from GlitchTip to Epure (DSN + Verify)

migrate from GlitchTip to Epure

Keep your Sentry SDK; point the DSN at Epure; Confirm with Verify. Stay on GlitchTip when MIT, Django ops, or maturity wins.

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

Keep your official Sentry SDK init that already pointed at GlitchTip, replace only dsn with your Epure host, and set traces, profiles, and replay sample rates to 0. Bring the two-container host up, create a project DSN, Confirm with Verify (202 then env chip then Issues). Stay on GlitchTip when MIT, Django ops, or maturity wins. No history import.

You already ship official Sentry SDKs against a GlitchTip host and want exception Issues on a two-container Epure stack (Rust binary + PostgreSQL 16) without rewriting integrations. Staying on GlitchTip for MIT, Django ops familiarity, maturity, or extras such as uptime/logs is the honest alternative when those win. This is a peer cutover checklist, not a remake of Epure vs GlitchTip and not another DSN scoreboard.

Unique wedge: same official Sentry SDK DSN swap as the Sentry SaaS migrate path (Migrate Sentry to Epure), plus GlitchTip peer context (compose ≈4 vs Epure 2; MIT vs Apache 2.0; who-should-stay). Bias disclosed: Epure first-party docs; GlitchTip install extras labeled third-party. Distinct from Sentry SDK compatible (matrix) and from /vs/glitchtip (marketing page).

Primary how-to: Quickstart, Verify. Host: Installation. Browser CORS: Configuration. Scope: Welcome. Runtime pins: Platforms. Peer page: Epure vs GlitchTip. Sibling cutover: Migrate Sentry to Epure.

Peer context

GlitchTip and Epure both keep the official Sentry SDK wire: change the DSN host, keep the client. The stacks differ. As summarized on Epure vs GlitchTip (last reviewed Sep 18, 2026 on that page): GlitchTip typically runs ≈4 Compose services (app, worker, Redis/Valkey, Postgres) on a Django + Celery stack under MIT; Epure runs 2 containers (Rust binary + PostgreSQL 16) under Apache 2.0 with no Redis or Kafka defaults.

Peer footprint (first-party /vs/glitchtip; not a full /vs remake)

Compose

GlitchTip
≈4 (app, worker, Redis/Valkey, Postgres)
Epure
2 (epure + postgres:16-alpine)

Stack

GlitchTip
Django · Celery · Redis/Valkey · PG
Epure
Rust · PostgreSQL 16

License

GlitchTip
MIT
Epure
Apache 2.0

SDK path

GlitchTip
Sentry wire · swap DSN
Epure
Sentry wire · swap DSN

Scope

GlitchTip
Errors (+ extras)
Epure
Exception-only
DimensionGlitchTipEpure
Compose≈4 (app, worker, Redis/Valkey, Postgres)2 (epure + postgres:16-alpine)
StackDjango · Celery · Redis/Valkey · PGRust · PostgreSQL 16
LicenseMITApache 2.0
SDK pathSentry wire · swap DSNSentry wire · swap DSN
ScopeErrors (+ extras)Exception-only

Competitor footprint from public docs via /vs/glitchtip. Maturity favors GlitchTip today. Third-party GlitchTip install notes Valkey optional and extras such as uptime/logs; label those third-party.

Host up /health

Bring the Epure host up as two Compose services, then wait until health is ok. Laptop path from Installation / Quickstart:

git clone https://github.com/epure-sh/epure.git && cd epure && docker compose up

Health: curl -sS http://localhost:8080/health → {"status":"ok"}. Dashboard at http://localhost:8080. If 8080 is taken: cp .env.example .env, set EPURE_PORT, recreate epure. Production overlay (HTTPS, fresh volume, no laptop passwords): Installation § Production, or the sibling Cheap VPS install.

Project and DSN

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

Swap only dsn

In the app init that already pointed at GlitchTip, replace only dsn (host and project path). Keep integrations and the rest of Sentry.init. Same move as the Quickstart Sentry SaaS one-liner: keep the same init; replace only dsn. Welcome FAQ: replace dsn and leave the rest. Do not rewrite instrumentation 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; Welcome). 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. Other runtimes: Platforms.

Pinned shape (Quickstart): Sentry.init({ dsn: "http://YOUR_PUBLIC_KEY@YOUR_EPURE_HOST/YOUR_PROJECT_ID", environment: "local", release: "my-app@0.0.0", tracesSampleRate: 0, profilesSampleRate: 0, replaysSessionSampleRate: 0, replaysOnErrorSampleRate: 0 }).

CORS and PUBLIC_URL

Browser SDK clients need ingest CORS and a public origin that matches how users reach the dashboard. From Configuration and Installation production env:

Browser / public URL vars (Configuration + Installation)

EPURE_PUBLIC_URL

Value
Public origin; production must be https://…

EPURE_CORS_ORIGINS

Value
App origins, comma-separated; not * in production
DimensionValue
EPURE_PUBLIC_URLPublic origin; production must be https://…
EPURE_CORS_ORIGINSApp origins, comma-separated; not * in production

Localhost can follow EPURE_PORT automatically. After .env changes, recreate the epure container. CORS failures: Verify failure table + Configuration FAQ.

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. Full bisect: Verify.

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 protocol compatible, and it is not a drop-in for every GlitchTip product surface. Session replay, APM tracing, and profiling are not Epure features. Event / history import from GlitchTip is not a documented Epure path; do not invent export steps. Redis and Kafka are not default Epure services. Epure Cloud is not live.

GlitchTip extras (third-party install docs): uptime monitoring and OTLP logs UI can be enabled there. Epure does not replace those products. If you depend on them daily, stay on GlitchTip or keep a separate uptime/logs stack.

Who should use what

Disclose: this box is first-party Epure guidance (peer facts also published on Epure vs GlitchTip), not a neutral analyst report.

Stay GlitchTip vs move Epure (disclosed first-party bias)

License

Stay on GlitchTip
MIT required by counsel
Move to Epure
Apache 2.0 is acceptable

Ops model

Stay on GlitchTip
Django + Celery + Redis/Valkey is home
Move to Epure
Want Rust + Postgres only; refuse Redis in the error stack

Maturity

Stay on GlitchTip
Need the longer production track record
Move to Epure
Accept first public-cut edges for a lighter compose

Product extras

Stay on GlitchTip
Uptime / logs extras are in the daily loop
Move to Epure
Exception-only Issues are enough

Managed host

Stay on GlitchTip
Need Cloud this week (Epure Cloud not live)
Move to Epure
Self-host now; Cloud prices exist later
DimensionStay on GlitchTipMove to Epure
LicenseMIT required by counselApache 2.0 is acceptable
Ops modelDjango + Celery + Redis/Valkey is homeWant Rust + Postgres only; refuse Redis in the error stack
MaturityNeed the longer production track recordAccept first public-cut edges for a lighter compose
Product extrasUptime / logs extras are in the daily loopException-only Issues are enough
Managed hostNeed Cloud this week (Epure Cloud not live)Self-host now; Cloud prices exist later

Use this cutover if

  • You already point official Sentry SDKs at GlitchTip and only need to change dsn to Epure.
  • Two Compose services (Rust + PostgreSQL 16) beat ≈4 for your ops brief.
  • You will Confirm with Verify (202 → env chip → Issues).
  • Exception-only is enough; GlitchTip uptime/logs extras are not the daily loop.

Stay or read elsewhere if

Limitations

No history import claim. Not a remake of /vs/glitchtip or sentry-sdk-compatible. Not a Sentry SaaS migrate remake (that sibling exists). Not 100% compatible. Cloud is not live.

  • Epure is not 100% Sentry compatible.
  • Session replay, APM tracing, and profiling are not Epure features.
  • Epure does not replace GlitchTip uptime monitoring or OTLP logs extras (third-party GlitchTip features).
  • No documented GlitchTip→Epure 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 clone of /vs/glitchtip and not a remake of sentry-sdk-compatible.
  • Cloud is not live.

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

FAQ

Questions

Can I keep the same Sentry SDK init I used with GlitchTip?
Yes. Replace dsn (host and project path) and leave the rest of Sentry.init, including integrations. Set sample rates for traces, profiles, and replay to 0, since those item types are discarded on Epure ingest. Confirm a throw with Verify.
Do I import GlitchTip event history into Epure?
No documented Epure path for GlitchTip event or history import. This cutover starts fresh Issues on your Epure project after the DSN swap. Do not invent export or SQL migration steps.
When should I stay on GlitchTip?
Stay when MIT is required, Django plus Celery plus Redis/Valkey ops are already familiar, you need the longer production track record, or you rely on GlitchTip extras such as uptime or logs that Epure does not ship. Prefer GlitchTip Cloud today if you need a managed host this week; Epure Cloud is not live.
How do compose footprints compare?
GlitchTip typically runs about four Compose services (app, worker, Redis/Valkey, Postgres). Epure runs two: the Rust binary and PostgreSQL 16, with no Redis or Kafka defaults. Peer summary: Epure vs GlitchTip.
What about CORS for browser SDKs?
List real frontend origins in EPURE_CORS_ORIGINS (comma-separated; not * in production) and set EPURE_PUBLIC_URL to the public origin (https in production). Recreate the epure container after .env changes. See Configuration and the Verify CORS row.
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. Full table: Verify.
Is Epure 100% Sentry or GlitchTip compatible?
No. Exception-only ingest; no replay/tracing/profiling as Epure features; Epure does not claim full GlitchTip feature parity (uptime/logs extras stay on GlitchTip or elsewhere).
Is this the same as the Sentry SaaS migrate guide?
Same DSN-swap mechanics; different peer. Migrate Sentry to Epure covers SaaS or large Sentry self-host flotilla cutover. This post leads with GlitchTip peer context and who-should-stay honesty.