So I had been dragging my feet for the last couple of weeks, not wanting to take the plunge and actually go through with the migration. To the point where I was starting (and finishing!) new projects as a reason to avoid it.

(Bonus Project: Wife's office/the guest room now has a wall-mount 32" TV with no visible wires, running a DirecTV receiver and a Raspberry Pi 3B (non-plus) running LibreELEC and Plex-Kodi-Connect. Bonus that it uses the TV's native remote to control the LibreELEC menus.)

Other than that, and possibly getting mildly sidetracked by Classic WoW, I had been refining my docker-compose files, getting Ombi and Tautulli running with the Plex Server, and otherwise over-prepping for this entire deal. Apparently what I was really dragging my feet for though was getting local storage into my ESXi host so I could migrate most of the VMs off the NAS. I did that last night (I'd tried it before but had a faulty RAID card - that's been fixed now) and without having any intent to, since Wife and Daughter were coming home this afternoon, this morning I just said "why the hell not?" and away I went.

Some key things I had issues with, that I could have prepped for but did not:

  • Booting. You can't just set up a new OS on one motherboard using UEFI, then move it to another motherboard (still on UEFI, but actually older), plug it in, and have it just go. I'm spoiled with Linux in this regard, and it took quite some time to find the efibootmgr commands necessary to ditch the terrible mess the Supermicro UEFI made and actually correctly configure booting.
  • Network configurations. Not only was the move from Debian to Ubuntu more impactful than I expected in terms of configs, but since I'd been setting up using DHCP on a non-integrated NIC, there was no default gateway, and it took some digging to figure out permanently setting that, setting up VLANs for Docker to use (among other things), etc. Fortunately, my docker-compose time helped, as Netplan uses YAML.
  • I got my Traefik install minimally working but not doing HTTPS and LetsEncrypt. Since Chrome treats every page that once was HTTPS as that, no matter what you type, it made me think Traefik was broke. It's now top of my list to do.

Other than that though, and some issues with NFS and Samba that are very likely to be related to using Webmin and not actually digging in on the config files directly, it went fairly smoothly. The zpool imported just fine, we have full access to all the datasets, and after a bit of poking around I've got Samba and NFS up and running, albeit without the normal security in place for NFS. (which is minor, and probably a matter of adjusting slightly the parameters.) It still took the better part of the day, especially to finally get NFS working, but it didn't feel like a chore.

On the NFS bit, this is a prime example of the problems we as homelabbers, and people in IT in general, run into. We are so buried in the weeds we forget to start basic. Know how I got NFS finally working after monkeying with it for two hours? Simple: sudo zfs set sharenfs=on poolname/datasetname. That's it. Always take it back down to minimal functionality, then add the security on after - especially as it gets late in the day.

On the to-do list, which I'm actually working through currently:

  • Traefik + LetsEncrypt. I'm still using HAProxy for a couple of external things, since it's running on pfSense, but I really want the full shebang working with Traefik. This is the one I'm working on now.
  • Duplicati deployment. On the old NAS, Duplicati was running as an OMV plugin, which isn't an option now. The backup job was exported, so I can import into the Duplicati docker, I just need to roll it out. Probably will do this before I finish Traefik.
  • Automation and Deployment. As a network engineer, Ansible and Python are the big things lately, and projects like Ansible-NAS actually drove this decision to redo. (I would've deployed that straight-up, but I've got some funky configurations for networking and didn't want to figure that out while learning the rest.) It's past time I start learning Ansible, so I want to get some Ansible playbooks setup for redeployment of all this, and get the docker-compose files and maybe my dot-files up into Github.

For now though, the Great Migration is mostly over with, and it's all over but the "shouting" (remapping shared drives, tweaks here and there). May end up doing a Part III depending on how long and detailed the dive into Ansible gets, and will certainly do a follow-up at some point after I've gotten used to the differences.