Deploy Kuzzle | (Just Updated) Backend API with Elasticsearch, Admin Password Generated, Data Survives Redeploys

Kuzzle backend API with Elasticsearch and Redis, secrets generated

Deploy Kuzzle | (Just Updated) Backend API with Elasticsearch, Admin Password Generated, Data Survives Redeploys

Just deployed

/usr/share/elasticsearch/data

redis

redis:8

Just deployed

/data

Just deployed

Deploy and Host Kuzzle on Railway

Kuzzle is an open-source backend: a document store API over Elasticsearch with realtime subscriptions, users, roles and permissions built in. This template deploys Kuzzle with its own Elasticsearch and Redis, with the admin password and token secret generated for you.

About Hosting Kuzzle

The template starts three services: kuzzle (public HTTPS API), elasticsearch (private, persistent volume) and redis (private, password protected, persistent volume). On first boot Kuzzle creates an admin user with the generated KUZZLE_ADMIN_PASSWORD and restricts the anonymous role, so nothing is writable without logging in.

Machine-readable contract:

public_url:     https://${RAILWAY_PUBLIC_DOMAIN of service kuzzle}
internal_url:   http://kuzzle.railway.internal:8080
health:         GET /_healthCheck  (200 when ready)
login:          POST /_login/local
admin_user:     admin
credentials:    KUZZLE_ADMIN_PASSWORD (service kuzzle), REDIS_PASSWORD (service redis)
storage:        elasticsearch.railway.internal:9200 (private, no auth)
anonymous:      restricted (401 on user and admin routes)
port:           8080 (HTTP)

Working check, run after the deploy turns green:

curl -s https:///_healthCheck
# {"status":200,...}

JWT=$(curl -s -X POST https:///_login/local \
  -H 'content-type: application/json' \
  -d '{"username":"admin","password":""}' | jq -r .result.jwt)

curl -s -X POST https:///myindex/_create -H "Authorization: Bearer $JWT"
curl -s -X PUT  https:///myindex/mycoll -H "Authorization: Bearer $JWT" \
  -H 'content-type: application/json' -d '{}'
curl -s -X POST https:///myindex/mycoll/_create?refresh=wait_for \
  -H "Authorization: Bearer $JWT" -H 'content-type: application/json' -d '{"note":"hello"}'

Elasticsearch and Redis data live on volumes, so documents survive redeploys.

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

  • Kuzzle, Elasticsearch and Redis wired together in one click
  • Admin password, token secret and Redis password generated automatically
  • Anonymous access locked down on first boot
  • Data kept on persistent volumes
  • Images pinned by digest, so redeploys do not change versions

Common Use Cases

  • Backend for web and mobile apps with realtime subscriptions
  • IoT and sensor data ingestion with search
  • Document store with a ready-made HTTP API for AI agents
  • Prototype and production backends without writing server code

Dependencies for Kuzzle Hosting

Deployment Dependencies

Implementation Details

All three services run their official images, pinned by digest, with start commands that set the Railway-specific bindings (port, private hosts, passwords, volume ownership). Rotate the admin password by editing KUZZLE_ADMIN_PASSWORD on the kuzzle service and redeploying; the bootstrap resets the admin user on each boot.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
49
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51