Deploy Restate

Restate 1.7 durable execution server with authenticated gateway.

Deploy Restate

Just deployed

/restate-data

Just deployed

Deploy and Host Restate on Railway

Restate is a durable execution engine for building resilient services, workflows and agents. Your code, written with the Restate SDKs for TypeScript, Java, Kotlin, Go, Python or Rust, runs as normal HTTP services, and Restate journals every step so that handlers survive crashes, retries and restarts with exactly-once semantics.

About Hosting Restate

This template deploys Restate Server v1.7.12 as a single node with its log and state on a Railway volume, plus a Caddy gateway with two public domains. The ingress domain requires a bearer token and is where clients invoke your services. The admin domain serves the Restate UI and admin API behind basic auth. Restate itself stays private and uses a fixed node name, so its data survives redeploys. Deploy your service code as another Railway service and register it with the admin API. The Hobby plan fits development and small production loads.

Common Use Cases

  • Durable workflows and sagas that survive crashes without a separate queue
  • Reliable background jobs, retries and timers in TypeScript, Java, Go or Python
  • Long-running AI agents with durable steps and human-in-the-loop waits

Dependencies for Restate Hosting

  • restatedev/restate:1.7.12 (official image) with a volume at /restate-data
  • caddy:2.11.4-alpine (official image) as the gateway

Deployment Dependencies

Implementation Details

ServiceImageNetworkingStorage
restaterestatedev/restate:1.7.12private: ingress 8080, admin 9070volume at /restate-data
gatewaycaddy:2.11.4-alpinepublic ingress domain (8080) and admin domain (9071)none

Register a service deployed on Railway and call it:

curl -u "admin:$RESTATE_ADMIN_PASSWORD" https:///deployments \
  -H "Content-Type: application/json" -d '{"uri": "http://my-service.railway.internal:9080"}'
curl https:///Greeter/greet -H "Authorization: Bearer $RESTATE_INGRESS_TOKEN" \
  -H "Content-Type: application/json" -d '"Railway"'

Services inside the project can call ${{restate.RESTATE_PRIVATE_INGRESS_URL}} directly.

VariableServiceDefaultPurpose
RESTATE_NODE_NAMErestaterestate-1Stable node identity across redeploys
RESTATE_INGRESS_TOKENgatewaygeneratedBearer token for the public ingress
RESTATE_ADMIN_USERNAME / _PASSWORDgatewayadmin / generatedUI and admin API login

Notes:

  • Do not remove RESTATE_NODE_NAME: Railway hostnames change on every deploy, and a new node name would not match the stored metadata.
  • Restate needs to reach your services; the private network works for services in the same project.

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

Why Deploy Restate 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 Restate 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.


Template Content

More templates in this category

View Template
N8N Main + Worker
Deploy and Host N8N with Inactive worker.

jakemerson
120
View Template
Evolution API with n8n
Automate WhatsApp workflows with Evolution API, n8n, and Postgres.

codestorm
95
View Template
Postgres Backup
Cron-based PostgreSQL backup to bucket storage

Railway Templates
870