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 pageShowHide
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.
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
| Dimension | GlitchTip | Epure |
|---|---|---|
| Compose | ≈4 (app, worker, Redis/Valkey, Postgres) | 2 (epure + postgres:16-alpine) |
| Stack | Django · Celery · Redis/Valkey · PG | Rust · PostgreSQL 16 |
| License | MIT | Apache 2.0 |
| SDK path | Sentry wire · swap DSN | Sentry wire · swap DSN |
| Scope | Errors (+ 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:
EPURE_PUBLIC_URL
- Value
- Public origin; production must be https://…
EPURE_CORS_ORIGINS
- Value
- App origins, comma-separated; not * in production
| Dimension | Value |
|---|---|
| EPURE_PUBLIC_URL | Public origin; production must be https://… |
| EPURE_CORS_ORIGINS | App 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.
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
| Dimension | Expected |
|---|---|
| Ingest HTTP | 202 Accepted |
| Body | { "id": "<uuid>" } |
| Issues list | New unresolved issue for the exception type |
| Env chip | Matches 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.
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
| Dimension | Stay on GlitchTip | Move to Epure |
|---|---|---|
| License | MIT required by counsel | Apache 2.0 is acceptable |
| Ops model | Django + Celery + Redis/Valkey is home | Want Rust + Postgres only; refuse Redis in the error stack |
| Maturity | Need the longer production track record | Accept first public-cut edges for a lighter compose |
| Product extras | Uptime / logs extras are in the daily loop | Exception-only Issues are enough |
| Managed host | Need 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
- MIT, Django ops, or maturity wins: stay on GlitchTip (Epure vs GlitchTip).
- You are leaving Sentry SaaS/flotilla, not GlitchTip: Migrate Sentry to Epure.
- You need the compat scoreboard: Sentry SDK compatible.
- You need host shape only: Two-container error tracking.
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.