Hosting & Deployment Self-Hosted

OpenClaw on Proxmox: VM and LXC Container Deployment Guide

Deploy OpenClaw on Proxmox VE using either a virtual machine or a lightweight LXC container — with resource allocation, networking, and persistence configuration.

RN
R. Nakamura
Homelab Engineer
2025-02-05 16 min 5.6k views
Updated Mar 2025
Key Takeaways
LXC containers use 30-50% less RAM than VMs — recommended for most OpenClaw deployments on Proxmox.
Minimum allocation: 2 vCPU, 1GB RAM, 8GB storage. Use 2GB RAM for production workloads.
Unprivileged LXC containers work fine — OpenClaw needs no special kernel capabilities.
Proxmox vzdump backups cover the full container including config and agent data automatically.
Use a separate nginx LXC container as reverse proxy for clean networking and SSL termination.

Proxmox is the homelab standard for good reason — it gives you VM and container management, built-in backup, and live migration on commodity hardware. Deploying OpenClaw on Proxmox is the right call if you're already running the platform. Here's the complete guide.

VM vs LXC: Which to Choose

For OpenClaw specifically, LXC wins on every practical metric unless you have a specific reason for VM-level isolation.

  • LXC containers: 512MB-1GB RAM overhead, 5-second boot, shared kernel, instant resize
  • VMs: 512MB+ hypervisor overhead on top of the guest OS, 30-60s boot, full kernel isolation, more complex networking

Use a VM if you're pairing OpenClaw with GPU workloads (PCIe passthrough), running Windows-only dependencies, or your security requirements demand full kernel isolation. Otherwise, LXC is faster to set up and cheaper on resources.

💡
Use Debian 12 template for LXC
The Debian 12 LXC template from Proxmox's CT template library is the most stable choice for OpenClaw. It's actively maintained, has the smallest footprint, and all OpenClaw dependencies install cleanly. Download it from Datacenter > Storage > CT Templates > Templates.

LXC Container Setup

# In Proxmox web UI: Create CT
# Template: debian-12-standard
# CPU: 2 cores
# RAM: 2048 MB
# Swap: 512 MB
# Disk: 8 GB on local-lvm
# Network: vmbr0, DHCP or static IP

# After container starts, open console:
apt update && apt upgrade -y
apt install python3.11 python3.11-venv python3-pip -y

useradd -m -s /bin/bash openclaw
su - openclaw
python3.11 -m venv /home/openclaw/venv
source /home/openclaw/venv/bin/activate
pip install openclaw
openclaw init

Create the systemd service (same as the self-hosted guide), then enable and start it. The container auto-starts with Proxmox if you set Start at boot in the container options.

⚠
Set a static IP for webhook reliability
DHCP leases can change after container restarts, breaking your webhook URLs. Assign a static IP in the container's network config or reserve the MAC address in your router's DHCP settings. This takes 2 minutes and prevents hard-to-debug webhook failures.

VM Setup

If you choose a VM: create a new VM with 2 vCPU, 2048MB RAM, and a 20GB virtio disk. Install Ubuntu 22.04 from ISO. After installation, follow the same steps as the self-hosted guide — the process is identical to any Ubuntu server deployment.

Enable the QEMU Guest Agent for better Proxmox integration:

apt install qemu-guest-agent -y
systemctl enable qemu-guest-agent
systemctl start qemu-guest-agent

Networking & Reverse Proxy

The cleanest Proxmox networking pattern for OpenClaw is a dedicated nginx LXC container on the same bridge network:

  • nginx-proxy LXC: public IP, handles SSL termination and reverse proxy to OpenClaw
  • openclaw LXC: internal IP only, not directly accessible from outside

This means if your nginx container is ever compromised, it doesn't have access to the OpenClaw container's filesystem or config. Configure the nginx container with Certbot for Let's Encrypt SSL, then proxy to the OpenClaw container's internal IP.

Common Mistakes

Allocating too little RAM and then wondering why skills fail silently. 512MB isn't enough for OpenClaw plus the Python runtime plus skill libraries. Start at 1GB minimum, 2GB for comfort.

  • Forgetting to set Start at boot — after a Proxmox host restart, your container won't come back up unless Start at boot is enabled in Options.
  • Not scheduling vzdump backups — Proxmox makes backups trivial to schedule. Set up nightly backups before deploying any production workloads.
  • Using bridged networking without firewall rules — the Proxmox firewall is disabled by default. Enable it and allow only ports 22, 80, 443 on public-facing containers.
  • Storing config on tmpfs — some Proxmox templates mount /tmp as tmpfs. Make sure your OpenClaw config directory is on persistent storage, not a tmpfs path.

Frequently Asked Questions

Should I use a VM or LXC for OpenClaw on Proxmox?
LXC containers use 30-50% less RAM and boot in seconds — recommended unless you need kernel-level isolation or GPU passthrough.

What resources should I allocate to the LXC container?
2 vCPU, 1GB RAM minimum; 2GB for production. 8GB storage. LXC containers can be resized without downtime on Proxmox.

Can I run OpenClaw in an unprivileged LXC container?
Yes. Unprivileged containers are the secure default and work fine — OpenClaw needs no special kernel capabilities.

How do I expose OpenClaw webhooks to the internet?
Use Proxmox firewall rules and router port forwarding, or a separate nginx LXC container on the same bridge network as a reverse proxy.

Does OpenClaw support Proxmox backups?
Yes. OpenClaw's data is stored in the container filesystem, so it's included in vzdump backups automatically. Schedule nightly backups in the Datacenter > Backup panel.

Can I live-migrate an OpenClaw LXC container?
Yes. LXC containers migrate between Proxmox nodes with minimal downtime using Proxmox's migration tool, provided both nodes share the same storage backend.

RN
R. Nakamura
Homelab Engineer · aiagentsguides.com

R. Nakamura runs a production Proxmox homelab and documents OpenClaw self-hosted deployments at aiagentsguides.com.

Get the OpenClaw Weekly

New guides, tips, and updates every week. Free forever.