Coding

Proxmox Create Vm

Try it

Create Ubuntu 24.04 LXC containers or full VMs on Proxmox VE. Docker-ready with Compose v2. Handles nesting for Docker-in-LXC, auto-picks next available CTID...

What it does

Create Ubuntu 24.04 LXC containers or full VMs on Proxmox VE. Returns a Docker-ready host with SSH access.

The skill document

Proxmox VM/Container Creator

Create Ubuntu 24.04 LXC containers or full VMs on Proxmox VE. Returns a Docker-ready host with SSH access.

When to Use

  • "create proxmox vm"
  • "create proxmox container"
  • "spin up lxc"
  • "new container on proxmox-host"
  • Any time you need a fresh Linux host on Proxmox

This is a base skill. It creates the infrastructure. Other skills deploy applications onto it.

LXC vs VM Decision Guide

Use LXC whenUse VM when
Running Docker containers (TheHive, MISP, etc.)Security Onion, Zeek with AF_PACKET
Lightweight servicesNeed custom kernel modules
Want fast startup (~5 seconds)Need full OS isolation
Most SOC toolsNetwork monitoring with raw sockets

Default: LXC. Only use VM when the application explicitly needs kernel access.

User Inputs

ParameterDefaultRequired
Name-Yes
Proxmox hostproxmox-host (YOUR_PROXMOX_IP)No
TypelxcNo (lxc or vm)
CPU cores2No
RAM (MB)4096No
Disk (GB)8No
Extra packages-No

Prerequisites Check

# SSH to Proxmox
ssh proxmox-host "pveversion" || echo "FAIL: Cannot SSH to Proxmox host"

# Check template (LXC)
ssh proxmox-host "pveam list local | grep ubuntu-24.04" || echo "Template not cached, will download"

# Find next CTID
ssh proxmox-host "pct list" | tail -n +2 | awk '{print $1}' | sort -n | tail -1
# Use max + 1

Execution Flow: LXC Container

Step 1: Ensure template is cached

ssh proxmox-host "pveam list local | grep ubuntu-24.04 || pveam download local ubuntu-24.04-standard_24.04-2_amd64.tar.zst"

Step 2: Find next available CTID

NEXT_CTID=$(ssh proxmox-host "cat <(pct list | tail -n +2 | awk '{print \$1}') <(qm list | tail -n +2 | awk '{print \$1}') 2>/dev/null | sort -n | tail -1")
NEXT_CTID=$((NEXT_CTID + 1))

Step 3: Create container

ssh proxmox-host "pct create $CTID local:vztmpl/ubuntu-24.04-standard_24.04-2_amd64.tar.zst \
  --hostname  \
  --memory  \
  --cores  \
  --rootfs local-lvm: \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --unprivileged 1 \
  --features nesting=1 \
  --start 1"

Key flags:

  • --unprivileged 1: Security best practice
  • --features nesting=1: Required for Docker inside LXC
  • --start 1: Start immediately after creation

Step 4: Wait for boot and get IP

sleep 10  # LXC boots in ~5 seconds

# Get IP from Proxmox
ssh proxmox-host "pct exec $CTID -- hostname -I"

# Or from DHCP
ssh proxmox-host "pct exec $CTID -- ip -4 addr show eth0 | grep inet | awk '{print \$2}' | cut -d/ -f1"

Step 5: Post-boot Docker setup

bash scripts/post-boot-setup.sh proxmox-host $CTID

Or manually:

ssh proxmox-host "pct exec $CTID -- bash -c '
  apt-get update -qq
  apt-get install -y -qq docker.io curl git htop
  systemctl enable docker && systemctl start docker
  mkdir -p /usr/local/lib/docker/cli-plugins
  curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
  chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
'"

Step 6: Verify

ssh proxmox-host "pct exec $CTID -- docker --version && pct exec $CTID -- docker compose version"

Execution Flow: Full VM

Use scripts/create-vm.sh for full VMs when LXC won't work:

ssh proxmox-host "qm create $VMID --name  --memory  --cores  \
  --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci \
  --scsi0 local-lvm:,format=raw --ide2 local-lvm:cloudinit \
  --boot c --bootdisk scsi0 --serial0 socket --vga serial0 \
  --ciuser deploy --cipassword  --ipconfig0 ip=dhcp \
  --start 1"

Return Values

Report to caller:

Container/VM Created: 
CTID/VMID: 
Type: lxc | vm
IP: 
SSH: root@ (LXC) or deploy@ (VM)
Docker: installed
Docker Compose v2: installed

Teardown

# LXC
ssh proxmox-host "pct stop $CTID && pct destroy $CTID --purge"

# VM
ssh proxmox-host "qm stop $VMID && qm destroy $VMID --purge"

Critical Gotchas

See references/gotchas.md for full details:

  1. Docker in LXC needs nesting=1: Without --features nesting=1, Docker fails to create networks
  2. LXC limitations: No custom kernel modules, no raw sockets (AF_PACKET). Use VM for Security Onion, Zeek
  3. Template caching: pveam download is slow first time. Check pveam list local first
  4. CTID conflicts: Always check pct list before picking a CTID
  5. Disk is thin-provisioned: 770GB free in pool but containers can fill up fast
  6. Wazuh (CTID 105): 99.3% full at 25GB. Don't colocate storage-heavy services

Related skills

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván854 installs69 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván555 installs18 stars

Post videos, photos, text, and documents to 10 social platforms through a single REST API call.

by victorcavero14375 installs50 stars

Trade crypto, manage a multi-chain wallet, and query an AI analyst from one CLI.

by lowesyang162 installs109 stars

More from solomonneas

Browse all skills

Essential penetration testing command reference. Quick lookup for nmap, Metasploit, hydra, john, nikto, gobuster, and other offensive security tools. Covers...

by Solomon Neas65 installs1 stars

Memory forensics with Volatility and related tools. Acquire RAM dumps, extract processes and DLLs, investigate rootkits and fileless malware, recover credent...

by solomonneas31 installs1 stars

This skill should be used when the user asks to "run pentest commands", "scan with nmap", "use metasploit exploits", "crack passwords with hydra or john", "s...

by solomonneas36 installs

Expert malware analysis for defensive security research. Static and dynamic analysis, sandbox triage, IOC extraction, unpacking, and malware family identific...

by solomonneas31 installs

Knowledge card memory system with semantic search. Agents wake up fresh each session but remember everything through atomic ~350-token cards with YAML frontm...

by solomonneas28 installs

Network traffic analysis with Wireshark and tshark. Capture packets, write display and BPF filters, follow TCP/UDP/TLS streams, detect C2 beacons, troublesho...

by solomonneas27 installs