You've heard the pitch: "Just run docker run and you're done!" And technically, that's true. You can pull the OpenClaw Docker image and start a container in under a minute. But between "container is running" and "I have a working AI agent on Telegram" lies a surprisingly long road of config files, networking quirks, and debugging sessions.
This isn't a hit piece on self-hosting. Self-hosting is great if you enjoy tinkering and want full control. But if you just want an AI agent that works, you should know what you're signing up for. Here are the real challenges.
Challenge 1: Docker Configuration Is Fiddly
OpenClaw isn't a simple web app. It runs AI models, manages persistent sessions, and handles real-time messaging. That means your Docker setup needs to be precise:
- Memory limits are mandatory. OpenClaw needs at least 2GB of memory and 3GB of swap. Run it with
--memory=2g --memory-swap=3g. Use the default 512MB and the container will OOM-kill itself — silently, with no helpful error message. - Volume mounts for config. The config lives at
~/.openclaw/openclaw.jsoninside the container. You need to bind-mount a host directory so your config persists across restarts. - File permissions are tricky. The container runs as user
node(uid 1000). Your bind-mounted config directory needschmod 777becausechown 1000:1000isn't always possible without root. Get this wrong and OpenClaw can't write its credentials or session data. - Port mapping. The gateway runs on port 18789 inside the container. You need to map it to a host port and make sure nothing else is using that port.
One wrong flag and the container crashes silently. You'll spend 30 minutes staring at docker logs trying to figure out why nothing is happening.
Challenge 2: OpenClaw Config Is Surprisingly Complex
The openclaw.json config file is powerful but unforgiving. A few gotchas that trip up almost everyone:
- Gateway auth format. It must be
"auth": {"token": "your-secret"}— an object with atokenfield. Not a string like"auth": "your-secret". Not"auth": {"type": "none"}. Both are silently invalid. - Channel AND plugin entries. Want Telegram? You need both
channels.telegram.enabled: trueANDplugins.entries.telegram.enabled: true. Channel config alone does nothing. This is the single most common mistake. - Trusted proxies. Only exact IPs work —
["172.17.0.1"], not["172.17.0.0/16"]. CIDR ranges are silently ignored. - Model ID routing. The model name must include the provider prefix:
openrouter/anthropic/claude-sonnet-4.6, not justanthropic/claude-sonnet-4.6. - Credentials directory. If you use
dmPolicy: "pairing"for Telegram, the directory~/.openclaw/credentials/must exist. Without it, the Telegram plugin silently drops every message.
There's no config validator. No helpful error messages. When something is wrong, the container starts fine but your bot just... doesn't respond.
Challenge 3: SSL and Reverse Proxy
Telegram and Discord webhooks require HTTPS. That means you need:
- A domain name pointed at your VPS
- A reverse proxy (Caddy or Nginx)
- SSL certificates (Let's Encrypt or similar)
- Proper TLS configuration
If you're behind Cloudflare, add another layer of complexity: TLS mode settings, origin certificates, and making sure Caddy doesn't fight Cloudflare for certificate issuance.
None of this is OpenClaw-specific — it's standard web server ops. But it's still 1-2 hours of setup that you have to get right before your bot can receive a single message.
Challenge 4: Updates and Security
OpenClaw releases frequently. Each update means:
- Pull the new Docker image
- Back up your config and credentials
- Stop the old container
- Start a new container with the updated image
- Check for breaking changes in the release notes
- Verify everything still works
Miss an update and you might be running a version with known bugs. Update blindly and a config format change might break your bot. There's no auto-update, no rollback button, no changelog notifications.
Security is the same story. Your VPS needs OS patches, firewall rules, SSH hardening, and Docker updates. A self-hosted bot is a server you're responsible for.
Challenge 5: Debugging With No Dashboard
When something breaks — and it will — here's your debugging toolkit:
docker logs container-name- Reading the raw JSON config for typos
- Checking
docker statsfor memory issues - Manually curling the gateway endpoint
There's no visual dashboard. No one-click restart. No error alerts to your phone. No log search. When your bot goes down at 2 AM, you won't know until someone tells you — or until you happen to check.
Challenge 6: The Real Cost
Self-hosting sounds free, but the costs add up:
- VPS: $5-20/month for a server with enough RAM
- Your time: 2-4 hours initial setup, 1-2 hours/month maintenance
- API keys: $10-50/month for OpenRouter, OpenAI, or other model providers
- Domain: $10-15/year
At $15-70/month plus your time, self-hosting often costs more than managed hosting — especially if you value your time at anything above zero.
The Easier Alternative
OpenClaw Launch handles all of this for you. Every challenge above — Docker config, SSL, updates, monitoring, debugging — is handled automatically.
| Feature | Self-Hosting | OpenClaw Launch |
|---|---|---|
| Setup time | 2-4 hours | Under 1 minute |
| Monthly cost | $15-70 + your time | From $3/month |
| Maintenance | 1-2 hours/month | Zero |
| Updates | Manual pull + restart | Automatic |
| Monitoring | DIY (Docker logs) | Built-in dashboard + alerts |
| SSL/HTTPS | Manual setup | Included |
| Config | Raw JSON | Visual configurator |
| AI credits | Bring your own keys | Included in plan |
So Which Should You Choose?
Self-host if: you enjoy DevOps, want full control over your infrastructure, and are comfortable with Docker, Linux, and debugging production issues.
Use OpenClaw Launch if: you just want an AI agent that works. Deploy in 10 seconds, manage from a dashboard, and never think about Docker configs again.
Want to try self-hosting anyway? Check out our step-by-step installation guide. We want you to succeed either way.
Ready to skip the headaches? Deploy your AI agent now — it takes less time than reading this article did.