---
title: "Deploy Gorush"
description: "Gorush 1.22: push notification server for FCM and APNs, private network."
category: "Other"
url: https://railway.com/deploy/gorush
---

# Deploy Gorush

Gorush 1.22: push notification server for FCM and APNs, private network.

**[Deploy Gorush on Railway](https://railway.com/template/gorush)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/gorush/manifest.json

- **Creator:** Agaz Self-Host
- **Category:** Other

## Template content

### gorush https://github.com/appleboy.png

- **Image:** appleboy/gorush:1.22.0
- **Start command:** `sh -c 'if [ -n "$GORUSH_ANDROID_CREDENTIAL" ]; then export GORUSH_ANDROID_ENABLED=true; else export GORUSH_ANDROID_ENABLED=false; fi; if [ -n "$GORUSH_IOS_KEY_BASE64" ]; then export GORUSH_IOS_ENABLED=true; else export GORUSH_IOS_ENABLED=false; fi; if [ "$GORUSH_ANDROID_ENABLED$GORUSH_IOS_ENABLED" = falsefalse ]; then echo "Gorush needs GORUSH_ANDROID_CREDENTIAL (FCM service account JSON) or GORUSH_IOS_KEY_BASE64 (APNs key, base64)"; sleep 60; exit 1; fi; exec /bin/gorush'`
- **Health check:** /healthz

## Documentation

# Deploy and Host Gorush on Railway

Gorush is a push notification server written in Go. Your backend sends one HTTP request, and Gorush delivers the message to Android devices through Firebase Cloud Messaging and to Apple devices through APNs. It handles batching, retries and per-token errors, so applications do not need to embed each vendor SDK.

## About Hosting Gorush

This template runs the official `appleboy/gorush:1.22.0` image as a private service. Gorush has no authentication of its own, so it gets no public domain; your backend calls it at `http://gorush.railway.internal:8088/api/push`. Before the first deploy, add a Firebase service account JSON to `GORUSH_ANDROID_CREDENTIAL`, an APNs key to `GORUSH_IOS_KEY_BASE64`, or both. The start command enables whichever platform has credentials. Without any, it stops with a clear message. Sync mode is on, so each push response lists failed tokens and their errors. Gorush keeps no state, so it needs no volume, and it fits the Hobby plan.

## Common Use Cases

- Sending mobile push notifications from any backend language over plain HTTP
- One push gateway shared by several apps and services in a project
- Replacing a paid push provider with FCM and APNs directly

## Dependencies for Gorush Hosting

- `appleboy/gorush:1.22.0` (official image)
- A Firebase service account (FCM) and/or an APNs auth key from Apple

### Deployment Dependencies

- [Gorush on GitHub](https://github.com/appleboy/gorush)
- [Gorush 1.22.0 release](https://github.com/appleboy/gorush/releases/tag/v1.22.0)
- [Firebase server credentials](https://firebase.google.com/docs/cloud-messaging/auth-server)

### Implementation Details

| Service | Source | Networking | Storage |
| --- | --- | --- | --- |
| gorush | `appleboy/gorush:1.22.0` | private only, port 8088 | none |

| Variable | Purpose |
| --- | --- |
| `GORUSH_ANDROID_CREDENTIAL` | Firebase service account JSON; enables Android |
| `GORUSH_IOS_KEY_BASE64` | APNs `.p8` key, base64-encoded; enables iOS |
| `GORUSH_IOS_KEY_ID`, `GORUSH_IOS_TEAM_ID` | From your Apple developer account |
| `GORUSH_IOS_PRODUCTION` | `false` for the APNs sandbox, `true` for production |
| `GORUSH_URL` | `http://:8088` for other services |

Example request from a service in the project:

```bash
curl -XPOST "$GORUSH_URL/api/push" -H 'Content-Type: application/json' -d '{
  "notifications": [{ "tokens": [""], "platform": 2, "title": "Hi", "message": "Hello" }]
}'
```

`platform` is `1` for iOS (add `"topic": ""`) and `2` for Android. Don't add a public domain: anyone who can reach Gorush can send pushes with your credentials.

This is a community-maintained deployment package and does not imply affiliation with or endorsement by the Gorush project.

## Why Deploy Gorush 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 Gorush 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

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/gorush
