claude-home/vm-management/migration-quick-start.md
Cal Corum 4b7eca8a46
All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 3s
docs: add YAML frontmatter to all 151 markdown files
Adds title, description, type, domain, and tags frontmatter to every
doc for improved KB semantic search. The description field is prepended
to every search chunk, and domain/type/tags enable filtered queries.

Type values: context, guide, runbook, reference, troubleshooting
Domain values match directory structure (networking, docker, etc.)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:00:44 -05:00

138 lines
3.9 KiB
Markdown

---
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**