Page:
Post Migration Checklist
Pages
01 Image Mode and the itg base Golden Image
02 Storage on bootc NFS and Data Disks
03 Hostnames and DNS Registration on bootc
04 Container Registry on Forgejo
05 Forgejo Actions Runner as a bootc Image
06 The CI CD Pipeline
07 Nightly Auto Deploy with bootc
08 First Real Workload itg prd book
09 VSCode as the GitOps Cockpit
10 Hugo Website Auto Deploy
11 Cloudflare Migration Book Restore Kobo and MAM
12 Runner Creation and Ansible Provisioning
13 Tailscale Subnet Router on bootc
14 SWAG and the Website
15 Split DNS and LAN Only Services
16 Plex Media Server
17 Media Library Support
18 The Day After
19 Self Hosted Media
20 The Hypervisor Joins the Fleet
21 The Matrix Homeserver
DR Site and Backup Plan
Home
Homelab Sizing
Infra Principles
Post Migration Checklist
Someday
No results
1
Post Migration Checklist
Eric the IT Guy edited this page 2026-08-12 12:49:28 -05:00
Post-Migration Checklist (per bootc host)
Run this after migrating each old VM to a bootc host (game, tail, plex, arr, web). It's the "is it actually done and durable" pass, not just "is it running."
Services & workloads
systemctl --failedis clean- Every quadlet running (
systemctl status <svc>;podman psshows all expected containers) - On-demand services (e.g. ARK) start cleanly with
systemctl start <svc>
Data & ownership
- Each app loads its real migrated data (worlds/saves/config), not a fresh instance
/var/lib/<app>trees owned1001:1001- Source data on NFS retained until every app is verified
Secrets & config
- Machine-local env files rendered from vault (
/etc/<app>/*.env), mode0600 - No secrets committed to the repo
- App-specific auth handled (Steam re-seed, allowlists, server passwords, license keys)
Networking
- OPNsense port-forwards correct per service; no port collisions
- Admin/RCON ports NOT exposed to WAN
- DHCP reservation pinned for the host IP (NAT + SWAG depend on it)
- Cloudflare: raw-traffic names grey-clouded (DNS-only); HTTP apps via SWAG
- SWAG upstreams point at hostname/current IP; HTTP apps reachable over HTTPS incl. websockets
Updates & GitOps
- All config pushed to the repo (quadlets, ansible,
images.json) so a fresh provision reproduces it - No pet overrides left on the box (e.g. stray
/etc/containers/systemd/*test files) systemctl list-timersshowspodman-auto-update.timerandbootc-fetch-apply-updates.timeractive- Final
bootc upgrade --applydone; box on latest image
Verification
- Full reboot test: box self-assembles unattended (disk mount, autostart services, secrets, data), no manual steps
- Each service reachable/functional from outside the LAN
- Logs clean: no crash-loops, no failed healthchecks
Backups & decommission
/var/libdata backed up (nightly rsync to depot, or Proxmox VM backup)- Old VM decommissioned once fully verified
Runbooks
The build
- Image Mode & Base
- Storage
- Hostnames & DNS
- Registry
- Actions Runner
- The Pipeline
- Nightly Auto-Deploy
- First Workload
- VSCode Cockpit
- Hugo Auto-Deploy
- Cloudflare & Kobo
- Runner Provisioning
- Tailscale Router
- SWAG & Website
- Split-DNS
- Plex
- Media Library Support
- The Day After
- Self-Hosted Media
- Hypervisor Joins the Fleet
- The Matrix Homeserver
Reference