---
title: "Deploy GoAlert"
description: "On-call scheduling and escalations — self-hosted PagerDuty alternative"
category: "Observability"
url: https://railway.com/deploy/goalert
---

# Deploy GoAlert

On-call scheduling and escalations — self-hosted PagerDuty alternative

**[Deploy GoAlert on Railway](https://railway.com/template/goalert)**

- **Creator:** Two Workspaces
- **Category:** Observability
- **Total deploys:** 2

## Template content

### goalert https://raw.githubusercontent.com/target/goalert/master/web/src/app/public/icons/favicon-192.png

- **Source:** https://github.com/nomideusz/goalert-railway
- **Health check:** /health
- **Public domain:** Yes

### postgres https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:17

## Documentation

# Deploy and Host GoAlert on Railway

[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/new/template/goalert?utm_medium=integration&utm_source=button&utm_campaign=goalert)

[GoAlert](https://goalert.me/) is open-source on-call scheduling, automated escalations, and notifications — built and battle-tested by Target. Rotations, escalation policies, and alerts that reach the right person by SMS, voice call, Slack, email, or web push, so you never miss a critical page. A self-hosted alternative to PagerDuty and the sunsetting Opsgenie, with no per-user pricing.

## About Hosting GoAlert

This template runs GoAlert as a single service next to a Postgres database — that's the whole stack. All state (schedules, policies, alerts, users) lives in Postgres, so the app service needs no volume and restarts cleanly. Database migrations run automatically on every deploy, and your first admin account is created from the `ADMIN_USERNAME` / `ADMIN_PASSWORD` template variables on first boot. Alert data is encrypted at rest with the generated `GOALERT_DATA_ENCRYPTION_KEY`.

## Common Use Cases

- On-call rotations and escalation chains for an engineering team — without PagerDuty's per-user bill
- A landing spot for Opsgenie migrations before Atlassian's end-of-support deadline
- Alert routing for existing monitoring (Prometheus Alertmanager, Grafana, Zabbix, healthchecks) via GoAlert's integration keys and email ingestion

## Dependencies for GoAlert Hosting

- PostgreSQL (included in this template — GoAlert enables the `pgcrypto` extension itself)

### Deployment Dependencies

- [GoAlert documentation](https://goalert.me/docs/)
- [Template source on GitHub](https://github.com/nomideusz/goalert-railway)

### Implementation Details

**Your GoAlert lives at the service's Railway domain.** Sign in with the `ADMIN_USERNAME` / `ADMIN_PASSWORD` values from your template variables.

To actually page people, connect notification channels in the admin UI (Admin → Config):

1. **SMS and voice calls** — add Twilio credentials (Account SID, auth token, a Twilio number). This is the classic pager experience; a $10/month Twilio number covers a small team.
2. **Slack** — create a Slack app with the manifest GoAlert generates for you and paste the tokens.
3. **Email** — add SMTP credentials to send alert emails.

Notes:

- Migrations run automatically; upgrading is just a redeploy.
- The admin bootstrap is idempotent — the "duplicate key" log line on later boots is expected and harmless.
- `GOALERT_PUBLIC_URL` is derived from your Railway domain automatically; set it manually if you put GoAlert behind your own domain.

## Why Deploy GoAlert 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 GoAlert 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/goalert
