---
title: "Deploy Soketi | (Just Updated) Pusher-Compatible WebSockets, Port Fixed for Railway"
description: "Self-hosted Pusher-compatible WebSocket server, port wired for Railway"
category: "Other"
url: https://railway.com/deploy/soketi-or-just-updated-pusher-compatible
---

# Deploy Soketi | (Just Updated) Pusher-Compatible WebSockets, Port Fixed for Railway

Self-hosted Pusher-compatible WebSocket server, port wired for Railway

**[Deploy Soketi | (Just Updated) Pusher-Compatible WebSockets, Port Fixed for Railway on Railway](https://railway.com/template/soketi-or-just-updated-pusher-compatible)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/soketi-or-just-updated-pusher-compatible/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** Other

## Template content

### soketi

- **Image:** quay.io/soketi/soketi:1.6.1-16-debian@sha256:713223456cf16459833f9cccef5711055e9c546bf88d910bbd817601563ef762
- **Start command:** `/bin/sh -c 'SOKETI_PORT=$PORT exec node /app/bin/server.js start'`
- **Health check:** /ready
- **Public domain:** Yes

## Documentation

# Deploy and Host Soketi on Railway

Soketi is an open-source, Pusher-compatible WebSockets server. It lets Laravel Echo, pusher-js and any Pusher SDK
talk to your own server instead of a paid hosted service, with channels, presence, client events and a REST API for
publishing from your backend.

This template runs Soketi 1.6.1 as a single service from a digest-pinned official image, with an app ID, key and secret
generated for you on every deploy.

## About Hosting Soketi

Soketi needs a little care to work behind Railway's edge:

- **The listening port follows Railway.** Soketi ignores the `PORT` variable Railway injects and listens on 6001, so
  the public domain and the healthcheck would miss it. The start command sets `SOKETI_PORT` from `$PORT`, so the domain
  and the `/ready` healthcheck reach the server.
- **Credentials are generated.** `SOKETI_DEFAULT_APP_ID`, `SOKETI_DEFAULT_APP_KEY` and `SOKETI_DEFAULT_APP_SECRET` are
  random per deploy, so the well-known `app-id` / `app-key` defaults are never live on a public URL.
- **Stateless by design.** Soketi keeps connection state in memory, so there is no volume to manage.

## Common Use Cases

- Real-time updates for Laravel apps through Laravel Echo and broadcasting
- Live notifications, chat and presence in web and mobile apps using pusher-js
- A self-hosted drop-in replacement for Pusher Channels
- Dashboards that push events from a backend through the REST API

## Dependencies for Soketi Hosting

- None. Soketi runs as one service with no database.

### Deployment Dependencies

- Soketi documentation: https://docs.soketi.app/
- Official image: https://quay.io/repository/soketi/soketi

### Implementation Details

| Variable | Purpose |
| --- | --- |
| `SOKETI_DEFAULT_APP_ID` | App ID your backend uses with the Pusher SDK, generated per deploy. |
| `SOKETI_DEFAULT_APP_KEY` | Public app key for browser clients, generated per deploy. |
| `SOKETI_DEFAULT_APP_SECRET` | Secret for signing and the REST API, generated per deploy. Keep it server-side. |

Point a Pusher client at your domain with `wsHost` set to the Railway domain, `wssPort` 443 and `forceTLS` true.

## Why Deploy Soketi 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 Soketi 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/soketi-or-just-updated-pusher-compatible
