Prerequisites
RamNode VPS Requirements
| Spec | Minimum | Recommended |
|---|---|---|
| CPU Cores | 1 vCPU | 2+ vCPUs |
| RAM | 1 GB | 2–4 GB |
| Storage | 20 GB SSD | 40+ GB NVMe |
| OS | Ubuntu 22.04+ | Ubuntu 24.04 LTS |
| Network | 1 Gbps | 1 Gbps unmetered |
RamNode's Premium KVM VPS plans with NVMe storage are ideal for this deployment. The 2 GB plan provides a comfortable baseline for running OpenClaw with cloud-based LLM providers.
Additional Requirements
- An API key from a supported LLM provider (Anthropic, OpenAI, Google, or local model)
- A domain name (optional but recommended for webhook integrations)
- Messaging platform credentials (WhatsApp, Telegram, Discord, Slack, etc.)
- SSH key pair for secure server access
Provision Your RamNode VPS
- Log into the RamNode client portal at ramnode.com and navigate to the VPS section.
- Select a Premium KVM plan with at least 2 GB RAM and Ubuntu 24.04 LTS as the operating system.
- Choose a datacenter location closest to your primary usage region:
- US: Atlanta, Los Angeles, New York, Seattle
- EU: Netherlands
Initial Server Configuration
Connect and Update
ssh root@YOUR_SERVER_IP
apt update && apt upgrade -y
rebootCreate a Dedicated User
Avoid running OpenClaw as root. Create a dedicated service user:
adduser --disabled-password --gecos '' openclaw
usermod -aG sudo openclaw
mkdir -p /home/openclaw/.ssh
cp ~/.ssh/authorized_keys /home/openclaw/.ssh/
chown -R openclaw:openclaw /home/openclaw/.ssh
chmod 700 /home/openclaw/.ssh
chmod 600 /home/openclaw/.ssh/authorized_keysConfigure the Firewall
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment 'SSH'
ufw allow 18789/tcp comment 'OpenClaw Gateway'
ufw enableIf you plan to use webhook integrations or a web UI, you may also need to open ports 80 and 443 for HTTP/HTTPS traffic behind a reverse proxy.
Harden SSH
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshdSecurity Warning: OpenClaw requires broad permissions to function as an autonomous agent. Running it on an isolated VPS rather than a machine with access to sensitive production systems significantly reduces risk. Never store credentials for critical infrastructure on the same server.
Install Node.js 22
OpenClaw requires Node.js version 22 or higher. Install it using the NodeSource repository:
su - openclaw
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node --version # Verify: should be v22.x.x
npm --version # Verify: should be 10.x+Install pnpm (Optional)
sudo npm install -g pnpmInstall OpenClaw
Configure OpenClaw
Run the onboarding wizard, which guides you through LLM provider setup, messaging channel pairing, and daemon installation:
openclaw onboard --install-daemonLLM Provider
Select your preferred AI model provider and enter your API key. Supported providers include Anthropic (Claude), OpenAI, Google (Gemini), and local model endpoints via OpenRouter or Ollama.
Messaging Channels
| Channel | Setup Method |
|---|---|
| QR code pairing via terminal | |
| Telegram | Bot token from @BotFather |
| Discord | Bot token from Discord Developer Portal |
| Slack | App manifest and OAuth tokens |
| Signal | Signal CLI or linked device pairing |
| Matrix | Homeserver URL + access token |
DM Policy and Pairing
By default, OpenClaw uses a pairing-based DM policy. Unknown senders receive a pairing code and their messages are not processed until approved:
openclaw pairing approve <channel> <code>For personal deployments on a private VPS, this pairing mechanism is your first line of defense against unauthorized access to your assistant.
Run as systemd Service
The onboard wizard with --install-daemon will configure a systemd user service automatically. To verify it's running:
systemctl --user status openclaw-gatewayManual Service Configuration
If you need to create or customize the service manually:
mkdir -p ~/.config/systemd/user/
cat > ~/.config/systemd/user/openclaw-gateway.service << 'EOF'
[Unit]
Description=OpenClaw Gateway Daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/openclaw gateway --port 18789
Restart=always
RestartSec=10
Environment=NODE_ENV=production
[Install]
WantedBy=default.target
EOFsystemctl --user daemon-reload
systemctl --user enable openclaw-gateway
systemctl --user start openclaw-gateway
sudo loginctl enable-linger openclawThe enable-linger command ensures the user service starts at boot, even when the openclaw user is not logged in. This is critical for 24/7 operation.
Verify the Deployment
Run the built-in diagnostics tool to confirm everything is configured correctly:
openclaw doctorSend a Test Message
openclaw agent --message "Hello from RamNode!" --thinking highYou should receive a response from your OpenClaw instance on the connected platform. If the gateway is running correctly, you can also interact by simply sending a message to your bot on WhatsApp, Telegram, Discord, or whichever channel you configured.
ClawBot & Integrations
ClawBot is the conversational interface layer of OpenClaw that handles message routing, context management, and skill orchestration across all connected platforms.
ClawBot Configuration
# ~/.openclaw/clawbot.yaml
bot:
name: "Assistant"
personality: "helpful and concise"
language: "en"
max_context_messages: 50
thinking_mode: "balanced" # low, balanced, high
memory:
enabled: true
persistence: "local" # local, redis, postgres
ttl: 86400 # seconds
rate_limits:
messages_per_minute: 20
messages_per_hour: 200Webhook Integrations
OpenClaw supports outbound webhooks for integrating with external services:
openclaw webhook add --name "notify-slack" \
--url "https://hooks.slack.com/services/XXX" \
--events "task.completed,reminder.triggered"
openclaw webhook add --name "log-to-n8n" \
--url "https://your-n8n.example.com/webhook/openclaw" \
--events "*"
# List configured webhooks
openclaw webhook list
# Test a webhook
openclaw webhook test notify-slackAPI Integration
OpenClaw exposes a REST API for programmatic interaction:
# Base URL: http://localhost:18789/api/v1
# Send a message
POST /messages
{
"content": "What's on my calendar today?",
"channel": "api",
"user_id": "api-user"
}
# List active skills
GET /skills
# Manage memory
GET /memory?query=meeting+notes
DELETE /memory/:id
# Health check
GET /healthcurl -X POST http://localhost:18789/api/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(openclaw token generate)" \
-d '{"content": "Summarize my unread emails", "channel": "api"}'Third-Party Integrations
Custom Skills from ClawHub
# Browse available skills
openclaw skills search "productivity"
# Install a skill
openclaw skills install clawhub/pomodoro-timer
openclaw skills install clawhub/expense-tracker
openclaw skills install clawhub/code-reviewer
# List installed skills
openclaw skills list
# Remove a skill
openclaw skills remove pomodoro-timerSkills extend ClawBot's capabilities with specialized functions. Always review a skill's permissions and source code before installation, especially for skills that access sensitive data or execute system commands.
Security Best Practices
Security Warning: OpenClaw operates as an autonomous agent with access to shell commands, file systems, and connected services. Treat your OpenClaw VPS as a privileged endpoint and apply defense-in-depth principles.
Updating OpenClaw
OpenClaw follows a rolling release model. To update to the latest stable version:
npm install -g openclaw@latest
openclaw doctor
systemctl --user restart openclaw-gatewayBeta Channel
openclaw update --channel betaTroubleshooting
| Issue | Solution |
|---|---|
| Gateway won't start | Check logs: journalctl --user -u openclaw-gateway. Verify Node.js 22+ is installed. |
| WhatsApp disconnects | Re-scan the QR code. WhatsApp Web sessions expire periodically. Consider using the multi-device beta. |
| Permission denied errors | Ensure openclaw user has write access to its home directory and configuration files. |
| High memory usage | Reduce concurrent agent threads in config. Disable unused skills. Upgrade to a higher-RAM RamNode plan. |
| Port 18789 unreachable | Verify UFW rule: ufw status. Check that the gateway is bound to 0.0.0.0. |
| API key errors | Re-run openclaw onboard to reconfigure your LLM provider credentials. |
Quick Reference Commands
# Start / stop / restart:
systemctl --user start openclaw-gateway
systemctl --user stop openclaw-gateway
systemctl --user restart openclaw-gateway
# View logs:
journalctl --user -u openclaw-gateway -f
# Health check:
openclaw doctor
# Send a test message:
openclaw agent --message "Test" --thinking high
# Update:
npm install -g openclaw@latest
# Verbose gateway mode:
openclaw gateway --port 18789 --verboseOpenClaw Deployed Successfully!
Your OpenClaw instance is now running on RamNode's infrastructure, providing you with a self-hosted, always-on AI assistant accessible from any of your configured messaging platforms. For additional configuration options, skill development, and community support, visit the official documentation at openclaw.ai.
