Deploy KurrentDB | (Just Updated) EventStoreDB Event Sourcing Database, Auth On, Data Survives Redeploys

KurrentDB (EventStoreDB) event store, HTTP API, auth on, generated password

Deploy KurrentDB | (Just Updated) EventStoreDB Event Sourcing Database, Auth On, Data Survives Redeploys

Just deployed

/var/lib/kurrentdb

Deploy and Host KurrentDB on Railway

Built for an LLM agent to deploy and use. There is no setup step and nothing to fill in: the stock admin / changeit login that every KurrentDB install ships with is replaced at first boot by a generated 32-character password, and every call to the public URL must present it. The contract below lists every URL, variable name and the one script that proves it works.

KurrentDB (formerly EventStoreDB) is an open-source event-native database for event sourcing: append-only streams, optimistic concurrency, catch-up and persistent subscriptions, and server-side projections. This template runs a single node of the current KurrentDB release with authentication on.

About Hosting KurrentDB

This template runs one service, the official KurrentDB 26.2.3 image (kurrentplatform/kurrentdb, pinned by digest) with its data on a volume at /var/lib/kurrentdb. Railway's edge ends TLS, so the node runs with TLS off but with authentication and authorization still on (the --disable-tls mode, not --insecure, which would also drop authentication). The boot script waits for the node to be healthy, then replaces the default changeit admin password with ADMIN_PASSWORD, so there is no window in which the public URL accepts the default. The HTTP API, AtomPub, the web UI and projections are all on the one public port. Data survives redeploys, and the admin password is stable across them.

Agent contract

  • Public URL: https:// plus RAILWAY_PUBLIC_DOMAIN, given as DB_PUBLIC_URL. It serves the HTTP API and AtomPub under /streams/, projections under /projections/, and the web UI at /web/index.html.
  • Private URL: http://kurrentdb.railway.internal:8080 (same port, for services in the same project).
  • Credentials: user admin, password in ADMIN_PASSWORD.
  • Auth: HTTP basic auth on every request (curl -u admin:PASSWORD). Anonymous reads and writes answer 401.
  • Health: GET /health/live returns 204 with no credentials.
# run with DB_PUBLIC_URL and ADMIN_PASSWORD set; needs curl
U="admin:$ADMIN_PASSWORD"
S="orders-$(cat /proc/sys/kernel/random/uuid | cut -c1-8)"
curl -s -o /dev/null -w 'health %{http_code}\n' "$DB_PUBLIC_URL/health/live"
curl -s -o /dev/null -w 'anonymous %{http_code}\n' "$DB_PUBLIC_URL/streams/$S/0"
curl -s -o /dev/null -w 'default-password %{http_code}\n' -u admin:changeit "$DB_PUBLIC_URL/streams/$S/0"
curl -fsS -o /dev/null -w 'append %{http_code}\n' -u "$U" -X POST "$DB_PUBLIC_URL/streams/$S" -H 'Content-Type: application/vnd.eventstore.events+json' -d "[{\"eventId\":\"$(cat /proc/sys/kernel/random/uuid)\",\"eventType\":\"OrderPlaced\",\"data\":{\"item\":\"book\"}}]"
curl -fsS -u "$U" -H 'Accept: application/json' "$DB_PUBLIC_URL/streams/$S/0" | grep -o '"item": *"book"'

A fresh deploy prints health 204, anonymous 401, default-password 401, append 201 and "item": "book". The native gRPC protocol is served on the same port; official KurrentDB clients (.NET, Java, Node.js, Go, Python, Rust) connect from services in the same project with kurrentdb://admin:PASSWORD@kurrentdb.railway.internal:8080?tls=false. The scripted check above uses the HTTP API only.

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

  • Agent-ready - generated password, contract block and one working script; no wizard, no default credentials left behind.
  • Closed by default - authentication is on and the stock changeit password is rotated before the service reports up.
  • State survives redeploys - streams, projections and the rotated admin password live on a volume.
  • Pinned image - the KurrentDB version is pinned, so a redeploy never changes the server underneath you.
  • Current image - built from the Kurrent registry image, not the stale eventstore/eventstore Docker Hub image.

Common Use Cases

  • Event sourcing for AI agent workflows - append every agent decision and tool call as an immutable event, then replay a stream to audit or rebuild state.
  • Audit logs and activity feeds - append-only streams with ordering and optimistic concurrency.
  • CQRS read models - subscribe to streams and build projections for query-side stores.

Dependencies for KurrentDB Hosting

  • None. KurrentDB stores its own data on the volume at /var/lib/kurrentdb.

Deployment Dependencies


Template Content

More templates in this category

View Template
RustFS | (Just Updated) S3 Object Store, Public URL and Keys Set
S3-compatible object store, keys and public URL preset, volume kept

SuperSlowSloth
0
View Template
TimescaleDB
A PostgreSQL-based time-series database for analytics on Railway.

Rakit
1
View Template
Garage S3 Storage
Ultra-light S3 server: fast, open-source, plug-and-play.

PROJETOS
8