Hosting
Railway
Deploy OpenClaw on Railway with a one-click template and access it through the web Control UI. This is the easiest "no terminal on the server" path: Railway runs the Gateway for you.
One-click deploy
Deploy on RailwayDeploy the template
Click Deploy on Railway above.
Add a volume
Attach a volume mounted at /data (required for persistent state).
Set variables
Set the required Variables on the service:
OPENCLAW_GATEWAY_PORT=8080(required -- must match the port in Public Networking)OPENCLAW_GATEWAY_TOKEN(required; treat as an admin secret)OPENCLAW_STATE_DIR=/data/.openclaw(recommended)OPENCLAW_WORKSPACE_DIR=/data/workspace(recommended)
Enable public networking
Under Public Networking, enable HTTP Proxy for the service on port 8080.
Connect
Find your public URL in Railway -> your service -> Settings -> Domains -- either a generated domain (often https://<something>.up.railway.app) or your attached custom domain.
Open https://<your-railway-domain>/openclaw and connect using the configured shared secret. The template uses OPENCLAW_GATEWAY_TOKEN by default; if you replace it with password auth, use that password instead.
What you get
- Hosted OpenClaw Gateway + Control UI
- Persistent storage via the Railway Volume (
/data), soopenclaw.json, per-agentauth-profiles.json, channel/provider state, sessions, and workspace survive redeploys
Connect a channel
Use the Control UI at /openclaw or run openclaw onboard via Railway's shell for channel setup instructions:
- Discord
- Telegram (fastest -- just a bot token)
- All channels
Backups and migration
Export your state, config, auth profiles, and workspace:
openclaw backup createThis creates a portable backup archive with OpenClaw state plus any configured workspace. See Backup for details.
Next steps
- Set up messaging channels: Channels
- Configure the Gateway: Gateway configuration
- Keep OpenClaw up to date: Updating