Capstone: VM Layout for Workshop Co.
Prod, staging, DB split — Proxmox plan.
Capstone objectives
- Design a complete Proxmox deployment for Workshop Co.
- Document VM specs, networking, storage, and backup schedule
- Plan migration from three physical servers with minimal downtime
The brief
Workshop Co. — virtualization project
- Domain
workshopco.ca- Location
- Edmonton workshop + Swift Host off-site backup
- Hardware
- One Proxmox host: 8 cores, 64 GB RAM, 1 TB NVMe + 4 TB HDD ZFS mirror
- Workloads
- Web/booking (PHP), PostgreSQL, Nextcloud, staging clone, Traefik reverse proxy
- Constraint
- Saturday 7 AM–12 PM booking peak must not fail during cutover
Part 1 — VM and container inventory
Create a table: ID, name, type (VM/LXC), vCPU, RAM, disk, network bridges, and purpose.
Model solution
| ID | Name | Type | vCPU | RAM | Disk | Network | Purpose |
|---|---|---|---|---|---|---|---|
| 110 | workshop-web | VM | 2 | 4 GB | 32 GB NVMe | vmbr0 + vmbr1 | Production website |
| 111 | workshop-web-stg | VM | 1 | 2 GB | 32 GB NVMe | vmbr0 + vmbr1 | Staging |
| 120 | workshop-db | VM | 4 | 12 GB | 100 GB NVMe | vmbr1 only | PostgreSQL |
| 130 | workshop-files | VM | 2 | 4 GB | 500 GB HDD | vmbr0 | Nextcloud |
| 200 | traefik | LXC | 1 | 512 MB | 8 GB NVMe | vmbr0 | TLS reverse proxy |
Part 2 — backup and snapshot policy
Write policy covering: nightly backup scope, retention, off-site target, snapshot rules before changes, monthly restore test.
Sample policy
- Nightly vzdump: VMs 110, 120, 130 + CT 200 at 02:00 MT → NFS
backup.swifthost.ca - Retention: 14 daily, 8 weekly, 6 monthly
- Snapshots: manual before OS/DB upgrades; max age 48h
- First Sunday each month: restore db backup to VM 220, verify booking query
Part 3 — migration cutover plan
Five-step plan to move from three physical servers to Proxmox without losing Saturday bookings. Include DNS TTL, database sync, and rollback.
Sample plan
- Week prior: build VMs, restore data, lower
workshopco.caA record TTL to 300 - Friday 22:00: put site in maintenance; final DB dump from old db-01
- Friday 23:00: import DB to VM 120; smoke test via
/etc/hostsoverride - Saturday 05:00: update DNS A to Proxmox public IP; monitor bookings
- Rollback: revert DNS to old IP if critical failure; keep old servers powered but disconnected for 72h
Book 6 covers SSH — how Marcus administers these VMs remotely and securely from home without exposing every server to the internet.
Book 5 complete
You understand why to virtualize, how Proxmox and ESXi compare, and how to design networking, storage, backups, and VM vs container choices for a real Canadian small business.