Key highlights
- Learn how to install OpenClaw with Docker on a private server using its guided setup script.
- Discover how to keep the OpenClaw gateway private with firewall rules and a Secure Shell (SSH) tunnel.
- Know how to connect Telegram, Slack and other channels and approve the first messages safely.
- Explore how this OpenClaw hosting guide sizes processor, memory and storage for an always-on agent.
- Choose backup, update and monitoring habits that help keep a production OpenClaw deployment reliable over time.
If your OpenClaw agent handles customer support, internal operations or team messaging, a laptop setup lets those workflows stop whenever it sleeps, restarts or changes networks. Running OpenClaw on a virtual private server (VPS) that you control keeps the gateway online, keeps credentials on your own server and gives channels a stable place to connect.
This OpenClaw hosting guide walks you through that setup with Docker on Ubuntu or Debian. You’ll prepare the server, lock down inbound traffic, run OpenClaw’s guided setup, open the Control UI through an SSH tunnel and connect your first messaging channel. You’ll also see what the server needs, how to back up and update your deployment and which habits help keep it secure once real users depend on it.
How we validated this walkthrough
The steps follow OpenClaw’s Docker VM runtime guide, the OpenClaw 2.0 release notes and Docker Engine’s install docs. They also match the repository’s Compose file, all checked in October 2026.
The scope is 64-bit Ubuntu 22.04 or 24.04 long-term support (LTS) or Debian 12 or 13 with OpenClaw 2.x. Keep three caveats in mind:
- Releases change: Install methods and supported configurations may change, so check the latest official docs before you deploy.
- Channel setup changes: Platforms may update scopes, webhook settings or authentication flows.
- Resource needs vary: Requirements depend on workload complexity, active workflows and concurrent usage.
Treat this walkthrough as a starting point. Validate configurations in your own environment and monitor performance before production use.
How to set up OpenClaw on a private server?
Deploying OpenClaw on a private server works best when you confirm each component before moving on. The eight steps below take you from a fresh server to a private gateway with one connected channel.
Before you start: Have these ready.
- Server: A 64-bit Ubuntu 22.04 or 24.04 LTS, or Debian 12 or 13 VPS with root SSH access
- Resources: At least 2 central processing unit (CPU) cores and 4 GB of random access memory (RAM) for the prebuilt image, the functional minimum Bluehost recommends, or 6 GB to build locally
- SSH key: A key pair on your laptop
- Model route: An application programming interface (API) key, a supported subscription or a local model
- Channel account: A Telegram bot, a Slack app or another supported channel
1. Prepare a private server for OpenClaw
Start with a clean Ubuntu 22.04 or 24.04 LTS, or Debian 12 or 13 server and connect with SSH key authentication. If you host with Bluehost, first add an SSH key to your Bluehost Self-Managed VPS in the Portal.
ssh root@[your-server-ip]
Apply security patches, then create a non-root user, because operating as root poses security risks in production:
apt update && apt upgrade
adduser openclaw
usermod -aG sudo openclaw
From your laptop, copy your key to the new user and test the login in a second terminal before you close the root session:
ssh-copy-id openclaw@[your-server-ip]
ssh openclaw@[your-server-ip]
Use this user for all later commands. It limits potential damage if your OpenClaw instance becomes compromised.
2. Make sure Docker is available on the VPS
This guide runs the OpenClaw gateway in Docker, which keeps its dependencies inside a container and its state in mounted folders you can back up.Docker containers package an application with its libraries, so deployments behave the same across machines.
As openclaw, add Docker’s official repository:
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
On Debian, replace ubuntu with debian in both URLs and use $(. /etc/os-release && echo "$VERSION_CODENAME") for Suites.
Install Docker Engine with the Compose plugin, test it and add your user to the docker group:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
docker-compose-plugin
sudo docker run hello-world
sudo usermod -aG docker openclaw
Warning: The docker group grants root-level privileges, so add only accounts you trust.
Log out and SSH back in, then confirm both tools return version numbers without sudo:
docker --version
docker compose version
3. Restrict inbound traffic before you start OpenClaw
The repository’s Compose file publishes the gateway port (18789) and two companion ports (18790 and 3978) on every interface. Docker routes published ports around standard Uncomplicated Firewall (UFW) rules, so set the firewall before you run setup.
Allow SSH and enable UFW. Outgoing traffic stays allowed by default, so API calls still work:
sudo apt install -y ufw
sudo ufw enable
sudo ufw status verbose
Append this block from OpenClaw’s network exposure guide to /etc/ufw/after.rules so the policy also covers Docker-published ports:
*filter
:DOCKER-USER - [0:0]
-A DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j RETURN
-A DOCKER-USER -s 127.0.0.0/8 -j RETURN
-A DOCKER-USER -s 10.0.0.0/8 -j RETURN
-A DOCKER-USER -s 172.16.0.0/12 -j RETURN
-A DOCKER-USER -s 192.168.0.0/16 -j RETURN
-A DOCKER-USER -s 100.64.0.0/10 -j RETURN
-A DOCKER-USER -p tcp --dport 443 -j RETURN
-A DOCKER-USER -m conntrack --ctstate NEW -j DROP
-A DOCKER-USER -j RETURN
COMMIT
Reload and confirm the rules are active:
sudo ufw reload
sudo iptables -S DOCKER-USER
For IPv6, add matching rules to /etc/ufw/after6.rules. On a custom SSH port, allow that port instead of OpenSSH, and keep 80 and 443 open if you add a reverse proxy. To check from your laptop that only those ports answer, run:
nmap -sT -p 1-65535 [your-server-ip] --open
4. Clone the OpenClaw repository
With Docker ready, clone OpenClaw into your home directory. Install Git first if it’s missing:
sudo apt install -y git
cd ~
git clone https://github.com/openclaw/openclaw.git
cd openclaw
The clone includes the files that setup uses:
- docker-compose.yml: Gateway and command-line services, ports, restart policy and health check
- Dockerfile: Local image build
- scripts/docker/setup.sh: Setup and guided onboarding
- Documentation: README and release notes with version-specific instructions to review first
5. Configure OpenClaw credentials and settings
Once Docker and the firewall are ready, the maintained setup script builds or pulls the image and launches OpenClaw’s guided onboarding. It then writes a gateway token to .env and starts the gateway, so you configure OpenClaw through prompts instead of editing files by hand.
Servers with less than 6 GB of RAM: Use the prebuilt image. A pinned release tag is safer than latest for production.
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
./scripts/docker/setup.sh
Servers with 6 GB of RAM or more: Build the image locally.
./scripts/docker/setup.sh
Guided setup can reuse supported subscriptions, API keys or local models it can reach and verifies the model you choose before saving it. It then hands you to the Control UI. Inside a container, an API key or a model server the container can reach is the most direct route.
OpenClaw 2.0 keeps sessions and transcripts in SQLite inside the mounted ~/openclaw folder, so there’s no separate database to configure.
OpenClaw 2.0 delivers protected credentials to supported destinations without exposing them in model-visible text. It also rechecks stale authority: An approval that arrives after a policy change is rejected. A revoked device token also loses the authority running work inherited from it.
The .env file holds the gateway token and any provider API keys you pass as environment variables. The token controls access to your entire installation, so treat it like a password and keep it out of repositories. Never reuse tokens across environments or share them publicly.
Print the token with the command below. For unattended setup and other variables, see OpenClaw’s Docker installation guide.
grep OPENCLAW_GATEWAY_TOKEN .env
6. Start OpenClaw and verify it is running
The setup script has already started the gateway, so confirm it’s healthy. The gateway should show as running and healthy, and /healthz returns a short JavaScript Object Notation (JSON) response:
docker compose ps
docker compose logs --tail=100 openclaw-gateway
curl -fsS http://127.0.0.1:18789/healthz
OpenClaw keeps conversations, transcripts, scheduled jobs and queued replies on disk. After a restart, it resumes interrupted work, delivers ready but unsent replies instead of redoing the work and re-arms schedules. OpenClaw 2.0 run history shows whether each Automation run fired, delivered and completed, and missed work resumes without re-running finished jobs.
Common startup issues:
- Out of memory during a local build:
Killedor exit code 137 means you need the prebuilt image or a larger plan. - Permission errors on /home/node/.openclaw: Run the
chowncommand below. - Port already in use: Set
OPENCLAW_GATEWAY_PORTto a free port and use it in the health check and tunnel. - Configuration errors: Run Doctor (second command below) to see the problem and the fix.
sudo chown -R 1000:1000 ~/.openclaw ~/.openclaw-auth-profile-secrets
docker compose run --rm openclaw-cli doctor
7. Access the rebuilt Control UI through an SSH tunnel
The Control UI is OpenClaw 2.0’s main workspace, with conversations at the center and files, approvals, settings and live agent work beside them. Keep it private and reach it from your laptop through an SSH tunnel, with port 18789 closed to the internet.
ssh -N -L 18789:127.0.0.1:18789 openclaw@[your-server-ip]
Open http://127.0.0.1:18789/ and paste the gateway token in Settings. Then approve the browser’s device request on the server; the last command reprints the Control UI address:
docker compose run --rm openclaw-cli devices list
docker compose run --rm openclaw-cli devices approve <requestId>
docker compose run --rm openclaw-cli dashboard --no-open
Pro tip: If the tunnel reports “administratively prohibited,” enable AllowTcpForwarding in the server’s SSH configuration. On a custom SSH port, add -p [your-ssh-port].
Some channels in step 8 need a public Hypertext Transfer Protocol Secure (HTTPS) address. For those, put a reverse proxy in front and follow OpenClaw’s network exposure guide rather than opening port 18789.
8. Connect a messaging channel to OpenClaw
OpenClaw becomes useful when connected to communication platforms where your artificial intelligence (AI) agents interact with users. You add each channel through the openclaw-cli service. Outbound transports need no extra ports, while webhook-based ones need a public HTTPS endpoint.
For Telegram: Create a bot with BotFather’s /newbot command, then add its token:
docker compose run --rm openclaw-cli channels add --channel telegram --token "<bot-token>"
Send the bot a direct message (DM) and approve it in the Control UI under Settings > Channels > DM access requests. Codes expire after one hour. Long polling is the default, and webhook mode is optional if you’d rather Telegram push updates to a public uniform resource locator (URL).
For Slack: Socket Mode is the default, so no public URL is needed. Create the app from OpenClaw’s manifest and generate an App-Level Token with connections:write. Install the app for the Bot User OAuth Token, then install the Slack plugin.
In Hypertext Transfer Protocol (HTTP) mode, point Event Subscriptions at your gateway’s /slack/events webhook URL and add the signing secret. OpenClaw’s Slack setup guide covers each screen.
Other channels use their own plugins, and Microsoft Teams and short message service (SMS) also need a public endpoint:
- Signal: Install the Signal plugin and run
signal-cliwith a separate bot number. - Microsoft Teams: Register a bot and Teams app, then route the published port 3978 through your reverse proxy for its public HTTPS messaging endpoint.
- SMS and multimedia messaging service (MMS) via Twilio: Use an SMS-capable (MMS-capable for media) number and a public HTTPS webhook URL reaching
/webhooks/sms. US local numbers also need application-to-person (A2P) 10-digit long code (10DLC) registration.
New senders on most channels get a pairing code first, and you approve them the same way. With a channel connected, the focus shifts from setup to stability.
What to do after deploying OpenClaw
Installation is only the first step. These checks help your OpenClaw instance run reliably once real users arrive.
1. Test a simple workflow
Send a short request through your channel and confirm the reply. Then send /status alone to get a status reply without invoking the agent. This test confirms:
- Message routing works between channels and OpenClaw
- AI model connections respond appropriately
- Response delivery succeeds through your configured channels
- Latency remains within acceptable ranges
Document any issues you find. Performance problems visible with simple workflows often indicate configuration issues that worsen under load.
2. Verify channel connectivity
Authentication tokens must stay valid, and channels in webhook or HTTP mode need their public URL reachable. Check both from the server:
docker compose run --rm openclaw-cli channels status --probe
curl -fsS http://127.0.0.1:18789/readyz
The probe shows each channel’s state, which OpenClaw 2.0 reports as usable, recovering or blocked, and /readyz returns an error status naming any failing channel. Accepted messages persist through restarts and reconnects, and OpenClaw reconciles uncertain sends through delivery receipts instead of blindly resending them.
Platform API changes occasionally break integrations. Subscribe to developer notifications from Slack, Telegram or other connected services for advance warning.
3. Confirm logs, health and restart behavior
The repository’s Compose file already sets Docker’s restart: unless-stopped, which restarts the container process after crashes and reboots. OpenClaw’s own recovery restores the work inside it (step 6), and graceful restarts let active turns finish first.
Confirm docker compose ps shows the gateway as healthy, then restart it and check that your conversation continues. Doctor’s read-only preflight names any config key or state problem and the fix:
docker compose restart openclaw-gateway
docker compose run --rm openclaw-cli doctor --json
To keep logs from filling the disk, set rotation in /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
The setting applies to new containers, so restart Docker, recreate the gateway and check disk use:
sudo systemctl restart docker
docker compose up -d --force-recreate openclaw-gateway
docker system df
4. Back up state and run guarded updates
OpenClaw’s configuration, credentials and SQLite state live in host folders under your home directory. Back them up before every update, copy the archive off the server and treat it like a credential.
docker compose stop openclaw-gateway
sudo tar -czf ~/openclaw-backup-$(date +%F).tar.gz -C ~ .openclaw .openclaw-
auth-profile-secrets
docker compose start openclaw-gateway
If you build the image on the server, update with these commands:
git pull --ff-only
OPENCLAW_SKIP_ONBOARDING=1 ./scripts/docker/setup.sh
docker compose run --rm openclaw-cli doctor --json
With the prebuilt image, set your intended tag in the same shell before rerunning setup:
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:<tag>"
When the image changes, the container runs Doctor against your mounted state before the gateway starts. It keeps a pre-repair copy, saves verified SQLite copies before schema changes and stops instead of starting on state it can’t migrate safely. On native installs, openclaw update inspects the installation before replacing it, stops an unsafe candidate while leaving the previous version runnable and offers --dry-run.
Admins add, enable, disable and remove plugins, curated ClawHub skills and vetted Model Context Protocol (MCP) connectors from the Control UI. A failed plugin install returns to a retryable state instead of breaking the existing configuration, and plugin updates roll back when a replacement fails.
5. Add production safeguards
Production deployments need protective measures beyond basic installation. Add these safeguards before handling real user traffic:
- Rate limiting: Limits abuse and controls costs
- Sender controls: Keep DM pairing or allowlists on
- Timeout configurations: Stop runaway processes
- Resource limits: Keep single workflows from consuming all available memory
Monitor AI API usage to avoid billing surprises. Set spending alerts with your AI providers and implement application-level usage caps.
Once your setup is stable and verified, the next decision is where OpenClaw should run long term.
Why run OpenClaw on a private server?
A private server keeps OpenClaw online and reachable when your laptop is off, and it keeps API keys and tokens on a machine you control. Local installs are still the quickest place to experiment, so many teams use both.
1. Why is a local setup useful for testing but limited for production
Running OpenClaw on your laptop or workstation works perfectly during development. You can iterate quickly without deployment overhead and debug issues with full access to logs and processes.
However, local hosting fails for production because:
- Your computer must remain powered on and connected continuously
- Home internet connections lack the reliability businesses require
- Dynamic internet protocol (IP) addresses break webhook integrations
- Power outages and system updates cause unexpected downtime
Development and production environments should remain separate. Local machines serve development needs while dedicated servers handle production workloads.
2. Why a VPS fits always-on OpenClaw workloads
Virtual private servers provide dedicated resources that run continuously, regardless of your physical presence. Data centers typically maintain power redundancy, network connectivity and cooling systems designed for high availability.
For AI agents that must respond to messages at any hour, this continuous operation proves essential. Customers expect immediate responses whether the message arrives at noon or midnight.
On a self-managed VPS, your host maintains the physical hardware, network and virtualization layer. You keep the operating system patched and own OpenClaw’s configuration, updates and integrations.
How private hosting improves control and security
Self-hosted OpenClaw deployments keep sensitive credentials under your direct control. API keys and gateway tokens stay on a server you control, and prompts go only to the model provider you choose, or stay on the server if you run a local model.
This isolation matters particularly for:
- Organizations with compliance requirements
- Businesses handling sensitive customer data
- Teams integrating with internal systems
- Deployments requiring custom security configurations
You control exactly which systems OpenClaw connects with and how data flows between them.
Why stable networking matters for APIs and messaging
Messaging platforms expect webhook endpoints to respond quickly and reliably. Slack’s HTTP mode, for example, needs a public request URL that Slack can reach, while Socket Mode, OpenClaw’s default, keeps an outbound connection open instead.
VPS providers offer stable IP addresses and consistent network performance that meet these requirements for either Slack transport. API-based workflows similarly depend on reliable connectivity. Rate limits, retry logic and timeout handling all function better when network conditions remain predictable.
What does OpenClaw need from a VPS?
OpenClaw needs three things from a VPS: enough CPU and RAM to run the gateway, persistent NVMe storage for its state and build artifacts, and a firewall that keeps the gateway’s internal ports closed while allowing only SSH and necessary web traffic.
The right amount of each depends on how many agents, channels and automations you run.
| Requirement | Minimum | When to size up | Why it matters |
|---|---|---|---|
| CPU and RAM | 2 vCPU, 4 GB RAM (prebuilt image) | 6 GB+ RAM if building the image on the server; 4 vCPU/8 GB or higher for multi container production | Memory use scales with concurrent conversations, agents and channels |
| Storage | 100 GB NVMe | 200 to 450 GB NVMe as build activity, log retention and agent workspace files grow | Docker images, OpenClaw’s state in ~/.openclaw, agent generated files and logs all accumulate on disk |
| Network and firewall | Ports 22, 80 and 443 open; ports 18789, 18790 and 3978 closed | Unmetered bandwidth if you expect heavy messaging or API traffic | Keeps the gateway’s internal ports private while still allowing SSH access and reverse proxy traffic for webhook integrations |
In short, a modest VPS covers a single agent with a few channels. Whereas, heavier AI workloads, multiple containers or larger teams call for more vCPU, RAM and storage headroom. Additionally, the same locked-down port configuration is needed regardless of size.
We’ll walk through each of these in detail below.
1. CPU and RAM considerations
Plan for at least 2 virtual CPU (vCPU) cores and 4 GB of RAM when you pull OpenClaw’s prebuilt image, the functional minimum Bluehost recommends for OpenClaw. OpenClaw’s Docker documentation calls for at least 6 GB of RAM if you build the image on the server.
Memory use grows with concurrent conversations, agents and channels, so match the plan to your workload. On Bluehost Self-Managed VPS Hosting, those floors map to three Non-Volatile Memory Express (NVMe) plans:
| Plan | vCPU | RAM | Storage | Starting price | Renews at | Best for |
|---|---|---|---|---|---|---|
| NVMe 4 (recommended starting tier) | 2 | 4 GB DDR5 | 100 GB NVMe | $9.49/mo (24 month term) | $11.99/mo | One agent, a few channels and a handful of automations with the prebuilt image |
| NVMe 8 | 4 | 8 GB DDR5 | 200 GB NVMe | $12.99/mo | $28.99/mo | Multi container production, heavier traffic or building the image on the server |
| NVMe 16 | 8 | 16 GB DDR5 | 450 GB NVMe | $25.99/mo | $49.99/mo | Heavy AI workloads, large teams and enterprise stacks |
Note: Bluehost pricing was verified in October 2026 and may change. See current Bluehost plans and pricing.
Hosted model providers run inference off the server, so a graphics processing unit (GPU) matters only for a local model sized to need one. Monitor usage after deployment to right-size your allocation.
2. Storage for logs, containers and artifacts
Docker images, container layers and OpenClaw’s state all consume disk space. The amount grows with build activity, retention and agent work:
- Docker images and build cache: Grow fastest when you build on the server
- OpenClaw state: Configuration, credentials and SQLite session and run data in
~/.openclaw - Agent workspace: Files your agents create or edit
- Logs: Container logs, capped by your rotation settings
NVMe solid-state drive (SSD) storage is typically faster than spinning hard drives, which helps logs and state writes keep up. Track usage with docker system df as your workflows grow.
3. Network and firewall planning
Expose only SSH and any public web traffic, and keep the gateway’s ports private. Step 3 of the setup covers the commands:
- Port 22: SSH administration, or your custom SSH port
- Ports 80 and 443: Reverse proxy traffic, needed only for Microsoft Teams, SMS, Slack HTTP mode or Telegram webhook mode
- Ports 18789, 18790 and 3978: Closed to the internet
Bandwidth needs are usually modest, since AI API calls and messaging payloads are small. Providers that offer unmetered bandwidth, subject to their terms, can remove overage concerns.
When to scale resources
Watch these metrics for scaling needs. Each one points to a limit a larger plan or configuration change can address:
- Sustained high CPU use
- Memory usage approaching allocated limits
- Response latency increases over time
- Request timeouts become frequent
For a single gateway, vertical scaling (adding CPU and RAM) is usually the simplest next step. Add more servers for high availability or separate trust boundaries.
How Bluehost Self-Managed VPS maps to OpenClaw needs
At Bluehost, our VPS runs OpenClaw 2.0 the way it’s meant to run: automations that survive a restart, channels that hold messages through a dropped connection, approvals bound to the request that earned them. That needs infrastructure built to stay on.
Bluehost Self-Managed VPS Hosting is that infrastructure. Full root access, full Docker support, deployed exactly as OpenClaw’s own documentation recommends.
Running OpenClaw 2.0 well comes down to four things working in concert:
- Enough CPU and RAM to keep it responsive
- A container environment it can deploy cleanly into
- Enough root-level control to enforce its own security model
- A network layer stable enough for its channels to depend on.
Bluehost Self-Managed VPS Hosting is built to give you all four in one server, without asking you to manage the hardware underneath it.
| Pillar | What Bluehost provides | Why it matters for OpenClaw 2.0 |
|---|---|---|
| CPU and RAM | Isolated vCPU and DDR5 RAM, starting at NVMe 4 | Predictable performance, plus the persistent storage SQLite sessions need to survive a restart |
| Docker support | Root-level Docker and Compose access | Clean deployment and rollback for OpenClaw itself, and for its plugins, skills and MCP connectors |
| Full root access | Complete control over the OS and services | Enforces OpenClaw’s security model at the system layer, including approvals and credential handling |
| Stable networking | Dedicated IP and unmetered bandwidth | Reliable webhook endpoints for every channel, old and new, with messages persisting through restarts |
Each pillar gets its own walkthrough below. Here’s the short version: Bluehost handles the hardware, the network, the virtualization layer. You take it from there. The operating system, the OpenClaw configuration in its rebuilt Control UI, the updates, the hardening. All of it runs through you.
Choosing the best VPS for OpenClaw comes down to one tradeoff. CPU and memory matter. A GPU mostly doesn’t, since inference happens at an API-based model provider, not on your server.
Want to skip the setup entirely? Bluehost OpenClaw VPS Hosting ships OpenClaw preinstalled, one click, same self-managed VPS underneath.
1. Dedicated CPU and RAM for predictable agent performance
Each Bluehost Self-Managed VPS is isolated, with its own vCPU and DDR5 RAM, so another workload’s heavy processing never slows yours down.
Start on NVMe 4: 2 vCPU, 4 GB DDR5 RAM, 100 GB NVMe storage. It’s both the starting tier and the functional minimum for OpenClaw, at $9.49/mo on a 24-month term, renewing at $11.99/mo.
That same NVMe storage holds OpenClaw 2.0’s SQLite session and transcript data, so a conversation resumes cleanly after a restart instead of starting over.
| VPSBenchmarks, May 2026 | NVMe 4 result |
|---|---|
| Best Value ranking | 2nd of 26 plans |
| Price-weighted score | 82/100 |
| Web performance | A |
| Network performance | A |
| Performance stability | A |
These numbers measure the VPS plan itself, not OpenClaw, and Bluehost takes part in VPSBenchmarks’ paid Featured Provider program.
Outgrown NVMe 4? Upgrade to NVMe 8 or NVMe 16 from the Portal. The upgrade restarts the server, and downgrades aren’t supported, so run OpenClaw’s guarded backup first.
2. Docker-friendly environment for consistent OpenClaw deployment
Bluehost Self-Managed VPS is well-suited for Docker-based deployments. Containerization simplifies how applications like OpenClaw are deployed, updated and maintained.
Running OpenClaw in containers provides several advantages:
- Consistent behavior across development and production environments
- Simplified dependency management by packaging applications with their required libraries
- Versioned container images, which make updates and rollbacks easier to manage
- Portable deployments that can run across servers
OpenClaw 2.0 builds on this container model directly: plugins, ClawHub skills and MCP connectors install through an admin-managed hub rather than a manual script, and a failed install rolls back to a retryable state instead of leaving the container in a broken one.
Docker Compose also makes it easier to deploy multi-service stacks, allowing OpenClaw to run alongside supporting tools, such as automation platforms or services, within a single coordinated environment.
3. Full server-level control for configuration and customization
Root access gives administrators deep control over the server environment, allowing them to install software, configure services and adapt the system to their deployment needs.
This flexibility supports OpenClaw deployments that require:
- Custom logging and operational visibility to track workflow execution and system activity
- Performance tuning based on workload requirements
- Integration with monitoring and alerting tools to observe container health and resource usage in real time
- Infrastructure-level configuration that allows the environment to be tailored for automation workloads
That level of control is also what lets OpenClaw enforce its security model at the system layer: credentials never pass through model-visible text, stale authority gets rechecked rather than assumed valid, and approvals stay bound to the exact request, command, session and person that triggered them, with device removal or re-pairing cutting off old access immediately.
Together, these capabilities make it easier to operate OpenClaw as a reliable, continuously running automation platform.
4. Stable networking for channels, APIs and automation flows
A dedicated IP address helps maintain stable webhook endpoints for OpenClaw workflows.
Messaging platforms, including Slack, Discord, Telegram and WhatsApp, along with newly added channels like Signal, Microsoft Teams and SMS/MMS through Twilio, rely on consistent endpoints to reliably deliver events and trigger automation.
Unmetered bandwidth, subject to the Terms of Service, also supports API-driven workflows. Automation processes can communicate with external services and messaging platforms without traffic limits interrupting operations.
OpenClaw 2.0 also tracks each channel’s connection state as usable, recovering or blocked, so a dropped connection doesn’t trigger a blind resend once service returns, and messages already in flight persist through a restart instead of getting lost.
Also read: Why Choose Bluehost VPS for OpenClaw?
What this looks like in practice
You’ve seen what the infrastructure provides. Here’s what that actually looks like when OpenClaw is running on it, start to finish, through a single restart:
- A nightly report automation is mid-run when the server restarts for a routine update
- Run history already shows what completed, so only the missed part resumes, no restart from zero
- A WhatsApp message arrives during that same window
- Bluehost brings the server back online, and OpenClaw delivers the message instead of dropping it
- The approval a teammate granted an hour earlier stays scoped to exactly the request it was granted for, nothing more
The infrastructure handles the restart, the reconnect, the scoped approval. What you do with it day to day is what determines whether OpenClaw actually runs well.
What are the best practices for running OpenClaw?
Running OpenClaw on a server means treating it like production infrastructure. A few security and operational habits protect your automation workflows and keep your system reliable.
1. Protect your gateway token
The gateway token authenticates every request to your OpenClaw instance. Anyone with this token can control your deployment, so handle it carefully:
- Keep the token in the
.envfile the setup script created and out of code repositories - Use separate tokens for development and production environments
- Rotate tokens regularly and immediately after any suspected exposure
- Never display tokens in logs or error messages
If a token is compromised, regenerate it immediately. To rotate, set a new token, update every client that uses it and confirm the old one no longer connects.
OpenClaw 2.0 binds every approval to the exact request, command, session and person that received it. Removing or re-pairing a device retires its old access:
docker compose run --rm openclaw-cli devices remove <deviceId>
2. Secure SSH access
SSH is the main way administrators access the server, so harden it against brute-force attacks. Make these changes in an order that keeps your own access working:
- Disable password authentication and use SSH keys instead
- Change the default SSH port (22) to reduce automated scanning
- Install fail2ban to block repeated failed login attempts
- Restrict SSH access to specific IP addresses when possible
Disable passwords only after key login as openclaw works. If you change the SSH port, allow it in UFW first and add -p [your-ssh-port] to your tunnel. Generate strong keys on your laptop:
ssh-keygen -t ed25519
3. Monitor uptime and performance
Even a well-configured server needs monitoring. The image’s built-in health check polls /healthz. External uptime services need a reachable endpoint, so point them at /health through your reverse proxy or private network.
Monitoring should track:
- HTTP endpoint availability
- Response time and latency
- Secure Sockets Layer (SSL) certificate expiration
- Server CPU, RAM and storage usage
Set up alerts through SMS, email or mobile notifications so you can respond quickly to outages. Combined access control, network protection and monitoring give OpenClaw a stable foundation.
Final thoughts
Treat the gateway as private infrastructure. Keep its port behind your firewall. Put the Control UI behind an SSH tunnel. Back up before every update. That’s what keeps a private OpenClaw server dependable.
Your next step is simple. Run a test conversation on one channel. Confirm the health checks. Then invite your team.
Want a server with OpenClaw 2.0 already installed? Bluehost OpenClaw VPS Hosting deploys it in one click, on a self-managed VPS. You keep root access for the firewall, channel and backup steps above, plus Automations that survive a restart. Explore Bluehost OpenClaw VPS Hosting and pick a plan for your agent.
The restart will always come. The only question is whether your setup was built for it before that moment, or finds out the hard way after.
FAQs
Yes. Bluehost OpenClaw VPS Hosting installs OpenClaw 2.0 on a Bluehost Self-Managed VPS when you buy the plan, so you can skip the Docker setup in this guide. You still manage the operating system, firewall, updates and integrations, because the plan is self-managed.
Self-host OpenClaw if you’re comfortable maintaining a Linux server, and consider a managed service if you’d rather hand off more of the operating work. Self-hosting gives you root access and control over configuration, updates and where credentials live. Compare the trade-offs in this guide to managed vs self-managed VPS for OpenClaw.
No. OpenClaw’s documentation treats Docker as optional and also supports the installer script, npm and source installs. This guide uses Docker because it keeps the gateway’s dependencies in a container, stores state in folders you can back up and makes updates repeatable on a VPS.
Yes, when everyone shares the same trust boundary and the agent handles business work only. OpenClaw’s docs recommend a dedicated server user and runtime, keeping personal accounts off it and running separate gateways for people who shouldn’t see each other’s data.
Yes. If you run Ollama on the same server, point OpenClaw at http://host.docker.internal:11434 from inside the container, because 127.0.0.1 refers to the container itself. Size the server for the model you choose, since local inference needs memory and CPU beyond what the gateway uses.

Write A Comment