OpenClaw Docker Compose + Portainer: Home Lab One-Click Setup
About This Guide: This tutorial covers deploying OpenClaw using Docker Compose with Portainer as a web-based GUI management interface. Perfect for home lab enthusiasts running Proxmox, TrueNAS, Synology DSM, or a bare Linux home server. Includes multi-agent stacks, one-click updates, and visual container monitoring. Estimated time: 20โ30 minutes.
If you're a home lab enthusiast, you already know that Portainer is the go-to web UI for Docker management. Combined with Docker Compose stacks, it transforms the way you deploy and manage self-hosted applications โ including OpenClaw.
Instead of memorizing Docker CLI commands or editing YAML files over SSH, Portainer gives you a beautiful web dashboard where you can start/stop containers, view logs, edit environment variables, update images, and even run a full shell โ all from your browser. For OpenClaw specifically, this means managing multiple AI agent instances visually, with one-click updates when new OpenClaw versions are released.
This guide works on any Linux system with Docker installed โ whether that's a Proxmox LXC container, a Synology NAS with Docker support, a dedicated home server, or a cloud VPS. We'll set up Portainer first, then deploy OpenClaw as a managed Docker Compose stack.
Why Docker + Portainer Is the Best Home Lab Setup
One-Click Updates
When OpenClaw releases a new version, Portainer lets you pull the latest image and recreate the container in a single click โ no SSH required.
Visual Monitoring
Real-time CPU, memory, and network stats for each OpenClaw container. Instantly spot issues without running complex commands.
Multi-Agent Stacks
Run multiple OpenClaw instances โ a personal agent, a work agent, and a family agent โ all isolated in separate containers with shared infrastructure.
Prerequisites & Supported Platforms
Supported Home Lab Setups
- โข Proxmox LXC container (Ubuntu/Debian)
- โข Synology NAS with Container Manager
- โข QNAP NAS with Container Station
- โข TrueNAS Scale (built-in Docker)
- โข Bare Linux home server (any distro)
- โข Raspberry Pi 4/5 (ARM64)
- โข Any cloud VPS with Docker
What You Need
- โข Docker Engine 24.0+ installed
- โข Docker Compose v2.20+ (included with Docker Desktop)
- โข 512 MB free RAM (1 GB+ recommended)
- โข 5 GB free storage
- โข An AI API key (Anthropic or OpenAI)
- โข A Telegram/Discord/WhatsApp bot token
Step 1: Install Docker Engine
Install Docker on Ubuntu/Debian (Recommended)
# Remove old Docker versions if present
sudo apt remove -y docker docker-engine docker.io containerd runc
# Install via official convenience script
curl -fsSL https://get.docker.com | sudo bash
# Add your user to the docker group (no sudo needed)
sudo usermod -aG docker $USER
newgrp docker
# Enable Docker to start at boot
sudo systemctl enable docker
sudo systemctl start docker
# Verify
docker --version
docker compose version
Verify Docker is Working
docker run hello-world
# Expected: "Hello from Docker!" message
docker ps
# Shows running containers (empty for now)
Step 2: Install Portainer Community Edition
Portainer CE is completely free and provides a full web GUI for Docker management. Deploy it with a single Docker command:
# Create Portainer data volume
docker volume create portainer_data
# Deploy Portainer CE
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Access Portainer
Open your browser and go to: https://YOUR-SERVER-IP:9443
Create an admin username and password on first access. Select "Get Started" to connect to the local Docker environment.
Home Lab Security Tip
Portainer exposes your entire Docker environment. Only access it on your local network. For external access, either use a VPN (like VPN07) to tunnel securely to your home network, or set up nginx with authentication in front of port 9443.
Step 3: Deploy OpenClaw as a Portainer Stack
In Portainer, navigate to Stacks โ Add stack. Name it "openclaw" and paste the following Docker Compose configuration:
Docker Compose Stack YAML (Single Agent)
version: "3.8"
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw-agent
restart: unless-stopped
environment:
- NODE_ENV=production
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- AI_MODEL=claude-3-5-sonnet-20241022
- MESSAGING_PLATFORM=telegram
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
- TELEGRAM_CHAT_ID=${TELEGRAM_CHAT_ID}
- ENABLE_MEMORY=true
- LOG_LEVEL=info
volumes:
- openclaw_data:/app/data
- openclaw_logs:/app/logs
networks:
- openclaw_net
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', r => process.exit(r.statusCode === 200 ? 0 : 1))"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
openclaw_data:
driver: local
openclaw_logs:
driver: local
networks:
openclaw_net:
driver: bridge
Environment Variables in Portainer
Scroll down in the Portainer stack editor to find the "Environment variables" section. Add your secret values here instead of hardcoding them in the YAML. Add:
- โข
ANTHROPIC_API_KEY= your key - โข
TELEGRAM_BOT_TOKEN= your bot token - โข
TELEGRAM_CHAT_ID= your chat ID
Advanced: Multi-Agent Docker Compose Stack
One of the most powerful features of running OpenClaw in Docker is the ability to run multiple independent agents simultaneously. Here's a stack with three agents โ personal, work, and family:
version: "3.8"
services:
# Personal AI Agent (Telegram)
openclaw-personal:
image: openclaw/openclaw:latest
container_name: openclaw-personal
restart: unless-stopped
environment:
- AGENT_NAME=Maya
- MESSAGING_PLATFORM=telegram
- TELEGRAM_BOT_TOKEN=${PERSONAL_BOT_TOKEN}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- DATA_DIR=/app/data/personal
volumes:
- personal_data:/app/data/personal
# Work AI Agent (Slack)
openclaw-work:
image: openclaw/openclaw:latest
container_name: openclaw-work
restart: unless-stopped
environment:
- AGENT_NAME=Jarvis
- MESSAGING_PLATFORM=slack
- SLACK_BOT_TOKEN=${WORK_SLACK_TOKEN}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- DATA_DIR=/app/data/work
volumes:
- work_data:/app/data/work
# Family AI Agent (WhatsApp)
openclaw-family:
image: openclaw/openclaw:latest
container_name: openclaw-family
restart: unless-stopped
environment:
- AGENT_NAME=Buddy
- MESSAGING_PLATFORM=whatsapp
- PHONE_NUMBER=${FAMILY_PHONE}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- DATA_DIR=/app/data/family
volumes:
- family_data:/app/data/family
volumes:
personal_data:
work_data:
family_data:
Managing OpenClaw via Portainer GUI
How to Update OpenClaw (One-Click)
- 1.In Portainer โ Stacks โ click "openclaw"
- 2.Click "Pull and redeploy"
- 3.Check "Pull latest image before redeploying"
- 4.Click "Update the stack" โ done in under 30 seconds!
Monitor Container Stats
Navigate to Containers โ openclaw-agent โ Stats to see real-time CPU, memory, and network usage. The memory graph is particularly useful for detecting OpenClaw memory leaks early.
Set up Portainer notifications (Settings โ Notifications) to get alerted if an OpenClaw container crashes โ delivered to your Slack or Telegram.
Access Container Shell
Need to edit the .env or check logs without SSH? Portainer โ Containers โ openclaw-agent โ Console โ click Connect. You get a full bash terminal directly in your browser โ incredibly useful for quick config changes.
Bonus: Auto-Update with Watchtower
Add Watchtower to your stack to automatically check for and apply OpenClaw updates on a schedule:
# Add to your docker-compose.yml
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_SCHEDULE=0 0 4 * * * # Check at 4am daily
- WATCHTOWER_NOTIFICATIONS=slack
- WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=${SLACK_WEBHOOK}
# Only update labeled containers for safety
- WATCHTOWER_LABEL_ENABLE=true
# Add this label to openclaw service:
# labels:
# - "com.centurylinklabs.watchtower.enable=true"
Caution: Test new OpenClaw versions manually before enabling auto-updates in production. Use the label filter to only auto-update non-critical agents.
Securing Your Home Lab OpenClaw with VPN07
Router-Level VPN for All Containers
The cleanest approach for home labs: configure VPN07 on your router (supports OpenVPN and WireGuard). All Docker containers โ including every OpenClaw instance โ automatically route through VPN07's 1000Mbps network without any per-container configuration. Your entire home lab benefits from optimized AI API routing and geo-restriction bypass.
VPN07 as a Docker Sidecar Container
Alternatively, route specific OpenClaw containers through VPN07 using a VPN sidecar pattern:
vpn07-sidecar:
image: vpn07/client:latest
container_name: vpn07
cap_add:
- NET_ADMIN
environment:
- VPN07_SERVER=sg1.vpn07.com
- VPN07_USER=${VPN07_USER}
- VPN07_PASS=${VPN07_PASS}
restart: unless-stopped
openclaw-agent:
image: openclaw/openclaw:latest
network_mode: "service:vpn07-sidecar"
depends_on:
- vpn07-sidecar
Common Docker + Portainer Issues
"Cannot connect to Docker daemon"
Cause: User not in docker group or Docker not started
Fix: sudo usermod -aG docker $USER && newgrp docker && sudo systemctl start docker
Portainer showing "No running endpoint"
Cause: Docker socket not properly mounted
Fix: Verify /var/run/docker.sock exists and Portainer has access: ls -la /var/run/docker.sock
OpenClaw container keeps restarting
Cause: Missing environment variables or incorrect API key
Fix: In Portainer โ Containers โ openclaw โ Logs. Check for "Error: Missing required env ANTHROPIC_API_KEY" or similar. Edit the stack's environment variables in Portainer and redeploy.
High API latency from home lab
Cause: Residential ISP routing to AI API endpoints is often indirect
Fix: Configure VPN07 at the router level โ your home lab's containers will automatically use VPN07's 1000Mbps optimized paths to AI provider APIs, reducing response times by up to 40%.
Complete Home Lab Setup Checklist
Before deploying OpenClaw to production in your Docker home lab, run through this checklist to ensure everything is configured correctly:
Docker Engine 24.0+ installed and running (docker --version)
Portainer CE deployed and accessible at https://YOUR-IP:9443
API keys ready: Anthropic or OpenAI API key with sufficient credit balance
Messaging platform configured: Telegram bot token OR Discord bot token OR WhatsApp number
Environment variables entered in Portainer stack editor (not hardcoded in YAML)
Volume mounts verified: openclaw_data and openclaw_logs created
Healthcheck passing: Container shows "healthy" status in Portainer containers list
First message sent: "Hello" to your Telegram/Discord bot โ received a reply from OpenClaw
VPN07 connected on your router or as Docker sidecar โ API response times under 2 seconds
Backup configured: Watchtower for updates, volume snapshot script scheduled via cron
After Your First Successful Deployment
Once OpenClaw is running in your Docker home lab, explore these next-level configurations:
Install Skills from ClawHub
Browse the official skill marketplace at openclaw.ai/skills โ one-command installs for GitHub, Google Calendar, Home Assistant, Notion, and 100+ more integrations.
Set Up Daily Briefings
Configure a cron heartbeat to deliver personalized morning summaries โ news, weather, calendar, tasks โ to your Telegram every morning at 7am automatically.
Connect to Obsidian
Mount your Obsidian vault as a Docker volume โ OpenClaw can read, create, and organize your notes, turning your knowledge base into an interactive AI-powered second brain.
Multi-Model Setup
Configure primary model (Claude for reasoning), fallback model (GPT-4), and local model (Ollama) โ OpenClaw auto-selects the best model for each task based on complexity and cost.
Real Home Lab Setups Running OpenClaw
Home lab enthusiasts around the world are running some creative OpenClaw setups with Docker Compose and Portainer. Here are some proven configurations to inspire your own:
The "NAS Companion" Stack
Running on a Synology DS923+ with Docker Manager alongside Plex, Nextcloud, and Home Assistant. OpenClaw acts as the intelligent layer connecting all services โ it can search Plex libraries, check Nextcloud calendars, and control Home Assistant automations, all from a single Telegram chat.
Stack: OpenClaw + Redis + Nginx Proxy Manager | Resources: 300MB RAM, 1% CPU idle | Uptime: 45+ days continuous
The "Family AI Hub" Setup
Three OpenClaw instances on a Raspberry Pi 5 cluster โ one per family member, each with different personas, skills, and permissions. The parent agent has admin skills for home automation, while children's agents have educational constraints. All managed visually in Portainer from a tablet.
Stack: 3ร OpenClaw + Portainer + Traefik | Resources: 450MB total RAM | Hardware: Raspberry Pi 5 (8GB)
The "Freelancer Command Center"
A freelance developer runs OpenClaw in Docker on an Intel NUC running Ubuntu. It monitors GitHub PRs, tracks Toggl time entries, sends invoice reminders via WhatsApp, and summarizes client Slack channels every morning. Portainer makes it easy to update OpenClaw and add new skills without touching the command line.
Stack: OpenClaw + Watchtower + Portainer | Skills: GitHub, Toggl, Slack, WhatsApp | VPN: VPN07 1000Mbps via router
Useful Portainer Compose Commands
# Pull latest OpenClaw image manually
docker pull openclaw/openclaw:latest
# Check which image version is running
docker inspect openclaw-agent | grep Image
# View resource usage for all containers
docker stats --no-stream
# Create a snapshot backup of OpenClaw data volume
docker run --rm \
-v openclaw_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/openclaw-backup-$(date +%Y%m%d).tar.gz /data
# Restore from backup
docker run --rm \
-v openclaw_data:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/openclaw-backup-20260311.tar.gz -C /
VPN07: The Home Lab Enthusiast's Choice
Trusted by 10 Years ยท 70+ Countries ยท 1000Mbps
Home lab Docker stacks need a VPN that's always-on, fast, and router-compatible. VPN07 supports OpenVPN and WireGuard on all major router firmwares (DD-WRT, OpenWrt, Asus Merlin) โ protecting your entire home lab with 1000Mbps bandwidth across 70+ countries. At just $1.5/month with a 30-day money-back guarantee, VPN07 is the most cost-effective network upgrade you can make for your AI agent home lab.
Related Articles
OpenClaw on Synology NAS & QNAP 2026
Run OpenClaw on your NAS using Docker or Container Manager โ complete setup guide for Synology DSM and QNAP QTS.
Read More โOpenClaw on Proxmox: Multi-Agent LXC Guide
Deploy multiple isolated OpenClaw instances using Proxmox LXC containers โ the ultimate home lab setup.
Read More โ