---
title: "Deploy Sentry (Errors Only Mode)"
description: "Deploy and Host Sentry (Errors Only Mode) with Railway"
category: "Observability"
url: https://railway.com/deploy/sentry-errors-only-mode
---

# Deploy Sentry (Errors Only Mode)

Deploy and Host Sentry (Errors Only Mode) with Railway

**[Deploy Sentry (Errors Only Mode) on Railway](https://railway.com/template/sentry-errors-only-mode)**

- **Creator:** Jonas Atienza's Projects
- **Category:** Observability
- **Total deploys:** 2

## Template content

### web https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway/entrypoint.sh run web`

### symbolicator https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway

### snuba-subscription-consumer-eap-items https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway-entrypoint.sh subscriptions-scheduler-executor --dataset events_analytics_platform --entity eap_items --auto-offset-reset=latest --no-strict-offset-reset --consumer-group=snuba-eap-items-subscriptions-consumers --followed-consumer-group=eap_items_group --schedule-ttl=60 --stale-threshold-seconds=900`

### kafka https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/kafka.svg

- **Image:** confluentinc/cp-kafka:7.6.6

### clickhouse https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/clickhouse.svg

- **Source:** https://github.com/jratienza65/sentry-railway

### snuba-outcomes-billing-consumer https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway-entrypoint.sh rust-consumer --storage outcomes_raw --consumer-group snuba-consumers --auto-offset-reset=earliest --max-batch-time-ms 750 --no-strict-offset-reset --raw-events-topic outcomes-billing`

### snuba-outcomes-consumer https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway-entrypoint.sh rust-consumer --storage outcomes_raw --consumer-group snuba-consumers --auto-offset-reset=earliest --max-batch-time-ms 750 --no-strict-offset-reset`

### attachments-consumer https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway/entrypoint.sh run consumer ingest-attachments --consumer-group ingest-consumer`

### post-process-forwarder-errors https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway/entrypoint.sh run consumer --no-strict-offset-reset post-process-forwarder-errors --consumer-group post-process-forwarder --synchronize-commit-log-topic=snuba-commit-log --synchronize-commit-group=snuba-consumers`

### relay https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway

### snuba-api https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway-entrypoint.sh bootstrap-then-api`

### taskscheduler https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway/entrypoint.sh run taskworker-scheduler`

### snuba-errors-consumer https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway-entrypoint.sh rust-consumer --storage errors --consumer-group snuba-consumers --auto-offset-reset=latest --max-batch-time-ms 750 --no-strict-offset-reset`

### postgres https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/postgresql.svg

- **Image:** postgres:14.23-bookworm

### memcached https://cdn.jsdelivr.net/gh/selfhst/icons/svg/memcached.svg

- **Image:** memcached:1.6.45-alpine
- **Start command:** `memcached -I 1M`

### nginx https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/nginx.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Health check:** /healthz
- **Public domain:** Yes

### taskworker https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway/entrypoint.sh run taskworker --concurrency=4 --rpc-host=taskbroker.railway.internal:50051 --max-child-task-count=10000`

### events-consumer https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway/entrypoint.sh run consumer ingest-events --consumer-group ingest-consumer`

### taskbroker https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway

### redis https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/redis.svg

- **Image:** redis:6.2.20-alpine
- **Start command:** `/bin/sh -c "rm -rf /data/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --maxmemory 0 --maxmemory-policy volatile-lru --save 60 1 --dir /data"`

### snuba-replacer https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway-entrypoint.sh replacer --storage errors --auto-offset-reset=latest --no-strict-offset-reset`

### snuba-subscription-consumer-events https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway-entrypoint.sh subscriptions-scheduler-executor --dataset events --entity events --auto-offset-reset=latest --no-strict-offset-reset --consumer-group=snuba-events-subscriptions-consumers --followed-consumer-group=snuba-consumers --schedule-ttl=60 --stale-threshold-seconds=900`

### snuba-group-attributes-consumer https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sentry.svg

- **Source:** https://github.com/jratienza65/sentry-railway
- **Start command:** `/railway-entrypoint.sh rust-consumer --storage group_attributes --consumer-group snuba-group-attributes-consumers --auto-offset-reset=latest --max-batch-time-ms 750 --no-strict-offset-reset`

## Buckets

- **s3**

## Documentation

# Deploy and Host Sentry (Errors Only Mode) on Railway

Sentry is the industry-standard error tracking platform. This template deploys **real self-hosted Sentry** — the same stack as [getsentry/self-hosted](https://github.com/getsentry/self-hosted) in its errors-only profile — with issues, grouping, metric alerts, and stack-trace symbolication, at the bleeding edge (`nightly`) or pinned to any upstream release.

## About Hosting Sentry (Errors Only Mode)

Self-hosted Sentry is a genuinely heavy, multi-service system: Postgres, Redis, Kafka, ClickHouse, and Memcached feed Sentry's web UI, Relay ingestion gateway, Snuba query engine, Symbolicator, and a fleet of stream consumers. This template runs the complete upstream errors-only profile as 23 cooperating Railway services on the private network, with one public nginx entrypoint carrying upstream's exact routing (your DSNs and UI share one domain). Deployment is one-click — no required inputs: the admin login defaults to `admin@example.com` with a generated password (both editable on the `web` service). First boot is zero-touch: secrets are generated per deployment, Relay credentials persist to a volume, object storage lives in a Railway bucket with retention lifecycle, and database migrations plus Kafka topics bootstrap automatically. Expect 10–14 GB resident RAM — this is the genuine article, not a lookalike.

## Common Use Cases

- Keep exceptions, stack traces, and user context inside infrastructure you control — for compliance, data residency, or simply avoiding per-event SaaS pricing at volume
- Full-fidelity error monitoring with working metric alerts, issue grouping, and native/JS symbolication for teams already using Sentry SDKs (change nothing but the DSN)
- Track upstream Sentry releases on your own schedule — run `nightly` to live at master, or pin a release tag and upgrade by changing one variable

## Dependencies for Sentry (Errors Only Mode) Hosting

- Sentry's official container images (`ghcr.io/getsentry/*` — sentry, snuba, relay, symbolicator, taskbroker) at the version you select
- An external SMTP provider if you want email notifications (Railway has no in-platform email; with SMTP unset, email is cleanly disabled)

### Deployment Dependencies

- [Official self-hosted Sentry guide](https://develop.sentry.dev/self-hosted/) — the upstream deployment this template mirrors
- [getsentry/self-hosted](https://github.com/getsentry/self-hosted) — upstream source of the service topology and configuration
- [Template source repository](https://github.com/jratienza65/sentry-railway) — wrapper Dockerfiles and rendered configuration
- [Sentry SDK documentation](https://docs.sentry.io/) — point any SDK at a DSN from your deployment's domain

### Implementation Details

The version knob is one variable — `SENTRY_VERSION` on the `nginx` service, referenced by every other service:

```
SENTRY_VERSION=nightly   # track upstream master
SENTRY_VERSION=26.7.2    # pin an upstream release
```

Each service is a thin Dockerfile wrapper: `FROM ghcr.io/getsentry/<img>:${SENTRY_VERSION}`, plus the upstream configuration fetched **at the matching ref** and rendered from environment variables at boot — configs always match the images, with no forked files to rot. Changing the variable and redeploying upgrades the whole stack; `sentry upgrade` and `snuba bootstrap` run migrations idempotently on start, exactly as upstream recommends. Event payloads, uploads, and profiles live in the template's Railway bucket under separate key prefixes, with retention enforced by a native lifecycle rule tied to `SENTRY_EVENT_RETENTION_DAYS`.

## Why Deploy Sentry (Errors Only Mode) on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Sentry (Errors Only Mode) on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Pyroscope profiling](https://railway.com/deploy/pyroscope-profiling) — Protected continuous profiling with durable Pyroscope storage.
- [SigOnly](https://railway.com/deploy/sigonly) — Deploy SigNoz with a working demo app & config in one click
- [Unwrapped Spotify Music Stats](https://railway.com/deploy/wide-bold) — Unwrapped Spotify Music Stats, Estatísticas de músicas disponíveis

Open this page in a browser: https://railway.com/deploy/sentry-errors-only-mode
