Solutions distilled from real support tickets so you can fix it yourself in five minutes.
OpenClaw runs perfectly on Zeabur -- until it suddenly doesn't.
This isn't a hypothetical scenario. Over the past three weeks, we've handled more than 40 OpenClaw-related support tickets. Some issues can be fixed in five minutes on your own; others have left people stuck for days.
This article compiles the most common issues along with solutions distilled from real cases. Next time you run into one, you won't have to wait for a support reply.
| Symptom | Go to |
|---|---|
| Service shows CRASHED and keeps restarting | Issue 1 |
| Service stuck on STARTING, never becomes RUNNING | Issue 2 |
| Telegram bot shows typing but never replies | Issue 3 |
| Want to switch models but don't know how to configure it | Issue 4 |
| Opening the URL shows a 502 error | Issue 5 |
| Browser tool says it's not enabled | Issue 6 |
| Installing packages shows permission errors | Issue 7 |
openclaw gateway restart throws an error | Issue 8 |
| Don't know where the config file is | Issue 9 |
| Service crashes after manually editing config | Issue 10 |
| Want to upgrade OpenClaw | Issue 11 |
| Problems after upgrading | Issue 11 |
| Want to back up or restore data | Issue 12 |
| Telegram won't connect after upgrading to 2026.2.17 | Issue 13 |
Telegram logs show 409: Conflict | Issue 14 |
| Web UI won't load after upgrading to 2026.2.23 | Issue 15 |
Logs show Unrecognized key | Issue 1 + Rescue Mode |
No API key found for provider | Issue 3 |
connection refused on port 18789 | Issue 2 |
systemctl ENOENT | Issue 8 |
No matter what crash you're dealing with, this workflow can almost always bring things back. Memorize it -- you'll use it repeatedly throughout this guide.
When the Gateway crashes, opening the service URL will automatically display a helper page with error logs and repair hints.
/home/node/.openclaw/openclaw.json, and fix the issueOnce the service recovers, the helper page will disappear automatically.
Older versions don't have the helper page, so you'll need to manually enter the container to fix things.
sleep 3600, then Restart -- this keeps the container running so you can get in and fix things/home/node/.openclaw/openclaw.json, and fix the issue/opt/openclaw/startup.sh && /opt/openclaw/start_gateway.sh, then Restart the serviceWant to enable the helper page? Simply redeploy from the OpenClaw template.
This is currently the most common issue, accounting for nearly half of all support tickets.
Symptom: Service status shows CRASHED or CrashLoopBackOff, and the logs show errors like this:
Invalid config at /home/node/.openclaw/openclaw.json:
- gateway: Unrecognized key: "cool"
◇ Unknown config keys ─╮
│ │
│ - gateway.cool │
│ │
├───────────────────────╯
◇ Doctor ────────────────────────────────────────────╮
│ │
│ Run "openclaw doctor --fix" to remove these keys. │
│ │
├─────────────────────────────────────────────────────╯
Config invalid
File: ~/.openclaw/openclaw.json
Problem:
- gateway: Unrecognized key: "cool"
Run: openclaw doctor --fixCause: The config file contains keys that OpenClaw doesn't recognize. Common scenarios: adding nonexistent fields when manually editing, asking OpenClaw to modify the config but it breaks it, or old config fields being deprecated or renamed after a version upgrade. The config file lives in persistent storage, and if it encounters an unrecognized key, the service simply refuses to start.
Solution:
Case A: The service can still start (logs show the Doctor prompt)
Go to the Command tab and run openclaw doctor --fix -- it will automatically remove unrecognized keys.
Case B: The service has already crashed and you can't even get a shell
This is the most common scenario. Use Rescue Mode above to enter the container, open /home/node/.openclaw/openclaw.json, remove the keys listed in the logs (e.g., gateway.cool from the example above), then restart the service.
Symptom: Service keeps showing STARTING and never transitions to RUNNING. Logs may show:
Startup probe failed: dial tcp 10.0.5.87:18789: connect: connection refusedCause: OpenClaw requires a relatively long startup time (sometimes over 60 seconds), and the default startup probe may be too aggressive. Another common cause is a corrupted config file (same as Issue 1).
Solution:
Symptom: You send a message to the Telegram bot, it shows typing but never replies, or has no response at all.
Cause: Usually an API Key configuration issue or a model connection failure. The most common error we've seen is a mismatch between the Key and the Provider.
Solution:
Make sure your environment variables are set correctly:
ZEABUR_AI_HUB_API_KEY -- when using Zeabur AI HubANTHROPIC_API_KEY -- when using Claude directlyOPENAI_API_KEY -- when using OpenAI (also used for Memory Search and TTS)Go to the Web UI to check the model settings and make sure the selected model matches your API Key
Remember to restart the service after setting environment variables -- otherwise the changes won't take effect
Common mistake: You've set up the AI Hub Key but OpenClaw defaults to connecting to Anthropic, resulting in No API key found for provider "anthropic". Make sure the Provider setting matches your Key.
Symptom: The default model isn't good enough and you want to switch to Claude Sonnet or another model.
Solution:
If you're using Zeabur AI Hub, you can switch between multiple models with a single Key:
claude-sonnet-4-6 -- recommended, balances quality and speedclaude-haiku-4-5 -- faster and cheapergpt-5-mini -- OpenAI optionWant to use a different Provider? Go to the Environment Variables tab to add the corresponding API Key, then restart the service to use it:
| Provider | Environment Variable |
|---|---|
| Zeabur AI Hub | ZEABUR_AI_HUB_API_KEY |
| OpenAI | OPENAI_API_KEY |
| Anthropic | ANTHROPIC_API_KEY |
| Google Gemini | GEMINI_API_KEY |
| xAI (Grok) | XAI_API_KEY |
| Mistral | MISTRAL_API_KEY |
| OpenRouter | OPENROUTER_API_KEY |
| Groq | GROQ_API_KEY |
| Moonshot (Kimi) | MOONSHOT_API_KEY |
| Z.AI (GLM) | ZAI_API_KEY |
For more Providers, see the OpenClaw official documentation.
Symptom: Opening the OpenClaw URL shows a 502 error.
Cause: There are three common causes:
18789)openclaw.json, OpenClaw falls back to default settings where bind is set to loopback, making it unreachable from outsideSolution:
18789 (matching the OPENCLAW_GATEWAY_PORT environment variable)OPENCLAW_GATEWAY_BIND environment variable is set to lan (the Zeabur template sets this by default, but it may be missing if you've manually deleted or reset it)gateway.bind in openclaw.json to make sure it's lan and not loopbackSymptom: You ask OpenClaw to browse the web or control a browser, and it says the browser isn't enabled or can't be used, then falls back to Web Fetch.
Cause: In a container environment, headless Chrome requires an additional sandbox service to work. Simply deploying OpenClaw doesn't automatically include a browser.
Solution:
Deploy the OpenClaw Sandbox Browser template, which automatically sets up headless Chrome. After deployment, you'll need to configure a remote Profile in the OpenClaw Config to point to the sandbox.
Add browser control capabilities to OpenClaw.
For simply reading web page content (e.g., summarizing articles), Web Fetch is usually sufficient and you don't necessarily need full browser control.
Symptom: You want the bot to install pip, Homebrew, or other tools, but it shows permission errors.
Cause: Zeabur's Docker containers run as a non-root user (node), so you can't directly install system-level packages. Homebrew is also not available in the container environment.
Solution: This is a deliberate trade-off -- container isolation protects your data security. Alternatives:
Symptom: Running openclaw gateway restart shows:
Gateway service check failed: Error: systemctl --user unavailable: spawn systemctl ENOENTCause: The container environment doesn't have systemd.
Solution: You don't need to use openclaw gateway restart on Zeabur. Simply go to the Dashboard and restart the entire service.
Symptom: You want to manually edit the config but don't know where the file is.
Solution: The config file is located inside the container at:
/home/node/.openclaw/openclaw.jsonYou can view and edit it through the Files or Command tab in the Zeabur Dashboard.
However, it's recommended to use the Config page in the Web UI to modify settings first, as it's less likely to break the JSON format. Manually breaking the JSON is one of the common causes of Issue 1 (crashes).
Method 1: Web UI (recommended)
Use the Settings > Config page in the Web UI to modify settings. It validates the format for you, making it less likely to break the JSON.
Method 2: Ask OpenClaw to do it for you
Tell OpenClaw directly in the conversation what settings you want to change, and it can modify openclaw.json for you. But keep two things in mind:
claude-sonnet-4-6 or gpt-5 or above for config operationsMethod 3: Manual editing
/home/node/.openclaw/openclaw.jsonNote: Regardless of which method you use, don't add keys that OpenClaw doesn't recognize, or it will trigger the crash described in Issue 1.
Correct approach:
2026.2.19 to 2026.2.23Before upgrading: It's recommended to export and back up your current config from the Web UI Config page, in case the new version deprecates some config fields.
After upgrading: New versions may change or deprecate certain config fields, causing an Unrecognized key error on startup that crashes the service. If the service won't start after upgrading, refer to Issue 1 and Rescue Mode.
Things to avoid:
ghcr.io/openclaw/openclawopenclaw update or npm i -g openclaw inside the container -- those are upgrade methods for local installations; on Zeabur, just change the image taglatest tag -- the service pulls the newest version on every restart, which may upgrade without your knowledge and cause issues. Pin a specific version (e.g. 2026.2.23) and update manually when neededZeabur has a built-in backup feature that can perform automatic scheduled backups -- it's recommended to set this up first. Below is how to do a manual backup.
Manual backup:
Go to the Command tab in the Zeabur Dashboard and run:
backupThe backup file will be created in /home/node/ (e.g., backup-1430.tar.gz). Go to the Files tab to find the file, and click the Download button on the right to save it to your computer.
If you're on an older version without the backup command:
cd /home/node && tar -czvf backup.tar.gz .openclawRestore:
/home/node/, and click the Upload button in the top-right corner to upload the backup filerestore backup-1430.tar.gzIf the backup file was generated by the Zeabur Backup Service, add --strip 2:
restore backup-xxxxx.tar.gz --strip 2When to back up: After initial setup, before upgrading, before making major config changes.
Symptom: After upgrading to 2026.2.17 or a newer version, the Telegram bot can't connect or doesn't respond.
Cause: Version 2026.2.17 changed the default network connection behavior, which can cause Telegram API connection failures in certain container environments.
Solution:
Go to the Environment Variables tab in the Zeabur Dashboard and add:
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=trueRestart the service and you're done.
Symptom: The logs continuously show the following error, and the Telegram bot is completely unresponsive:
[telegram] getUpdates conflict: Call to 'getUpdates' failed! (409: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running)Cause: The Telegram Bot API has two ways to receive messages: Polling (actively polling for updates) and Webhook (Telegram pushes updates to you). These are mutually exclusive and cannot be used simultaneously.
This 409 error means the bot was previously configured with a webhook, but now OpenClaw is trying to receive messages via polling, and Telegram is rejecting it. Common causes:
Solution:
Go to the Command tab in the Zeabur Dashboard and run the following command to clear the webhook (replace <TOKEN> with your bot token):
curl https://api.telegram.org/bot<TOKEN>/deleteWebhookWhen you see {"ok":true,"result":true}, the webhook has been cleared successfully. Restart the service and the bot will be able to receive messages normally.
Symptom: After upgrading to 2026.2.23, the Web UI shows a blank page or CORS errors and won't load properly.
Cause: Starting from 2026.2.23, the Control UI enforces allowedOrigins checks. On Zeabur, domains are dynamically generated, so the Gateway can't automatically determine which origins are legitimate, causing requests to be rejected.
Solution:
Go to the Files tab in the Zeabur Dashboard, edit /home/node/.openclaw/openclaw.json, and add the following under gateway.controlUi:
{
"gateway": {
"controlUi": {
"dangerouslyAllowHostHeaderOriginFallback": true
}
}
}Restart the service and it should work.
If the service has already crashed and you can't get in, use Rescue Mode to edit the config file.
If you've tried everything above and it still doesn't work:
If any content in this article is incorrect or outdated, feel free to report it on the Zeabur Forum.