---
title: "Deploy Pushpin"
description: "Pushpin 1.42: reverse proxy for real-time HTTP streaming and WebSockets."
category: "Other"
url: https://railway.com/deploy/pushpin
---

# Deploy Pushpin

Pushpin 1.42: reverse proxy for real-time HTTP streaming and WebSockets.

**[Deploy Pushpin on Railway](https://railway.com/template/pushpin)**

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

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

## Template content

### pushpin https://github.com/fastly.png

- **Image:** fanout/pushpin:1.42.0
- **Start command:** `sh -c 'sed -i -e "s/^push_in_http_addr=.*/push_in_http_addr=::/" -e "s/^sig_key=.*/sig_key=$PUSHPIN_SIG_KEY/" -e "s/^accept_x_forwarded_protocol=.*/accept_x_forwarded_protocol=true/" /etc/pushpin/pushpin.conf; if [ -n "$PUSHPIN_TARGET" ]; then echo "* $PUSHPIN_TARGET,over_http" > /etc/pushpin/routes; fi; exec pushpin --merge-output'`
- **Public domain:** Yes

## Documentation

# Deploy and Host Pushpin on Railway

Pushpin is a reverse proxy for real-time APIs. It sits in front of your backend and holds long-lived HTTP streams, long-polls and WebSocket connections open, while your backend stays stateless. To send data, the backend publishes to a channel over HTTP. Pushpin is maintained by Fastly, which acquired its creator, Fanout.

## About Hosting Pushpin

This template runs the official `fanout/pushpin:1.42.0` image as one service. Clients connect to the public domain, and Pushpin forwards each request to the backend named in `PUSHPIN_TARGET`, for example your app's private address. Your backend answers with GRIP instructions such as `Grip-Hold: stream` and later publishes messages to Pushpin's control API on the private network. Until you set a target, Pushpin's built-in test handler answers, so `/stream` works as a demo channel called `test`. Requests to your backend are signed with `PUSHPIN_SIG_KEY`. Pushpin needs no storage and fits the Hobby plan.

## Common Use Cases

- Adding server-sent events or WebSockets to an existing REST backend
- Scaling real-time endpoints without keeping connections in your app servers
- Live feeds, notifications and progress updates driven by simple HTTP publishes

## Dependencies for Pushpin Hosting

- `fanout/pushpin:1.42.0` (official image)
- Your own backend service, reachable over the private network

### Deployment Dependencies

- [Pushpin documentation](https://pushpin.org/docs/)
- [Pushpin 1.42.0 release](https://github.com/fastly/pushpin/releases/tag/v1.42.0)
- [GRIP protocol](https://pushpin.org/docs/protocols/grip/)

### Implementation Details

| Service | Source | Networking | Storage |
| --- | --- | --- | --- |
| pushpin | `fanout/pushpin:1.42.0` | public HTTPS on 7999, control API on private port 5561 | none |

| Variable | Purpose |
| --- | --- |
| `PUSHPIN_TARGET` | Backend `host:port`, e.g. `${{app.RAILWAY_PRIVATE_DOMAIN}}:3000`; empty uses the test handler |
| `PUSHPIN_SIG_KEY` | Generated key for the `Grip-Sig` JWT that Pushpin adds to backend requests |
| `PUSHPIN_PUBLISH_URL` | `http://pushpin.railway.internal:5561/publish/` for your backend |

Publish from your backend:

```bash
curl -d '{"items":[{"channel":"news","formats":{"http-stream":{"content":"hello\n"}}}]}' "$PUSHPIN_PUBLISH_URL"
```

Your backend must listen on IPv6 (`::`) to be reachable over Railway's private network. The control API has no authentication, so it stays on the private network.

This is a community-maintained deployment package and does not imply affiliation with or endorsement by Fastly or Fanout.

## Why Deploy Pushpin 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 Pushpin 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/pushpin
