Deployment guide

Migrate your Sentry projects to GlitchTip in under an hour

Deploy on a VPS Cloud →

Development9 min read

Migrate your Sentry projects to GlitchTip in under an hour

Since version 26.4.1, three major regressions have accumulated in Sentry self-hosted: a deadlock on the monitor_consumer that stops cron ingestion organization-wide, Snuba consumers spamming logs in an infinite loop with no official fix, and seaweedfs-1 and web-1 containers reported as unhealthy on startup in version 26.4.2. Faced with these instabilities without a guaranteed resolution timeline, GlitchTip v6 — compatible with the Sentry SDK protocol — offers a clean exit: change one environment variable per project, and ingestion resumes immediately.

The Sentry 26.4.x regressions driving migration

In August 2026, three issues accumulated enough reports in the getsentry/self-hosted repository to form a clear migration signal. Issue #4301 documents a deadlock of the Kafka consumer ingest-monitors after upgrading to 26.4.1: the consumer group stays joined but CURRENT-OFFSET stops advancing. The direct consequence is that all cron monitors flip to error with missed backfill, and the Crons feature becomes inoperable organization-wide. The problem only manifests on instances with accumulated data (more than 1.2 million rows in sentry_monitorcheckin); restarting containers provides only a few minutes of relief. Issue #4306 reports that all Snuba consumers repeatedly print the error 'Failed to read directory /etc/sentry-options/values: No such file or directory' in an infinite loop — closed without an official fix with the status 'not planned'. Issue #4321 concerns version 26.4.2: seaweedfs-1 and web-1 containers are reported as unhealthy at startup on x86_64 installations, making Sentry impossible to start reliably. These three regressions combined form a solid argument for exiting the Sentry self-hosted update cycle, at least temporarily.

