Get OpenClaw running on Proxmox in 5 minutes!
- Proxmox VE accessible
- Ubuntu cloud-init template created (see PROXMOX_SETUP.md)
- Proxmox API token generated
- Local SSH key exists (~/.ssh/id_rsa)
cd openclaw
./scripts/setup.shThis will:
- Install Terraform and Ansible if needed
- Create configuration files from templates
- Install required Ansible collections
Edit terraform/terraform.tfvars:
proxmox_host = "192.168.1.100:8006"
proxmox_api_token_id = "root@pam!terraform"
proxmox_api_token_secret = "your-token-here"
proxmox_node = "pve"Optionally customize ansible/inventory/group_vars/all.yml:
timezone: "America/New_York"
openclaw_port: 8080./scripts/deploy.sh --fullThat's it! OpenClaw is now running.
After deployment completes, you'll see:
OpenClaw is now running at: http://192.168.1.150:8080
Open that URL in your browser!
- ✅ Ubuntu 22.04 VM on Proxmox
- ✅ Docker and Docker Compose installed
- ✅ Firewall configured
- ✅ OpenClaw running in containers
- ✅ Automatic security updates enabled
# View status
./scripts/manage.sh status
# View logs
./scripts/manage.sh logs
# Restart services
./scripts/manage.sh restart
# SSH into VM
./scripts/manage.sh ssh
# Create backup
./scripts/manage.sh backup
# Update application
./scripts/manage.sh update
# Destroy everything
./scripts/deploy.sh --destroySkip Terraform and just configure:
# Edit inventory with your VM IP
cp ansible/inventory/hosts.example ansible/inventory/hosts
# Edit: ansible/inventory/hosts
# Deploy
./scripts/deploy.sh --ansible-only# Test API access
curl -k "https://your-proxmox-ip:8006/api2/json/nodes" \
-H "Authorization: PVEAPIToken=root@pam!terraform=your-secret"# Wait a bit more - cloud-init takes time
sleep 30
# Check VM in Proxmox console
# Verify IP address in inventory matches actual IP# Test SSH directly
ssh ubuntu@<vm-ip>
# Check inventory file
cat ansible/inventory/hostsAlternatively, use make commands:
make setup # Run setup
make deploy-full # Full deployment
make destroy # Destroy infrastructureSee all commands:
make helpOnce running:
- Configure SSL/TLS: Set up Let's Encrypt for HTTPS
- Setup Monitoring: Add Prometheus/Grafana
- Configure Backups: Schedule automated backups
- Review Firewall: Adjust ports as needed
See DEPLOYMENT.md for advanced topics.
Don't want to use Terraform? Use Ansible to provision VMs:
cd ansible
ansible-playbook playbooks/provision-with-ansible.ymlEdit variables in the playbook first!
┌─────────────────┐
│ Local Machine │
│ (You) │
└────────┬────────┘
│ Terraform creates VM
│ Ansible configures VM
▼
┌─────────────────┐
│ Proxmox Host │
│ │
│ ┌───────────┐ │
│ │ Ubuntu VM │ │
│ │ │ │
│ │ ┌───────┐ │ │
│ │ │Docker │ │ │
│ │ │ │ │ │
│ │ │OpenClaw│ │
│ │ └───────┘ │ │
│ └───────────┘ │
└─────────────────┘
- VM Creation: 1-2 minutes
- System Configuration: 2-3 minutes
- Application Deployment: 1-2 minutes
- Total: ~5-7 minutes
Absolutely minimal deployment:
# 1. Setup
./scripts/setup.sh
# 2. Edit terraform/terraform.tfvars (add your Proxmox details)
# 3. Deploy
./scripts/deploy.sh --full
# Done!- Local: 1GB disk space for tools
- Proxmox: 8GB RAM + 50GB disk (configurable)
- Network: SSH (22), HTTP (8080)
You'll know it worked when:
- ✅ Script shows "Deployment Complete!"
- ✅ You can access http://vm-ip:8080
- ✅
./scripts/manage.sh statusshows running containers
Having issues? Check logs:
# Terraform logs
cd terraform && terraform show
# Ansible logs (verbose)
cd ansible && ansible-playbook -vvv -i inventory/hosts playbooks/site.yml
# Application logs
./scripts/manage.sh logsReady to deploy? Start with ./scripts/setup.sh! 🚀