Skip to content
Greffon
Tutorial

Self-Host GlitchTip with Greffon

Error tracking sees every stack trace and request your apps throw. That is a lot of trust to hand a vendor. Here is the honest setup for GlitchTip on a greffer you own.

GLGreffon Labs5 min read
~/blog/self-host-glitchtip

Error tracking is one of the most revealing things you can run. The stack traces, request payloads, and breadcrumbs it captures can carry user emails, tokens, and the shape of your whole system. Sending all of that to a vendor is a real decision, not a default. GlitchTip is a Sentry-compatible error tracker you can host yourself, so the events stay on a machine you own, and Greffon takes the fiddly parts off your plate.

Why own your error tracking

GlitchTip speaks the Sentry API and works with the official Sentry SDKs, so the client libraries you already use in Python, JavaScript, Go, and the rest point at it unchanged. It is a leaner reimplementation rather than the full Sentry stack, which is the point: it covers error and performance events without the operational weight of running Sentry itself, so it fits on a modest greffer.

Hosting it yourself changes where the data lives, not how you use it. The events your apps capture land in your own database instead of a vendor account, which matters most when those events carry anything you would not want to ship off-site.

Graft it from the catalog

On a greffer you do not hand-write a compose file or wire a reverse proxy. Pick GlitchTip from the catalog and graft it onto your greffer. Greffon generates the Django secret key, issues the certificate, and routes the app, so it comes up reachable over HTTPS without you assembling that plumbing by hand. You set an admin email and password at graft time, and that account is seeded on first start so you can log straight in.

The domain has to match what the browser uses
GlitchTip pins its expected domain and CSRF origins to the URL it is served on. Greffon fills that in from the instance URL when you graft it, so the value is correct from the first start. If you later move the greffon behind a different hostname, update that domain so logins and the SDK ingest endpoint keep matching.

Point your SDKs at it

Once GlitchTip is up, create a project in its web UI and it hands you a DSN: the URL your Sentry SDK sends events to. Drop that DSN into your app's Sentry config in place of the hosted one and your errors start flowing to your greffer instead. Nothing else about your instrumentation changes.

Because the SDKs send events over HTTPS, the same access story applies as for any web app. On the same network as your greffer it works the moment it starts. To ingest events from apps running elsewhere, you have two honest options: tunnel mode, where the greffer connects outbound and serves over HTTPS with no inbound ports opened (the answer for a box behind NAT or CGNAT), or exposing the greffer directly with port forwarding and DNS. GlitchTip is HTTP only, so the tunnel carries it without caveats.

Wire up alert email

Error tracking that cannot reach you is just a log file. GlitchTip sends alert notifications by email, and that needs an SMTP relay. The catalog entry exposes an SMTP setting and a default sender address, so point it at a provider you already have (or your own mail relay) and set the from address to something your provider will accept.

Without SMTP, alerts go nowhere
GlitchTip will happily collect events with no mail configured, but it cannot tell you about them. If you are relying on it to catch production errors, set SMTP up before you depend on it, and trigger a test alert to confirm the mail actually lands.

Memory and storage

GlitchTip is leaner than full Sentry, but it is still a Django web app with a background worker, a Postgres database, and Redis behind it. That is heavier than a single static container, so give it real headroom: a greffer with a fraction of a gigabyte of free memory will struggle, and a couple of gigabytes is a more comfortable floor once events start arriving.

Storage grows with the events you keep. A noisy app under a tight quota can fill a small disk faster than you expect, so set event retention to something sane for your volume rather than keeping everything forever, and keep an eye on disk on a small box.

Back it up

The history that makes error tracking useful (which errors are new, which are regressions, how often they fire) lives in the database. Greffon handles TLS and routing today, and native one-click backups are coming in M2. Until then, bring your own backup tool (restic or borgbackup are the usual choices), back up the GlitchTip data and database on a schedule, and store a copy off the greffer. If you only care about live alerting and not history, the cost of losing it is lower, but decide that on purpose rather than by accident.

Keep it always-on

Error tracking is only worth running if it is up when your apps break, which is exactly when you are not watching. Run it on an always-on greffer, a small VPS, or a mini-PC rather than a laptop that sleeps. If you need somewhere to start, a free Oracle Cloud box gives you a greffer with enough memory to host GlitchTip comfortably.

FAQ

Is GlitchTip the same as Sentry?
No. GlitchTip is a separate, lighter project that implements the Sentry API. The official Sentry SDKs send events to it unchanged, so day to day it feels similar for error tracking while using far fewer resources than running Sentry itself.
Do I have to change my application code?
Only the DSN. Create a project in GlitchTip, copy the DSN it gives you, and use it in your existing Sentry SDK config in place of the hosted one. Your instrumentation stays the same.
Can apps on other networks send errors to it?
Yes. GlitchTip ingests over HTTPS, so a greffer in tunnel mode serves it with no inbound ports opened, which covers a box behind NAT or CGNAT. You can also expose the greffer directly with port forwarding and DNS.
How much memory does it need?
More than a static app. It runs a Django web process, a background worker, Postgres, and Redis, so plan for a couple of gigabytes of free memory as a comfortable floor rather than running it on the smallest box you have.
Why am I not getting alert emails?
Almost always because SMTP is not configured. GlitchTip collects events without mail, but it cannot notify you. Set the SMTP relay and sender address in the greffon's config and send a test alert to confirm delivery.
GL
Greffon Labs
We build Greffon, the simplest way to turn any machine into a server you own.

Ready to turn on your greffer?

Install in minutes. Deploy each app in seconds. Your server, your apps.

Read the docs