---
title: "Deploy RavenDB | (Just Updated) NoSQL Document Database, REST API, Basic Auth On, Data Survives Redeploys"
description: "RavenDB NoSQL document database with REST API and Studio, basic auth on"
category: "Storage"
url: https://railway.com/deploy/ravendb-or-just-updated-nosql-document-d
---

# Deploy RavenDB | (Just Updated) NoSQL Document Database, REST API, Basic Auth On, Data Survives Redeploys

RavenDB NoSQL document database with REST API and Studio, basic auth on

**[Deploy RavenDB | (Just Updated) NoSQL Document Database, REST API, Basic Auth On, Data Survives Redeploys on Railway](https://railway.com/template/ravendb-or-just-updated-nosql-document-d)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/ravendb-or-just-updated-nosql-document-d/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** Storage

## Template content

### gateway

- **Image:** caddy:2-alpine@sha256:e70b164da81ef698b3ad19af799ea6086ce6d9e48ed4079eb9fe26f6fbf14ee5
- **Start command:** `/bin/sh -c 'echo IyEvYmluL3NoCiMgUmFpbHdheSBib290IGZvciB0aGUgUmF2ZW5EQiBnYXRld2F5OiB0aGUgb25seSBwdWJsaWMgZG9vciwgYmFzaWMgYXV0aCBpbiBmcm9udCBvZiB0aGUgc2VydmVyLgojCiMgUmF2ZW5EQidzIG93biBzZWN1cml0eSBpcyBUTFMgcGx1cyBhIGNsaWVudCBjZXJ0aWZpY2F0ZSBvbiBldmVyeSByZXF1ZXN0LiBSYWlsd2F5J3MgZWRnZSBlbmRzCiMgVExTIGFuZCBjYW5ub3QgZm9yd2FyZCBjbGllbnQgY2VydGlmaWNhdGVzLCBzbyB0aGUgc2VydmVyIHJ1bnMgdW5zZWN1cmVkIG9uIHRoZSBwcml2YXRlIG5ldHdvcmsKIyBhbmQgdGhpcyBwcm94eSBzdXBwbGllcyB0aGUgcHVibGljIGF1dGhlbnRpY2F0aW9uOiB1c2VyIGFkbWluLCBwYXNzd29yZCBSQVZFTl9QQVNTV09SRCwgZm9yIHRoZQojIFJFU1QgQVBJIGFuZCBmb3IgU3R1ZGlvICh0aGUgYnJvd3NlciBwcm9tcHRzIG9uY2UgYW5kIFN0dWRpbydzIGNhbGxzIGFuZCB3ZWJzb2NrZXRzIHJldXNlIGl0KS4KIyAvcmFpbHdheV9oZWFsdGggYW5zd2VycyB3aXRob3V0IGF1dGggYW5kIGlzIHByb3hpZWQgdG8gdGhlIHNlcnZlcidzIC9idWlsZC92ZXJzaW9uLCBzbyB0aGUKIyBoZWFsdGhjaGVjayBpcyByZWQgd2hlbmV2ZXIgdGhlIGRhdGFiYXNlIHNlcnZlciBpcyBkb3duOyBpdCBleHBvc2VzIHRoZSB2ZXJzaW9uIG51bWJlciBvbmx5LgpzZXQgLWV1Cgo6ICIke1JBVkVOX1BBU1NXT1JEOj9SQVZFTl9QQVNTV09SRCBtdXN0IGJlIHNldH0iCjogIiR7UkFWRU5EQl9VUFNUUkVBTTo/UkFWRU5EQl9VUFNUUkVBTSBtdXN0IGJlIHNldH0iCkhBU0g9JChjYWRkeSBoYXNoLXBhc3N3b3JkIC0tcGxhaW50ZXh0ICIkUkFWRU5fUEFTU1dPUkQiKQoKY2F0ID4gL3RtcC9DYWRkeWZpbGUgPDxFT0YKewoJYWRtaW4gb2ZmCglhdXRvX2h0dHBzIG9mZgp9Cjoke1BPUlQ6LTgwODB9IHsKCWhhbmRsZSAvcmFpbHdheV9oZWFsdGggewoJCXJld3JpdGUgKiAvYnVpbGQvdmVyc2lvbgoJCXJldmVyc2VfcHJveHkgJHtSQVZFTkRCX1VQU1RSRUFNfQoJfQoJaGFuZGxlIHsKCQliYXNpY19hdXRoIHsKCQkJYWRtaW4gJHtIQVNIfQoJCX0KCQlyZXZlcnNlX3Byb3h5ICR7UkFWRU5EQl9VUFNUUkVBTX0KCX0KfQpFT0YKCmVjaG8gIltyYWlsd2F5XSBnYXRld2F5IGxpc3RlbmluZyBvbiA6JHtQT1JUOi04MDgwfSwgdXBzdHJlYW0gJHtSQVZFTkRCX1VQU1RSRUFNfSwgdXNlciBhZG1pbiIKZXhlYyBjYWRkeSBydW4gLS1jb25maWcgL3RtcC9DYWRkeWZpbGUgLS1hZGFwdGVyIGNhZGR5ZmlsZQo= | base64 -d > /tmp/boot.sh; exec /bin/sh /tmp/boot.sh'`
- **Health check:** /railway_health
- **Public domain:** Yes

### ravendb

- **Image:** ravendb/ravendb:7.2.7@sha256:ee5f7d01ebd3312f71faf715cd1b09c9a3d1769a44d789a57fe17ae8bebd3b0b
- **Start command:** `/bin/sh -c 'echo IyEvYmluL3NoCiMgUmFpbHdheSBib290IGZvciBSYXZlbkRCOiB1bnNlY3VyZWQgc2VydmVyIG9uIHRoZSBwcml2YXRlIG5ldHdvcmssIG5vIHB1YmxpYyBkb21haW4uCiMKIyBVcHN0cmVhbSBkZWZhdWx0cyB0byBTZXR1cF9Nb2RlPUluaXRpYWwsIHdoaWNoIG9wZW5zIGEgc2V0dXAgd2l6YXJkIGluIHRoZSBicm93c2VyIGFuZCB3YWl0cwojIGZvciBhIGh1bWFuLCBzbyBhIHN0b2NrIGRlcGxveSBuZXZlciBiZWNvbWVzIHVzYWJsZSBieSBpdHNlbGYuIFNlY3VyZSBtb2RlIG5lZWRzIGEgVExTIHNlcnZlcgojIGNlcnRpZmljYXRlIHBsdXMgYSBjbGllbnQgY2VydGlmaWNhdGUgb24gZXZlcnkgcmVxdWVzdCwgYW5kIFJhaWx3YXkncyBlZGdlIHRlcm1pbmF0ZXMgVExTIGFuZAojIGNhbm5vdCBwYXNzIGNsaWVudCBjZXJ0aWZpY2F0ZXMgdGhyb3VnaC4gU28gdGhpcyBzZXJ2aWNlIHJ1bnMgdW5zZWN1cmVkIGFuZCBpcyByZWFjaGFibGUgb25seQojIG9uIHRoZSBwcm9qZWN0J3MgcHJpdmF0ZSBuZXR3b3JrOyB0aGUgcHVibGljIGRvb3IgaXMgdGhlIGNhZGR5IHNlcnZpY2UsIHdoaWNoIHJlcXVpcmVzIGJhc2ljCiMgYXV0aC4gRG8gbm90IGFkZCBhIHB1YmxpYyBkb21haW4gdG8gdGhpcyBzZXJ2aWNlLgojCiMgVGhpbmdzIGEgdGVtcGxhdGUgY2Fubm90IGNhcnJ5IGFzIGxpdGVyYWxzIGFyZSBleHBvcnRlZCBoZXJlOgojICAtIEVVTEEgYWNjZXB0YW5jZSAod2l0aG91dCBpdCB0aGUgc2VydmVyIHJlZnVzZXMgdG8gc3RhcnQpLAojICAtIHNldHVwIG1vZGUgTm9uZSwgYW5kIGEgZmlyc3QgZGF0YWJhc2UgY3JlYXRlZCBiZWxvdywgc28gdGhlIGRlcGxveSBpcyB1c2FibGUgd2l0aCBubyB3aXphcmQsCiMgIC0gYSBiaW5kIG9uIFs6Ol0gc28gYm90aCB0aGUgSVB2NiBwcml2YXRlIG5ldHdvcmsgYW5kIElQdjQgcmVhY2ggaXQuIFVwc3RyZWFtJ3Mgb3duCiMgICAgUkFWRU5fREFUQUJBU0UgaGVscGVyIGNhbm5vdCBiZSB1c2VkIGZvciB0aGUgZGF0YWJhc2U6IGl0IGJ1aWxkcyBpdHMgVVJMIGZyb20gdGhlIGJpbmQKIyAgICBhZGRyZXNzIGFuZCBwcm9kdWNlcyBodHRwOi8vOjo6ODA4MCBmb3IgWzo6XS4Kc2V0IC1ldQoKREFUQT0vdmFyL2xpYi9yYXZlbmRiCkRCPSIke1JBVkVOX0RBVEFCQVNFX05BTUU6LW1haW59Igpta2RpciAtcCAiJERBVEEvZGF0YSIKIyBSYWlsd2F5IG1vdW50cyB0aGUgdm9sdW1lIHJvb3Qtb3duZWQgYW5kIHRoZSBpbWFnZSBydW5zIGFzIHVpZCA5OTkuCmNob3duIC1SIHJhdmVuZGI6cmF2ZW5kYiAiJERBVEEiCgpleHBvcnQgUkFWRU5fTGljZW5zZV9FdWxhX0FjY2VwdGVkPXRydWUKZXhwb3J0IFJBVkVOX1NldHVwX01vZGU9Tm9uZQpleHBvcnQgUkFWRU5fU2VjdXJpdHlfVW5zZWN1cmVkQWNjZXNzQWxsb3dlZD1QdWJsaWNOZXR3b3JrCmV4cG9ydCBSQVZFTl9TZXJ2ZXJVcmw9Imh0dHA6Ly9bOjpdOjgwODAiCiMgVGhlIG5vZGUgYWR2ZXJ0aXNlcyB0aGlzIFVSTCB0byBjbGllbnRzIGFuZCB0byBpdHNlbGY7IFs6Ol0gaXMgbm90IGEgY29ubmVjdGFibGUgYWRkcmVzcy4KZXhwb3J0IFJBVkVOX1B1YmxpY1NlcnZlclVybD0iaHR0cDovLyR7UkFJTFdBWV9QUklWQVRFX0RPTUFJTjo/UkFJTFdBWV9QUklWQVRFX0RPTUFJTiBtdXN0IGJlIHNldH06ODA4MCIKZXhwb3J0IFJBVkVOX1NlcnZlclVybF9UY3A9Mzg4ODgKZXhwb3J0IEhPTUU9IiREQVRBIgoKZWNobyAiW3JhaWx3YXldIHJhdmVuZGIgdWlkPSQoaWQgLXUpIG93bmVyPSQoc3RhdCAtYyAldTolZyAiJERBVEEvZGF0YSIpIGRiPSREQiIKc2V0cHJpdiAtLXJldWlkPXJhdmVuZGIgLS1yZWdpZD1yYXZlbmRiIC0taW5pdC1ncm91cHMgL2Jpbi9iYXNoIC91c3IvbGliL3JhdmVuZGIvc2NyaXB0cy9ydW4tcmF2ZW4uc2ggJgpTRVJWRVI9JCEKdHJhcCAna2lsbCAtVEVSTSAkU0VSVkVSIDI+L2Rldi9udWxsOyB3YWl0ICRTRVJWRVI7IGV4aXQgMTQzJyBURVJNIElOVAoKaT0wCnVudGlsIGN1cmwgLWZzIGh0dHA6Ly8xMjcuMC4wLjE6ODA4MC9idWlsZC92ZXJzaW9uID4vZGV2L251bGwgMj4mMTsgZG8KICBraWxsIC0wICIkU0VSVkVSIiAyPi9kZXYvbnVsbCB8fCB7IGVjaG8gIltyYWlsd2F5XSByYXZlbmRiIGV4aXRlZCBkdXJpbmcgc3RhcnQiOyBleGl0IDE7IH0KICBpPSQoKGkgKyAxKSk7IFsgIiRpIiAtZ3QgMjQwIF0gJiYgeyBlY2hvICJbcmFpbHdheV0gcmF2ZW5kYiBub3QgYW5zd2VyaW5nIGFmdGVyIDI0MHMiOyBraWxsICIkU0VSVkVSIjsgZXhpdCAxOyB9CiAgc2xlZXAgMQpkb25lCgojIFRoZSBwcml2YXRlIGRvbWFpbiBjYW4gdGFrZSBhIG1vbWVudCB0byByZXNvbHZlIG9uIGEgZnJlc2ggY29udGFpbmVyLCBhbmQgZGF0YWJhc2UgY3JlYXRpb24KIyB0YWxrcyB0byB0aGUgbm9kZSdzIGFkdmVydGlzZWQgVVJMLCBzbyByZXRyeSBpbnN0ZWFkIG9mIGZhaWxpbmcgdGhlIHdob2xlIGJvb3Qgb24gb25lIG1pc3MuCm49MAp3aGlsZSA6OyBkbwogIGlmIGN1cmwgLWZzICJodHRwOi8vMTI3LjAuMC4xOjgwODAvZGF0YWJhc2VzP25hbWU9JERCIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgIGVjaG8gIltyYWlsd2F5XSBkYXRhYmFzZSAkREIgcmVhZHkiCiAgICBicmVhawogIGZpCiAgaWYgY3VybCAtZnMgLVggUFVUICJodHRwOi8vMTI3LjAuMC4xOjgwODAvYWRtaW4vZGF0YWJhc2VzP25hbWU9JERCIiBcCiAgICAgIC1IICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nIC0tZGF0YSAie1wiRGF0YWJhc2VOYW1lXCI6XCIkREJcIn0iID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgZWNobyAiW3JhaWx3YXldIGRhdGFiYXNlICREQiBjcmVhdGVkIgogICAgYnJlYWsKICBmaQogIGtpbGwgLTAgIiRTRVJWRVIiIDI+L2Rldi9udWxsIHx8IHsgZWNobyAiW3JhaWx3YXldIHJhdmVuZGIgZXhpdGVkIHdoaWxlIGNyZWF0aW5nICREQiI7IGV4aXQgMTsgfQogIG49JCgobiArIDEpKTsgWyAiJG4iIC1ndCA2MCBdICYmIHsgZWNobyAiW3JhaWx3YXldIGNvdWxkIG5vdCBjcmVhdGUgZGF0YWJhc2UgJERCIjsga2lsbCAiJFNFUlZFUiI7IGV4aXQgMTsgfQogIHNsZWVwIDIKZG9uZQoKd2FpdCAiJFNFUlZFUiIKZWNobyAiW3JhaWx3YXldIHJhdmVuZGIgZXhpdGVkOyBzdG9wcGluZyBjb250YWluZXIgc28gUmFpbHdheSByZXN0YXJ0cyBpdCIKZXhpdCAxCg== | base64 -d > /tmp/boot.sh; exec /bin/sh /tmp/boot.sh'`

## Documentation

# Deploy and Host RavenDB on Railway

**Built for an LLM agent to deploy and use.** There is no setup wizard and nothing to fill in: a 32-character password is generated at deploy time, a database named `main` already exists, and every call to the public URL must present the password. A stock RavenDB image opens a browser setup wizard and waits for a human, and its unsecured mode answers anyone; this template does neither. The contract below lists every URL, variable name and the one script that proves it works.

RavenDB is an open-source NoSQL document database with ACID transactions, a SQL-like query language (RQL), full-text search, indexes, time series and a REST API. This template runs the free Community edition of a single node, behind an authenticating gateway.

## About Hosting RavenDB

This template runs two services. `ravendb` is the official **RavenDB 7.2.7** image (`ravendb/ravendb`, pinned by digest) with its data on a volume at `/var/lib/ravendb`. It has no public domain on purpose: RavenDB's own security is TLS plus a client certificate on every request, and Railway's edge ends TLS and cannot forward client certificates, so the server runs unsecured on the project's private network only. `gateway` is Caddy and is the only public door: it requires HTTP basic auth (user `admin`, password `RAVEN_PASSWORD`) for everything except a version-only health check, then proxies to the server, including Studio and its websockets. The boot script accepts the Community licence terms (deploying this template means you accept them), skips the setup wizard, and creates the database `main` on first boot. Data survives redeploys. The server advertises its private domain as its own URL, which is what lets a single node create databases while bound to both IPv4 and IPv6.

### Agent contract

- Public URL: `https://` plus the `RAILWAY_PUBLIC_DOMAIN` of the `gateway` service, as `RAVENDB_PUBLIC_URL`. It serves the REST API under `/databases/` and `/admin/`, and Studio at `/studio/index.html`.
- Private URL: `http://ravendb.railway.internal:8080` (HTTP, no authentication, for services in the same project only). The cluster TCP port is 38888.
- Credentials: user `admin`, password in `RAVEN_PASSWORD` (on the `gateway` service).
- Auth: HTTP basic auth on every public request (`curl -u admin:PASSWORD`). Without it the gateway answers 401. Only `/railway_health` is open.
- Health: `GET /railway_health` returns 200 with the server version, and fails when the database server is down.

```bash
# run with RAVENDB_PUBLIC_URL and RAVEN_PASSWORD set; needs curl
U="admin:$RAVEN_PASSWORD"
curl -s -o /dev/null -w 'health %{http_code}\n' "$RAVENDB_PUBLIC_URL/railway_health"
curl -s -o /dev/null -w 'anonymous %{http_code}\n' "$RAVENDB_PUBLIC_URL/databases/main/stats"
curl -fsS -u "$U" -X PUT "$RAVENDB_PUBLIC_URL/databases/main/docs?id=users/1" -H 'Content-Type: application/json' -d '{"Name":"Ada"}'; echo
curl -fsS -u "$U" "$RAVENDB_PUBLIC_URL/databases/main/docs?id=users/1" | grep -o '"Name":"Ada"'
curl -fsS -u "$U" -X POST "$RAVENDB_PUBLIC_URL/databases/main/queries" -H 'Content-Type: application/json' -d '{"Query":"from @all_docs where Name = $n","QueryParameters":{"n":"Ada"}}' | grep -o '"TotalResults":[0-9]*'
```

A fresh deploy prints `health 200`, `anonymous 401`, the stored document id, `"Name":"Ada"` and `"TotalResults":1`. Official RavenDB client libraries (.NET, Java, Python, Node.js, Go) connect to an unsecured URL, so use them from services in the same project with `http://ravendb.railway.internal:8080` and database `main`; from outside Railway use the REST API through the public URL with basic auth.

## Why Deploy RavenDB 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 RavenDB 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 certificate setup.
- **Closed by default** - the server is private-network only and the public door requires a password.
- **A database is already there** - `main` exists on first boot.
- **State survives redeploys** - documents, indexes and cluster state live on a volume.
- **Pinned image** - the RavenDB version is pinned, so a redeploy never changes the server underneath you.

## Common Use Cases

- **Application database for AI agents** - store JSON documents with transactions and query them with RQL.
- **Full-text and vector-style search backends** - indexes and search over document fields.
- **Replacing a hand-run MongoDB or CouchDB** - ACID document storage with a REST API and a web Studio.

## Dependencies for RavenDB Hosting

- None. RavenDB stores its own data on the volume at `/var/lib/ravendb`.

### Deployment Dependencies

- [ravendb/ravendb](https://github.com/ravendb/ravendb) - upstream project


## Similar templates

- [RustFS | (Just Updated) S3 Object Store, Public URL and Keys Set](https://railway.com/deploy/rustfs-or-just-updated-s3-object-store-p) — S3-compatible object store, keys and public URL preset, volume kept
- [TimescaleDB](https://railway.com/deploy/timescaledb-railway-template) — A PostgreSQL-based time-series database for analytics on Railway.
- [Garage S3 Storage](https://railway.com/deploy/garage-s3-storage) — Ultra-light S3 server: fast, open-source, plug-and-play.

Open this page in a browser: https://railway.com/deploy/ravendb-or-just-updated-nosql-document-d
