{ "title": "Deploy on Railway", "content": "Source: https://docs.openclaw.ai/railway\n\nDeploy OpenClaw on Railway with a one-click template and finish setup in your browser.\nThis is the easiest “no terminal on the server” path: Railway runs the Gateway for you,\nand you configure everything via the `/setup` web wizard.\n\n## Quick checklist (new users)\n\n1. Click **Deploy on Railway** (below).\n2. Add a **Volume** mounted at `/data`.\n3. Set the required **Variables** (at least `SETUP_PASSWORD`).\n4. Enable **HTTP Proxy** on port `8080`.\n5. Open `https:///setup` and finish the wizard.\n\n\n Deploy on Railway\n\n\nAfter deploy, find your public URL in **Railway → your service → Settings → Domains**.\n\n* give you a generated domain (often `https://.up.railway.app`), or\n* use your custom domain if you attached one.\n\n* `https:///setup` — setup wizard (password protected)\n* `https:///openclaw` — Control UI\n\n* Hosted OpenClaw Gateway + Control UI\n* Web setup wizard at `/setup` (no terminal commands)\n* Persistent storage via Railway Volume (`/data`) so config/credentials/workspace survive redeploys\n* Backup export at `/setup/export` to migrate off Railway later\n\n## Required Railway settings\n\n### Public Networking\n\nEnable **HTTP Proxy** for the service.\n\n### Volume (required)\n\nAttach a volume mounted at:\n\nSet these variables on the service:\n\n* `SETUP_PASSWORD` (required)\n* `PORT=8080` (required — must match the port in Public Networking)\n* `OPENCLAW_STATE_DIR=/data/.openclaw` (recommended)\n* `OPENCLAW_WORKSPACE_DIR=/data/workspace` (recommended)\n* `OPENCLAW_GATEWAY_TOKEN` (recommended; treat as an admin secret)\n\n1. Visit `https:///setup` and enter your `SETUP_PASSWORD`.\n2. Choose a model/auth provider and paste your key.\n3. (Optional) Add Telegram/Discord/Slack tokens.\n4. Click **Run setup**.\n\nIf Telegram DMs are set to pairing, the setup wizard can approve the pairing code.\n\n## Getting chat tokens\n\n### Telegram bot token\n\n1. Message `@BotFather` in Telegram\n2. Run `/newbot`\n3. Copy the token (looks like `123456789:AA...`)\n4. Paste it into `/setup`\n\n### Discord bot token\n\n1. Go to [https://discord.com/developers/applications](https://discord.com/developers/applications)\n2. **New Application** → choose a name\n3. **Bot** → **Add Bot**\n4. **Enable MESSAGE CONTENT INTENT** under Bot → Privileged Gateway Intents (required or the bot will crash on startup)\n5. Copy the **Bot Token** and paste into `/setup`\n6. Invite the bot to your server (OAuth2 URL Generator; scopes: `bot`, `applications.commands`)\n\n## Backups & migration\n\nDownload a backup at:\n\n* `https:///setup/export`\n\nThis exports your OpenClaw state + workspace so you can migrate to another host without losing config or memory.", "code_samples": [], "headings": [ { "level": "h2", "text": "Quick checklist (new users)", "id": "quick-checklist-(new-users)" }, { "level": "h2", "text": "One-click deploy", "id": "one-click-deploy" }, { "level": "h2", "text": "What you get", "id": "what-you-get" }, { "level": "h2", "text": "Required Railway settings", "id": "required-railway-settings" }, { "level": "h3", "text": "Public Networking", "id": "public-networking" }, { "level": "h3", "text": "Volume (required)", "id": "volume-(required)" }, { "level": "h3", "text": "Variables", "id": "variables" }, { "level": "h2", "text": "Setup flow", "id": "setup-flow" }, { "level": "h2", "text": "Getting chat tokens", "id": "getting-chat-tokens" }, { "level": "h3", "text": "Telegram bot token", "id": "telegram-bot-token" }, { "level": "h3", "text": "Discord bot token", "id": "discord-bot-token" }, { "level": "h2", "text": "Backups & migration", "id": "backups-&-migration" } ], "url": "llms-txt#deploy-on-railway", "links": [] }