What GlitchTip v6 offers as an alternative

  • Wire-protocol SDK compatibility — GlitchTip implements the same ingestion protocol as Sentry. The DSN has the same form (https://<key>@your-domain.com/<project-id>), and @sentry/browser, Python sentry-sdk, sentry-rails for Ruby, or sentry-go all work without any code change.
  • AGPL-3.0 licence, open source — GlitchTip v6 (released on 3 February 2026) is maintained by an independent team, funded by users. No dual licensing, no proprietary components.
  • Reduced Docker footprint — v6 replaces Celery with django-vtasks, Uvicorn/Gunicorn with Granian (a Rust-based HTTP server), and offers a stable all-in-one mode for modest instances.
  • UUIDv7 and improved partitioning — v6 revised primary key management (UUIDv7) and table partitioning for faster queries on large event volumes.
  • Logs and tracing support (v6.1) — Version 6.1, released on 23 March 2026, adds log ingestion via sentry-sdk and optional cold storage with DuckDB, extending GlitchTip beyond error tracking alone.
  • Cost reduced to infrastructure only — A 2 GB RAM VPS is sufficient for moderate loads. Unlike the Sentry Team plan ({{sentry.team.price}}/month for 50,000 errors), only the server cost applies.
  • Reversible DSN swap — If you need to go back to Sentry, another variable swap is all it takes. No code dependency is introduced by the migration.

Prerequisites before starting the migration

This guide assumes GlitchTip is already deployed and running on your VPS. If not, the article 'Self-hosting GlitchTip v6 on a VPS with Docker Compose' covers the installation from scratch — read it first. For the migration itself, you need three concrete things: admin access to your Sentry self-hosted instance (to read existing DSNs and export alert configurations), admin access to your GlitchTip instance (to create equivalent projects and retrieve new DSNs), and the list of environment variables or configuration files for each application that contains the SENTRY_DSN value or equivalent. The migration is done project by project. If you have five Sentry projects, you will create five GlitchTip projects and swap five variables. Budget around ten minutes per project the first time; subsequent ones take two to three minutes each.

Migration procedure — from the first project to cutting Sentry

01

Inventory your Sentry projects and their DSNs.

In the Sentry interface, go to Settings > Projects. For each project, note the name, platform (Python, JavaScript, PHP, etc.) and full DSN (Settings > Client Keys). Also export your alert rules (Alerts > Rules): conditions and recipients will need to be recreated manually in GlitchTip, as there is no automatic import.

02

Create the equivalent projects in GlitchTip.

In the GlitchTip interface, go to your organization, then Projects > New Project. Choose the corresponding platform. The name does not need to match the one in Sentry. Once the project is created, GlitchTip immediately shows the project DSN in the form https://<public-key>@your-domain.com/<numeric-id>.

03

Copy and record the new GlitchTip DSN.

From the GlitchTip project page: Settings > Client Keys > DSN. Copy the full value. This is the only information you need for the swap.

04

Reconfigure alerts in GlitchTip.

Before switching traffic, recreate in GlitchTip the alert rules you used in Sentry: error thresholds, email or webhook notifications, frequency. GlitchTip supports inbound webhooks, covering the majority of integrations (Slack, PagerDuty, etc.).

05

Swap the DSN in your application.

Replace the value of the SENTRY_DSN variable (or the dsn parameter in the SDK initialisation) with the new GlitchTip DSN. Redeploy or restart the application process. No other line of code changes.

06

Verify event reception in GlitchTip.

Manually trigger a test error (call Sentry.captureException(new Error('test')) or equivalent). In GlitchTip, the event should appear in the project Issues within seconds. If not, consult the troubleshooting section below.

07

Repeat for each project.

Once the first project is validated, go through steps 1 to 6 for each Sentry project. Keep Sentry running during the transition period — past history remains accessible as long as the instance is running.

08

Cut Sentry once the validation period is over.

After two weeks of nominal operation in GlitchTip (see the tip below), stop the Sentry containers (docker compose down). History remains accessible if you bring the instance back up temporarily, but new errors will no longer flow there.

SDK compatibility — supported frameworks and languages

GlitchTip does not reimplement the SDKs: it consumes the same wire protocol as Sentry, which means any official Sentry SDK works without modification. The most common languages and frameworks are natively covered. In Python, sentry-sdk integrates with Django, Flask, FastAPI and Celery. In JavaScript and TypeScript, @sentry/browser, @sentry/node, @sentry/nextjs and @sentry/vue work directly. In Ruby, sentry-rails and sentry-ruby are supported. Go has getsentry/sentry-go. PHP can use sentry/sentry-laravel or sentry/sentry-symfony. Java and Android have their official SDKs. The only option to disable in some SDKs is auto_session_tracking — GlitchTip does not support real-time session tracking, but this does not affect error reporting. The traces_sample_rate parameter for performance tracing is supported from GlitchTip v6.1 with DuckDB enabled.

Keep Sentry running in parallel during the validation period

Even if the 26.4.x regressions make Sentry unreliable, do not shut down the instance immediately after the first swap. Leave both systems running in parallel for one to two weeks: Sentry to consult past history, GlitchTip to receive new errors. This gives you time to verify that GlitchTip alerts fire correctly, that error grouping meets your expectations, and that webhook integrations work. Once the validation period is over with no regressions observed, you can stop Sentry with confidence. Important note: past events do not transfer from Sentry to GlitchTip. There is no history import tool — and this is intentional, as the internal formats differ. The goal of this migration is not to preserve six months of logs, but to restore functional ingestion today.

Troubleshooting — the three most common issues after the swap

Events do not arrive in GlitchTip. First check that the DSN is syntactically correct: the expected form is https://<key>@your-domain.com/<id>. If your GlitchTip instance is behind a reverse proxy, make sure the X-Forwarded-For and X-Forwarded-Proto headers are forwarded — a misconfigured proxy can return silent 400 or 413 errors on the application side. Check the GlitchTip container logs (docker compose logs web) to confirm reception. The DSN is rejected with a 401 or 403 error. Most often, the public key in the DSN does not match the target GlitchTip project. Each project has its own key — verify that you copied the DSN from the correct project. If the error persists, check that the organisation and project exist and that the account used has write permissions. Error grouping does not look like Sentry. GlitchTip uses its own fingerprinting algorithm. Errors of the same type will be grouped, but the correspondence with Sentry groups is not guaranteed — especially for exceptions with dynamic stacktraces. This is expected behaviour, not a bug. If you have custom fingerprinting rules in Sentry, recreate them in GlitchTip via the project 'Fingerprinting' option.

Sentry cloud vs GlitchTip self-hosted — what really changes

Sentry Team (cloud)GlitchTip self-hosted
Base cost{{sentry.team.price}}/month (annual) — 50,000 errors includedVPS cost only — 99 DH/month/month
Error limitStrict quota, overage billedNo quota — limited by VPS storage
SDK compatibilityNative Sentry protocolSame wire protocol — no code change required
History importN/ANot available — past events remain in Sentry
Alerts and integrationsFull interface, native Slack, PagerDuty, JiraInbound webhooks, email — covers common cases
MaintenanceManaged by Sentry (auto updates)Your responsibility — `docker compose pull && docker compose up -d`
LicenceProprietary (BSL 1.1 for cloud)AGPL-3.0 — auditable source code

Start from scratch with GlitchTip on a ServOrbit VPS

If you do not yet have a GlitchTip instance in production and want to leave Sentry self-hosted without switching to another complex tool, a 2 GB RAM VPS is enough to run GlitchTip v6 in all-in-one configuration. The complete installation — Docker Compose, nginx as reverse proxy, TLS certificate, environment variables — is documented in the dedicated article 'Self-hosting GlitchTip v6 on a VPS with Docker Compose'. Once the instance is ready, the migration from Sentry follows the procedure described in this article: create projects, retrieve DSNs, swap variables. The total time from VPS creation to receiving the first event in GlitchTip is generally under one hour, including installation and migrating two to three projects. For teams monitoring multiple production applications, this is a realistic migration window — with no service interruption on the application side, since the only visible step is a process restart after the variable change.

Deploy GlitchTip on a ServOrbit VPS

A 2 GB RAM VPS is enough to host GlitchTip v6 and receive errors from all your projects. No event quota, no monthly per-feature subscription.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab