This repo packages OpenClaw for Railway with a small /setup web wizard so users can deploy and onboard without running any commands.
- OpenClaw Gateway + Control UI (served at
/and/openclaw) - A friendly Setup Wizard at
/setup(protected by a password) - Persistent state via Railway Volume (so config/credentials/memory survive redeploys)
- One-click Export backup (so users can migrate off Railway later)
- Import backup from
/setup(advanced recovery)
- The container runs a wrapper web server.
- The wrapper protects
/setupwithSETUP_PASSWORD. - During setup, the wrapper runs
openclaw onboard --non-interactive ...inside the container, writes state to the volume, and then starts the gateway. - After setup,
/is OpenClaw. The wrapper reverse-proxies all traffic (including WebSockets) to the local gateway process.
In Railway Template Composer:
- Create a new template from this GitHub repo.
- Add a Volume mounted at
/data. - Set the following variables:
Required:
SETUP_PASSWORD— user-provided password to access/setup
Recommended:
OPENCLAW_STATE_DIR=/data/.openclawOPENCLAW_WORKSPACE_DIR=/data/workspace
Optional:
OPENCLAW_GATEWAY_TOKEN— if not set, the wrapper generates one (not ideal). In a template, set it using a generated secret.
Notes:
- This template pins OpenClaw to a known-good version by default via Docker build arg
OPENCLAW_GIT_REF. - Backward compatibility: The wrapper includes a shim for
CLAWDBOT_*environment variables (logs a deprecation warning when used).MOLTBOT_*variables are not shimmed — this repo never shipped with MOLTBOT prefixes, so no existing deployments rely on them.
- Enable Public Networking (HTTP). Railway will assign a domain.
- This service is configured to listen on port
8080(including custom domains).
- This service is configured to listen on port
- Deploy.
Then:
- Visit
https://<your-app>.up.railway.app/setup - Complete setup
- Visit
https://<your-app>.up.railway.app/and/openclaw
- Open Telegram and message @BotFather
- Run
/newbotand follow the prompts - BotFather will give you a token that looks like:
123456789:AA... - Paste that token into
/setup
- Go to the Discord Developer Portal: https://discord.com/developers/applications
- New Application → pick a name
- Open the Bot tab → Add Bot
- Copy the Bot Token and paste it into
/setup - Invite the bot to your server (OAuth2 URL Generator → scopes:
bot,applications.commands; then choose permissions)
docker build -t openclaw-railway-template .
docker run --rm -p 8080:8080 \
-e PORT=8080 \
-e SETUP_PASSWORD=test \
-e OPENCLAW_STATE_DIR=/data/.openclaw \
-e OPENCLAW_WORKSPACE_DIR=/data/workspace \
-v $(pwd)/.tmpdata:/data \
openclaw-railway-template
# open http://localhost:8080/setup (password: test)-
Officially recommended by OpenClaw: https://docs.openclaw.ai/railway
-
Railway announcement (official): Railway tweet announcing 1‑click OpenClaw deploy
-
Endorsement from Railway CEO: Jake Cooper tweet endorsing the OpenClaw Railway template
-
Created and maintained by Vignesh N (@vignesh07)
-
1800+ deploys on Railway and counting Link to template on Railway


