---
title: "LXC Migration Quick Start"
description: "Quick reference for VM-to-LXC migration on Proxmox: wave order, LXC creation commands, Docker volume migration, cutover process, and rollback procedures."
type: runbook
domain: vm-management
tags: [proxmox, lxc, migration, docker, containers]
---

# VM to LXC Migration - Quick Start Guide

**Status**: Approved & Ready for Execution
**Last Updated**: 2025-01-12

## ✅ Confirmed Decisions
- **Networking**: Reuse existing IP addresses
- **Storage**: Fresh install + volume copy for Docker hosts
- **Timeline**: 4-6 weeks (expected to accelerate)
- **GPU**: No GPU hardware - all services can migrate

## Migration Order (Risk-Based)

### Wave 1: docker-7days (111) - LOWEST RISK
**Goal**: Validate entire migration process
- Non-critical game server
- Docker-in-LXC test
- Build confidence

### Wave 2: docker-pittsburgh (114) + docker-vpn (105)
**Goal**: Regional/isolated Docker hosts
- Test VPN routing
- Regional services validation

### Wave 3: docker-sba (115) + docker-unused (117) + docker-home-servers (116)
**Goal**: Additional Docker infrastructure
- Use SBA maintenance windows
- Decommission unused if appropriate

### Wave 4: discord-bots (110) + databases-bots (112)
**Goal**: Application & database servers
- ⚠️ EXTRA CARE for database migration
- Full backups required

### Wave 5: docker-tdarr (113) + plex (107)
**Goal**: Media services (software transcoding)
- Monitor CPU usage
- Validate transcode performance

### Wave 6: docker-home (106) - MOST CRITICAL
**Goal**: Final critical infrastructure
- Migrate last after all confidence built
- Most important home services

## Keep as VMs
- **hass-io (109)**: HassOS requirement
- **ubuntu-template (100)**: Strategic flexibility

## LXC Container IDs (200-series)

| VM → LXC | Service | Wave |
|----------|---------|------|
| 111 → 211 | docker-7days | 1 |
| 114 → 214 | docker-pittsburgh | 2 |
| 105 → 205 | docker-vpn | 2 |
| 115 → 215 | docker-sba | 3 |
| 117 → 217 | docker-unused | 3 |
| 116 → 216 | docker-home-servers | 3 |
| 110 → 210 | discord-bots | 4 |
| 112 → 212 | databases-bots | 4 |
| 113 → 213 | docker-tdarr | 5 |
| 107 → 207 | plex | 5 |
| 106 → 206 | docker-home | 6 |

## Quick Commands

### Create LXC for Docker
```bash
pct create 2XX local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
  --hostname docker-7days-lxc \
  --memory 4096 \
  --cores 2 \
  --net0 name=eth0,bridge=vmbr0,ip=10.10.0.TMP/24,gw=10.10.0.1 \
  --storage local-lvm \
  --rootfs local-lvm:32 \
  --unprivileged 0 \
  --features nesting=1,keyctl=1

pct start 2XX
pct enter 2XX
```

### Install Docker in LXC
```bash
apt update && apt upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
apt install docker-compose-plugin -y
```

### Migrate Docker Volumes
```bash
# While VM running - initial sync
rsync -avz --progress root@VM_IP:/var/lib/docker/volumes/ root@LXC_IP:/var/lib/docker/volumes/
rsync -avz --progress root@VM_IP:/opt/docker/ root@LXC_IP:/opt/docker/

# During cutover - final sync with VM stopped
rsync -avz --progress --delete root@VM_IP:/var/lib/docker/volumes/ root@LXC_IP:/var/lib/docker/volumes/
```

### Cutover Process
1. Stop VM: `qm stop 111`
2. Reconfigure LXC to production IP
3. Start LXC: `pct start 211`
4. Validate services
5. Monitor for 48 hours
6. Keep VM stopped for rollback capability

### Rollback (if needed)
```bash
pct stop 211
qm start 111
```

## Next Immediate Steps

1. **Schedule Wave 1**: Pick maintenance window for docker-7days
2. **Build LXC 211**: Create first container
3. **Test & Migrate**: Execute Wave 1
4. **Document Learnings**: Refine process for Wave 2

## Full Documentation
See `/mnt/NV2/Development/claude-home/vm-management/lxc-migration-plan.md` for comprehensive details.

## Expected Benefits
- **~17GB RAM freed** (87% reduction in overhead)
- **5-10x faster backups/restores**
- **Near-instant container starts** (1-5 seconds)
- **Improved resource density**
