Production Deployment
Deploy OpenClaw for production use with monitoring, security, and scaling.
π― What Youβll Learn
Production deployment strategies for OpenClaw:
- Run OpenClaw as a service/daemon
- Configure remote access securely
- Monitor gateway health
- Implement backup strategies
- Scale for multiple users
- Security best practices
π Prerequisites
- β Completed Custom Skill Development
- β OpenClaw tested and working locally
- β Basic system administration knowledge
- β Understanding of networking fundamentals
π οΈ Understanding OpenClaw Production Deployment
OpenClaw is designed for production use:
- Gateway daemon: Runs continuously as a background service
- Remote access: Access from anywhere via SSH tunnels or Tailscale
- Multi-user support: Different channels and workspaces
- Production monitoring: Health checks, logging, metrics
π Step 1: Install as System Service (10 minutes)
Install OpenClaw
# Install globally
npm install -g openclaw@latest
# Verify installation
openclaw --version
Configure Daemon
# Run the onboarding wizard with daemon installation
openclaw onboard --install-daemon
# This installs OpenClaw as:
# - macOS: launchd service
# - Linux: systemd service
# - Windows: Windows service
Service Management
# Start the service
openclaw gateway start
# Check status
openclaw status
# View logs
openclaw logs
# Stop the service
openclaw gateway stop
# Restart
openclaw gateway restart
Verify Gateway is Running
# Test health endpoint
curl http://localhost:18789/health
# Expected response
{"status":"ok","version":"x.x.x"}
π Step 2: Configure Remote Access (12 minutes)
Method 1: SSH Tunneling (Recommended for Servers)
# On your remote machine, start OpenClaw
openclaw gateway start
# On your local machine, create SSH tunnel
ssh -L 18789:localhost:18789 user@remote-server
# Now access from local machine
open http://localhost:18789
Method 2: Tailscale (Recommended for Home/Small Office)
# Install Tailscale on both machines
curl -fsSL https://tailscale.com/install.sh | sh
# Connect to your tailnet
sudo tailscale up
# Configure OpenClaw to use Tailscale
# Edit ~/.openclaw/openclaw.json
In openclaw.json:
{
"gateway": {
"tailscale": {
"mode": "serve"
}
}
}
Method 3: Direct Exposure (Use with Caution)
# Only do this behind a firewall!
# Configure in openclaw.json:
{
"gateway": {
"bind": "0.0.0.0",
"auth": {
"mode": "password",
"password": "your-secure-password-here"
}
}
}
β οΈ Security: Never expose OpenClaw directly to the internet without authentication!
π Step 3: Security Configuration (15 minutes)
Enable Authentication
# Edit configuration
nano ~/.openclaw/openclaw.json
{
"gateway": {
"auth": {
"mode": "password",
"password": "change-this-secure-password"
}
}
}
Configure Channel Security
For each channel (WhatsApp, Telegram, etc.):
{
"channels": {
"telegram": {
"dmPolicy": "pairing"
},
"discord": {
"dmPolicy": "pairing"
}
}
}
Environment Variables
# Set up environment variables
export OPENCLAW_ENCRYPTION_KEY="your-key-here"
export OPENCLAW_LOG_LEVEL="info"
# Or use .env file (recommended)
echo "OPENCLAW_ENCRYPTION_KEY=your-key-here" >> ~/.openclaw/.env
Update Regularly
# Update OpenClaw
npm update -g openclaw@latest
# Restart service after updates
openclaw gateway restart
π Step 4: Monitoring and Logging (12 minutes)
Enable Detailed Logging
# Run with verbose logging
openclaw gateway --verbose
# Or configure in openclaw.json
{
"logging": {
"level": "verbose",
"file": "/var/log/openclaw/gateway.log"
}
}
Health Checks
# Create cron job for health checks
crontab -e
# Add health check (runs every 5 minutes)
*/5 * * * * curl -f http://localhost:18789/health || openclaw gateway start
Log Rotation
# On Linux, configure logrotate
sudo nano /etc/logrotate.d/openclaw
/var/log/openclaw/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 openclaw openclaw
}
Performance Monitoring
# Monitor resource usage
htop
# Check gateway process
ps aux | grep openclaw
# Check port usage
lsof -i :18789
# Monitor logs in real-time
tail -f ~/.openclaw/logs/gateway.log
πΎ Step 5: Backup Strategies (10 minutes)
Backup Configuration
# Backup OpenClaw configuration
cp -r ~/.openclaw ~/backups/openclaw-config-$(date +%Y%m%d)/
Backup Skills
# Backup your custom skills
cp -r ~/.openclaw/workspace/skills ~/backups/skills-$(date +%Y%m%d)/
Automated Backup Script
#!/bin/bash
# backup-openclaw.sh
BACKUP_DIR="$HOME/backups/openclaw-$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
# Backup config
cp -r ~/.openclaw/openclaw.json "$BACKUP_DIR/"
# Backup workspace
cp -r ~/.openclaw/workspace "$BACKUP_DIR/"
# Backup credentials (if encrypted)
cp -r ~/.openclaw/credentials "$BACKUP_DIR/"
# Compress
tar -czf "$BACKUP_DIR.tar.gz" "$BACKUP_DIR"
rm -rf "$BACKUP_DIR"
# Keep last 30 days
find ~/backups -name "openclaw-*.tar.gz" -mtime +30 -delete
Add to crontab:
0 2 * * * ~/scripts/backup-openclaw.sh
π Step 6: Scaling Considerations (10 minutes)
Multiple Gateways
For high availability:
# Run on different ports
openclaw gateway --port 18789 & # Gateway 1
openclaw gateway --port 18790 & # Gateway 2
openclaw gateway --port 18791 & # Gateway 3
Load Balancing
Use a reverse proxy (nginx):
upstream openclaw_gateways {
server 127.0.0.1:18789;
server 127.0.0.1:18790;
server 127.0.0.1:18791;
}
server {
listen 80;
server_name openclaw.example.com;
location / {
proxy_pass http://openclaw_gateways;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Resource Management
Configure in openclaw.json:
{
"gateway": {
"resources": {
"maxMemory": "2GB",
"maxCpu": "80%"
}
}
}
π Step 7: Troubleshooting Production Issues (8 minutes)
Issue: Gateway Not Starting
Diagnose:
# Check if port is in use
lsof -i :18789
# Check logs
openclaw logs
# Test configuration
openclaw doctor
Solution:
# Kill existing process if needed
killall -9 openclaw
# Fix configuration
openclaw onboard --install-daemon
# Restart
openclaw gateway start
Issue: Channels Disconnecting
Check:
# Verify internet connection
ping google.com
# Check channel credentials
openclaw channels test
# View channel status
openclaw channels list
Solution:
# Re-authenticate channel
openclaw channels login --type telegram
# Or re-run onboarding
openclaw onboard
Issue: High Memory Usage
Diagnose:
# Check memory usage
ps aux | grep openclaw
# Monitor over time
watch -n 5 'ps aux | grep openclaw'
Solution:
# Restart gateway
openclaw gateway restart
# Or configure memory limits in openclaw.json
π Security Best Practices
1. Keep Updated
# Regularly check for updates
npm outdated -g openclaw
# Update regularly
npm update -g openclaw@latest
2. Use Strong Authentication
{
"gateway": {
"auth": {
"mode": "password",
"password": "use-long-random-password-here!"
}
}
}
3. Network Security
# Use firewall
ufw allow 22/tcp
ufw allow from 192.168.1.0/24 to any port 18789
ufw enable
4. Monitor Access
# Check who's accessing
tail -f ~/.openclaw/logs/access.log
# Block suspicious IPs
# (configure in openclaw.json)
5. Secure Credentials
# Never commit credentials
echo "~/.openclaw/" >> .gitignore
echo "*.env" >> .gitignore
π Deployment Scenarios
Scenario 1: Home Server
# Install on home server/NAS
openclaw onboard --install-daemon
# Access via local network
http://homeserver.local:18789
# Set up Tailscale for remote access
# Configure channels (WhatsApp, Telegram)
Scenario 2: Cloud VPS
# On VPS (Ubuntu/Debian)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install -g openclaw@latest
openclaw onboard --install-daemon
# Set up SSH tunnel for access
# Or configure Tailscale
Scenario 3: Docker Deployment
FROM node:22-slim
RUN npm install -g openclaw@latest
# Copy configuration
COPY openclaw.json /root/.openclaw/
# Expose port
EXPOSE 18789
# Start gateway
CMD ["openclaw", "gateway", "--port", "18789"]
# docker-compose.yml
version: '3.8'
services:
openclaw:
build: .
ports:
- "18789:18789"
volumes:
- ./config:/root/.openclaw
restart: unless-stopped
β Production Checklist
Before going to production:
- Daemon/service installed
- Remote access configured
- Authentication enabled
- Channels connected
- Logging configured
- Backups automated
- Monitoring set up
- Security reviewed
- Documentation updated
- Tested with real workload
π― Whatβs Next?
- β‘ Performance Optimization - Optimize for scale
- π¨ Custom Skills - Extend functionality
- π Skills Library - Find production-ready skills
π Need Help?
- π¬ Community Discord - Get help from other users
- π Deployment Guide - Detailed deployment docs
- ποΈ GitHub Issues - Report problems
- π Showcase - See production deployments
β±οΈ Total Time: 90 minutes π Difficulty: Advanced π― Result: Production-ready OpenClaw deployment
Congratulations!
You've completed this tutorial. Ready for the next challenge?