---
title: "Deploy RisingWave Streaming Database"
description: "Kafka, Postgres CDC, materialized views: real-time Apache Flink alternative"
category: "Storage"
url: https://railway.com/deploy/risingwave-streaming-database
---

# Deploy RisingWave Streaming Database

Kafka, Postgres CDC, materialized views: real-time Apache Flink alternative

**[Deploy RisingWave Streaming Database on Railway](https://railway.com/template/risingwave-streaming-database)**

- **Creator:** ProCode
- **Category:** Storage
- **Total deploys:** 3

## Template content

### RisingWave https://github.com/risingwavelabs.png

- **Image:** risingwavelabs/risingwave:v3.0.3
- **Start command:** `sh -c 'printf "%s" "frontend.hba_config.entries = [{ connection_type = \"Host\", databases = [\"all\"], users = [\"all\"], addresses = [\"all\"], auth_method = \"password\" }]" > /tmp/risingwave.toml && echo "aW1wb3J0IGphdmEubmlvLmZpbGUuKjsKaW1wb3J0IGphdmEubmlvLmZpbGUuYXR0cmlidXRlLlBvc2l4RmlsZVBlcm1pc3Npb25zOwppbXBvcnQgamF2YS5zcWwuKjsKaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOwoKLy8gT25lLXNob3QgcGFzc3dvcmQgYm9vdHN0cmFwIGZvciB0aGUgUmlzaW5nV2F2ZSBSYWlsd2F5IHRlbXBsYXRlLgovLyBSdW5zIGluIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBzdGFydCBjb21tYW5kIHVzaW5nIHRoZSBQb3N0Z3JlcyBKREJDIGRyaXZlcgovLyB0aGF0IHNoaXBzIGluc2lkZSB0aGUgaW1hZ2UgKGNvbm5lY3Rvci1ub2RlIGxpYnMpLiBBcHBsaWVzIFJXX1BBU1NXT1JEIHRvCi8vIHRoZSB0aHJlZSBwYXNzd29yZGxlc3Mgc3VwZXJ1c2VycyBvdmVyIGxvb3BiYWNrLCB0aGVuIGV4aXRzLgovLwovLyBSb3RhdGlvbiBzdXBwb3J0OiB0aGUgbGFzdCBzdWNjZXNzZnVsbHkgYXBwbGllZCBwYXNzd29yZCBpcyByZW1lbWJlcmVkIGF0Ci8vIFNUQVRFIChvbiB0aGUgZGF0YSB2b2x1bWUsIG5leHQgdG8gdGhlIFNRTGl0ZSBtZXRhIHN0b3JlIHRoYXQgaG9sZHMgdGhlCi8vIHNhbWUgY3JlZGVudGlhbCdzIGF1dGggaW5mbykuIE9uIGEgcm90YXRpb24gdGhlIGN1cnJlbnQgdmFyaWFibGUgbm8gbG9uZ2VyCi8vIGF1dGhlbnRpY2F0ZXMsIHNvIHRoZSByZW1lbWJlcmVkIHZhbHVlIGlzIHVzZWQgdG8gY29ubmVjdCBhbmQgYXBwbHkgdGhlIG5ldwovLyBvbmUuIElkZW1wb3RlbnQgb24gZXZlcnkgYm9vdC4KcHVibGljIGNsYXNzIEJvb3RzdHJhcCB7CiAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFNUQVRFID0gIi92YXIvbGliL3Jpc2luZ3dhdmUvLnJ3X3B3IjsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICBTdHJpbmcgY3VyID0gU3lzdGVtLmdldGVudigiUldfUEFTU1dPUkQiKTsKICAgICAgICBpZiAoY3VyID09IG51bGwgfHwgY3VyLmlzRW1wdHkoKSkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIltib290c3RyYXBdIFJXX1BBU1NXT1JEIHVuc2V0OyBsZWF2aW5nIHVzZXJzIHVuY2hhbmdlZCIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIFN0cmluZyBwcmV2ID0gbnVsbDsKICAgICAgICB0cnkgeyBwcmV2ID0gRmlsZXMucmVhZFN0cmluZyhQYXRoLm9mKFNUQVRFKSkudHJpbSgpOyB9IGNhdGNoIChFeGNlcHRpb24gaWdub3JlZCkge30KICAgICAgICBTdHJpbmcgZXNjID0gY3VyLnJlcGxhY2UoIiciLCAiJyciKTsKICAgICAgICBhcHBseSgicm9vdCIsIGN1ciwgcHJldiwgbmV3IFN0cmluZ1tdIHsKICAgICAgICAgICAgIkFMVEVSIFVTRVIgcm9vdCBXSVRIIFBBU1NXT1JEICciICsgZXNjICsgIiciLAogICAgICAgICAgICAiQUxURVIgVVNFUiBwb3N0Z3JlcyBXSVRIIFBBU1NXT1JEICciICsgZXNjICsgIiciCiAgICAgICAgfSk7CiAgICAgICAgLy8gT25seSByd2FkbWluIGNhbiBhbHRlciByd2FkbWluLgogICAgICAgIGFwcGx5KCJyd2FkbWluIiwgY3VyLCBwcmV2LCBuZXcgU3RyaW5nW10gewogICAgICAgICAgICAiQUxURVIgVVNFUiByd2FkbWluIFdJVEggUEFTU1dPUkQgJyIgKyBlc2MgKyAiJyIKICAgICAgICB9KTsKICAgICAgICB0cnkgewogICAgICAgICAgICBGaWxlcy53cml0ZVN0cmluZyhQYXRoLm9mKFNUQVRFKSwgY3VyKTsKICAgICAgICAgICAgRmlsZXMuc2V0UG9zaXhGaWxlUGVybWlzc2lvbnMoUGF0aC5vZihTVEFURSksIFBvc2l4RmlsZVBlcm1pc3Npb25zLmZyb21TdHJpbmcoInJ3LS0tLS0tLSIpKTsKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIltib290c3RyYXBdIHdhcm46IGNvdWxkIG5vdCBwZXJzaXN0IHN0YXRlOiAiICsgZSk7CiAgICAgICAgfQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiW2Jvb3RzdHJhcF0gcGFzc3dvcmRzIGVuZm9yY2VkIGZvciByb290LCBwb3N0Z3JlcywgcndhZG1pbiIpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIGFwcGx5KFN0cmluZyB1c2VyLCBTdHJpbmcgY3VyLCBTdHJpbmcgcHJldiwgU3RyaW5nW10gc3RtdHMpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgIFN0cmluZ1tdIGNhbmRpZGF0ZXMgPSAocHJldiA9PSBudWxsIHx8IHByZXYuZXF1YWxzKGN1cikpCiAgICAgICAgICAgID8gbmV3IFN0cmluZ1tdIHsgY3VyIH0gOiBuZXcgU3RyaW5nW10geyBjdXIsIHByZXYgfTsKICAgICAgICBTUUxFeGNlcHRpb24gbGFzdCA9IG51bGw7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA2MDsgaSsrKSB7CiAgICAgICAgICAgIGZvciAoU3RyaW5nIGNhbmQgOiBjYW5kaWRhdGVzKSB7CiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzIHAgPSBuZXcgUHJvcGVydGllcygpOwogICAgICAgICAgICAgICAgcC5zZXRQcm9wZXJ0eSgidXNlciIsIHVzZXIpOwogICAgICAgICAgICAgICAgcC5zZXRQcm9wZXJ0eSgicGFzc3dvcmQiLCBjYW5kKTsKICAgICAgICAgICAgICAgIHAuc2V0UHJvcGVydHkoImNvbm5lY3RUaW1lb3V0IiwgIjUiKTsKICAgICAgICAgICAgICAgIHAuc2V0UHJvcGVydHkoImxvZ2luVGltZW91dCIsICI1Iik7CiAgICAgICAgICAgICAgICBwLnNldFByb3BlcnR5KCJwcmVmZXJRdWVyeU1vZGUiLCAic2ltcGxlIik7CiAgICAgICAgICAgICAgICB0cnkgKENvbm5lY3Rpb24gYyA9IERyaXZlck1hbmFnZXIuZ2V0Q29ubmVjdGlvbigiamRiYzpwb3N0Z3Jlc3FsOi8vMTI3LjAuMC4xOjQ1NjYvZGV2IiwgcCk7CiAgICAgICAgICAgICAgICAgICAgIFN0YXRlbWVudCBzID0gYy5jcmVhdGVTdGF0ZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIHEgOiBzdG10cykgcy5leGVjdXRlKHEpOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFNRTEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgVGhyZWFkLnNsZWVwKDIwMDApOwogICAgICAgIH0KICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIltib290c3RyYXBdIEZBSUxFRCBmb3IgIiArIHVzZXIgKyAiOiAiICsgbGFzdCk7CiAgICAgICAgU3lzdGVtLmV4aXQoMSk7CiAgICB9Cn0K" | base64 -d > /tmp/Bootstrap.java && echo "aW1wb3J0IGJhc2U2NAppbXBvcnQgaG1hYwppbXBvcnQgaHR0cC5jbGllbnQKaW1wb3J0IG9zCmltcG9ydCBzb2NrZXQKaW1wb3J0IHN5cwpmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBUaHJlYWRpbmdIVFRQU2VydmVyCgojIEJhc2ljLWF1dGggcmV2ZXJzZSBwcm94eSBmb3IgUmlzaW5nV2F2ZSdzIGRhc2hib2FyZCAoMTI3LjAuMC4xOjU2OTEpLCBwYXJ0CiMgb2YgdGhlIFJpc2luZ1dhdmUgUmFpbHdheSB0ZW1wbGF0ZS4gVGhlIGRhc2hib2FyZCBpdHNlbGYgaGFzIG5vIGF1dGggYW5kIHRoZQojIG1ldGEgbm9kZSBoYXJkY29kZXMgaXRzIGJpbmQgaW4gc2luZ2xlX25vZGUgbW9kZSwgc28gdGhpcyBzaXRzIGluIGZyb250OgojIHVzZXJuYW1lICRSV19EQVNIQk9BUkRfVVNFUiwgcGFzc3dvcmQgJFJXX0RBU0hCT0FSRF9QQVNTV09SRCAoaXRzIG93bgojIGdlbmVyYXRlZCBzZWNyZXQsIGRlbGliZXJhdGVseSBzZXBhcmF0ZSBmcm9tIHRoZSBTUUwgcGFzc3dvcmQpLiBGYWlsLWNsb3NlZDoKIyBhbiB1bnNldCBwYXNzd29yZCBkZW5pZXMgZXZlcnkgcmVxdWVzdCBleGNlcHQgL2FwaS92ZXJzaW9uLCB3aGljaCBzdGF5cyBvcGVuCiMgc28gUmFpbHdheSdzIGhlYWx0aGNoZWNrIHBhc3NlcyB3aXRob3V0IGNyZWRlbnRpYWxzOyBpdCByZXR1cm5zIG9ubHkgYQojIHZlcnNpb24gc3RyaW5nLgpVUFNUUkVBTSA9ICgiMTI3LjAuMC4xIiwgNTY5MSkKUE9SVCA9IGludChvcy5lbnZpcm9uLmdldCgiUE9SVCIsICI4MDgwIikpClVTRVIgPSBvcy5lbnZpcm9uLmdldCgiUldfREFTSEJPQVJEX1VTRVIiLCAiIikgb3IgInJvb3QiClBXID0gb3MuZW52aXJvbi5nZXQoIlJXX0RBU0hCT0FSRF9QQVNTV09SRCIsICIiKQpPUEVOX1BBVEhTID0geyIvYXBpL3ZlcnNpb24ifQpIT1AgPSB7ImNvbm5lY3Rpb24iLCAia2VlcC1hbGl2ZSIsICJwcm94eS1hdXRoZW50aWNhdGUiLCAicHJveHktYXV0aG9yaXphdGlvbiIsCiAgICAgICAidGUiLCAidHJhaWxlcnMiLCAidHJhbnNmZXItZW5jb2RpbmciLCAidXBncmFkZSIsICJob3N0IiwgImF1dGhvcml6YXRpb24ifQoKCmNsYXNzIEhhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CiAgICBwcm90b2NvbF92ZXJzaW9uID0gIkhUVFAvMS4xIgoKICAgIGRlZiBfYXV0aGVkKHNlbGYpOgogICAgICAgIGlmIG5vdCBQVzoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgaCA9IHNlbGYuaGVhZGVycy5nZXQoIkF1dGhvcml6YXRpb24iLCAiIikKICAgICAgICBpZiBub3QgaC5zdGFydHN3aXRoKCJCYXNpYyAiKToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBjcmVkID0gYmFzZTY0LmI2NGRlY29kZShoWzY6XSwgdmFsaWRhdGU9VHJ1ZSkKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAjIENvbXBhcmUgYXMgQllURVMuIGNvbXBhcmVfZGlnZXN0IHJlZnVzZXMgbm9uLUFTQ0lJIHN0ciBhbmQgcmFpc2VzCiAgICAgICAgIyBUeXBlRXJyb3IsIHdoaWNoIHdvdWxkIGVzY2FwZSB0aGlzIGhhbmRsZXIgYW5kIGRyb3AgdGhlIGNvbm5lY3Rpb24KICAgICAgICAjIGluc3RlYWQgb2YgcmV0dXJuaW5nIDQwMSAtIHRyaWdnZXJhYmxlIGJ5IGFueSBjbGllbnQgc2VuZGluZyBhCiAgICAgICAgIyBub24tQVNDSUkgQXV0aG9yaXphdGlvbiBoZWFkZXIsIGFuZCBhIHNpbGVudCBsb2Nrb3V0IGZvciBhbnlvbmUgd2hvCiAgICAgICAgIyBzZXRzIGEgbm9uLUFTQ0lJIFJXX0RBU0hCT0FSRF9VU0VSLgogICAgICAgIHRyeToKICAgICAgICAgICAgZXhwZWN0ID0gKFVTRVIgKyAiOiIgKyBQVykuZW5jb2RlKCJ1dGYtOCIpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0dXJuIGhtYWMuY29tcGFyZV9kaWdlc3QoY3JlZCwgZXhwZWN0KQoKICAgIGRlZiBfcHJveHkoc2VsZik6CiAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5zcGxpdCgiPyIsIDEpWzBdCiAgICAgICAgaWYgcGF0aCBub3QgaW4gT1BFTl9QQVRIUyBhbmQgbm90IHNlbGYuX2F1dGhlZCgpOgogICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoNDAxKQogICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJXV1ctQXV0aGVudGljYXRlIiwgJ0Jhc2ljIHJlYWxtPSJSaXNpbmdXYXZlIERhc2hib2FyZCInKQogICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LUxlbmd0aCIsICIwIikKICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHRyeToKICAgICAgICAgICAgbiA9IGludChzZWxmLmhlYWRlcnMuZ2V0KCJDb250ZW50LUxlbmd0aCIpIG9yIDApCiAgICAgICAgICAgIGJvZHkgPSBzZWxmLnJmaWxlLnJlYWQobikgaWYgbiBlbHNlIE5vbmUKICAgICAgICAgICAgdXAgPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbigqVVBTVFJFQU0sIHRpbWVvdXQ9MzApCiAgICAgICAgICAgIGhkcnMgPSB7azogdiBmb3IgaywgdiBpbiBzZWxmLmhlYWRlcnMuaXRlbXMoKSBpZiBrLmxvd2VyKCkgbm90IGluIEhPUH0KICAgICAgICAgICAgdXAucmVxdWVzdChzZWxmLmNvbW1hbmQsIHNlbGYucGF0aCwgYm9keT1ib2R5LCBoZWFkZXJzPWhkcnMpCiAgICAgICAgICAgIHIgPSB1cC5nZXRyZXNwb25zZSgpCiAgICAgICAgICAgIGRhdGEgPSByLnJlYWQoKQogICAgICAgICAgICB1cC5jbG9zZSgpCiAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShyLnN0YXR1cykKICAgICAgICAgICAgZm9yIGssIHYgaW4gci5nZXRoZWFkZXJzKCk6CiAgICAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgaW4gSE9QIG9yIGsubG93ZXIoKSA9PSAiY29udGVudC1sZW5ndGgiOgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKGssIHYpCiAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtTGVuZ3RoIiwgc3RyKGxlbihkYXRhKSkpCiAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgICAgICBpZiBzZWxmLmNvbW1hbmQgIT0gIkhFQUQiOgogICAgICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShkYXRhKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIG1zZyA9IGIiZGFzaGJvYXJkIHVwc3RyZWFtIHVuYXZhaWxhYmxlIgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoNTAzKQogICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1MZW5ndGgiLCBzdHIobGVuKG1zZykpKQogICAgICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCiAgICAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKG1zZykKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgIHBhc3MKCiAgICBkb19HRVQgPSBkb19QT1NUID0gZG9fUFVUID0gZG9fREVMRVRFID0gZG9fUEFUQ0ggPSBkb19IRUFEID0gX3Byb3h5CgogICAgZGVmIGxvZ19tZXNzYWdlKHNlbGYsIGZtdCwgKmFyZ3MpOgogICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIltkYXNocHJveHldICIgKyAoZm10ICUgYXJncykgKyAiXG4iKQoKCmNsYXNzIER1YWxTdGFja1NlcnZlcihUaHJlYWRpbmdIVFRQU2VydmVyKToKICAgIGFkZHJlc3NfZmFtaWx5ID0gc29ja2V0LkFGX0lORVQ2ICAjICI6OiIgYWNjZXB0cyBJUHY0LW1hcHBlZCB0b28gKExpbnV4IGRlZmF1bHQpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHNydiA9IER1YWxTdGFja1NlcnZlcigoIjo6IiwgUE9SVCksIEhhbmRsZXIpCiAgICBwcmludChmIltkYXNocHJveHldIGxpc3RlbmluZyBvbiBbOjpdOntQT1JUfSAtPiAxMjcuMC4wLjE6NTY5MSIsIGZsdXNoPVRydWUpCiAgICBzcnYuc2VydmVfZm9yZXZlcigpCg==" | base64 -d > /tmp/dashproxy.py && (java -cp "/risingwave/bin/connector-node/libs/*" /tmp/Bootstrap.java &) ; (python3 /tmp/dashproxy.py &) ; exec /risingwave/bin/risingwave single_node --config-path /tmp/risingwave.toml --total-memory-bytes "$RW_TOTAL_MEMORY_BYTES" --parallelism "$RW_PARALLELISM"'`
- **Health check:** /api/version
- **Public domain:** Yes

## Documentation

# Deploy and Host RisingWave on Railway

![RisingWave](https://github.com/risingwavelabs.png)

RisingWave is an open source streaming database. You write PostgreSQL-compatible SQL, and it keeps
materialized views continuously up to date as data arrives from Kafka, Postgres CDC, MySQL CDC,
webhooks and ten more sources. Any Postgres client, driver or BI tool connects to it.
It does in one system what a Debezium plus Kafka plus Flink plus serving-database stack does in
four, and you query the results with a plain SELECT.

Official intro video (click to watch on YouTube):

[![Watch: What is RisingWave?](https://img.youtube.com/vi/98sahakm6I4/hqdefault.jpg)](https://www.youtube.com/watch?v=98sahakm6I4)

## About Hosting RisingWave

This template runs the official RisingWave image in single-node mode: one process carrying the SQL
frontend, compute, metadata and compaction, reachable over the Postgres wire protocol by any
Postgres client, driver or BI tool. The password for the `root`, `postgres` and `rwadmin` users is
generated for your deployment and applied on every deployment, so you copy `DATABASE_PUBLIC_URL`
and connect with no setup step. Memory is set to the 8 GiB RisingWave expects; you can raise it for
heavier workloads, but do not lower it below 8 GiB because that can cause issues like a crash-loop.

RisingWave's web dashboard can be accessed at your service URL, behind its own login. Normally it is not
safe to expose the dashboard: it has no built-in authentication. This template fixes that by
putting an authenticating proxy in front of it, with a second generated password, so you get the
dashboard without compromising on safety.

## Common Use Cases

- **Streaming ETL and live materialized views:** joins, aggregations and time windows over Kafka
  topics, always current, queryable in SQL
- **Real-time Postgres or MySQL replicas:** ingest CDC and serve fresh joins and rollups without
  loading your primary database
- **Feature serving and live dashboards:** point any Postgres client, ORM or BI tool at results
  that maintain themselves instead of re-running batch jobs
- **Streaming into a lakehouse:** continuously sink to Apache Iceberg, Postgres, ClickHouse,
  Elasticsearch, S3 and others

## How to Use RisingWave After Deployment

1. Wait for the **RisingWave** service to go green. First boot takes about 15 seconds.
2. Open the **RisingWave** service, go to the **Variables** tab, and copy the `DATABASE_PUBLIC_URL`.
   It includes the credentials, so running `psql "[DATABASE_PUBLIC_URL]"` (or adding it to your BI
   tool) should allow you to connect to the database. Note: use the `DATABASE_URL` variable for
   connecting to other Railway services within the same project.
3. Create a table or a source, then define a materialized view over it. It maintains itself from
   there.
4. Run `FLUSH;` after an INSERT in order to read your own write immediately. RisingWave commits on
   a barrier interval, so a SELECT immediately after an INSERT can return zero rows.
5. For the dashboard, open the service's public URL in a browser and log in with the
   `RW_DASHBOARD_USER` and `RW_DASHBOARD_PASSWORD` variables from that same Variables tab.

📌 To change any of these later, edit `RW_PASSWORD` (database), `RW_DASHBOARD_USER` or
`RW_DASHBOARD_PASSWORD` (dashboard) in the Variables tab and redeploy. The database and dashboard
credentials are deliberately separate, and the database password is re-applied to all three users
on every deployment, so change it there rather than by running ALTER USER yourself.

## Learn more

This [quickstart](https://docs.risingwave.com/get-started/quickstart) covers the basics in a few minutes (Step 3 onwards).
The [official tutorials](https://tutorials.risingwave.com/docs/intro/) go further, from materialized views and connectors through windows and watermarks to running it in production.
And [awesome-stream-processing](https://github.com/risingwavelabs/awesome-stream-processing) has copy-paste demos for CDC, Kafka joins and live dashboards.

## Is RisingWave Free?

RisingWave is Apache-2.0, and everything this template deploys runs without a license key: the SQL
engine, all connectors, materialized views, Iceberg. RisingWave Labs fund the project through a
handful of key-gated enterprise features and
[RisingWave Cloud](https://docs.risingwave.com/cloud/quickstart), their managed service.

## FAQ

**Is single-node mode production-grade?** RisingWave Labs position it for development, evaluation
and small-scale production. It is one process with no failover. For large or fault-tolerant
deployments they steer you to their Kubernetes operator or their cloud.

**Do I need Kafka running on Railway too?** No. RisingWave connects outward to brokers you already
have with `CREATE SOURCE`, and it also ingests Postgres and MySQL CDC, S3, webhooks and more.

**Is the dashboard safe to leave open?** Yes, that is the point of the proxy. Nothing reaches
RisingWave's dashboard without your `RW_DASHBOARD_USER` and `RW_DASHBOARD_PASSWORD`; the dashboard
port is never published directly. The one path that answers without credentials is
`/api/version`, which returns a version string and is what Railway's healthcheck uses.

## Dependencies for Hosting RisingWave

- **RisingWave**, one service in single-node mode: the SQL frontend, compute, metadata and
  compaction all run in a single process with an embedded SQLite metadata store.
- **A persistent volume at `/var/lib/risingwave`.** The only stateful piece: metadata and table
  state both live there.

### Deployment Dependencies

- [RisingWave website](https://risingwave.com)
- [Documentation and quickstart](https://docs.risingwave.com/get-started/quickstart)
- [Source connectors](https://docs.risingwave.com/ingestion/overview) and
  [sink connectors](https://docs.risingwave.com/delivery/overview)
- [Hands-on demos (awesome-stream-processing)](https://github.com/risingwavelabs/awesome-stream-processing)
- [Source on GitHub (Apache-2.0)](https://github.com/risingwavelabs/risingwave)

### Implementation Details

Porting from PostgreSQL, three structural differences: materialized views maintain themselves and
there is no `REFRESH MATERIALIZED VIEW`; sources are read-only, so use `CREATE TABLE` with a
connector for data you also want to INSERT into; and event-time windows need a watermark or they
never emit. See: [SQL reference](https://docs.risingwave.com/sql/commands/overview).

**How to Upgrade:** change the image tag in the service settings and redeploy. State and metadata
live on the volume and are picked up by the new version. Railway can also do this for you: in the
service Settings, under Source, "Configure Auto Updates" lets you take patches only, inside a
maintenance window you choose.

## Why Deploy RisingWave 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 RisingWave 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

- [Garage S3 Storage](https://railway.com/deploy/garage-s3-storage) — Ultra-light S3 server: fast, open-source, plug-and-play.
- [Redis](https://railway.com/deploy/redis-1) — Self Host Latest Redis with Railway
- [EasyImg](https://railway.com/deploy/easyimg) — Simple self-hostable Nuxt.js personal image hosting system.

Open this page in a browser: https://railway.com/deploy/risingwave-streaming-database
