This moment feels like it’s been coming for some years now. I can’t remember exactly when iXsystems announced it was dropping support for TrueNAS Core, their FreeBSD-based NAS appliance, in favour of TrueNAS Scale, their newer Linux-based version. Having been using TrueNAS, and FreeNAS before that, for about 13 years, I wasn’t sure what to do.
The reality is I buried my head in the sand until that was no longer an option, thanks to the PHP vulnerability that’s been all over the news this week. It looks like that might have been a sensible strategy, given FreeCORE has only been an option for the last few months, although just typing that emphasises what an enormous leap of faith I’m taking by migrating this weekend. This blog is going to be that journey, along with some of the thinking that’s going along with it. Who knows, it might go horribly wrong and the blog this is intended for never comes back online (guess what, it did!)
I started writing this at 23:39 on Friday 23 October, and every service on my TrueNAS box is down. The box is running and set to snapshot all the critical things in about 20 minutes and then replicate those to the backup box overnight. Tomorrow morning I’ll check that backup ran successfully, the target has the latest files, and then switch the train from TrueNAS to FreeCORE and upgrade. Wish me luck….
So, here we go. The first job was to check that the replication had worked, which it had. I used to have both machines running 24×7, but when energy prices spiked due to the war in Ukraine, I reverted to monthly backups to the old FreeNAS1 box. I still have more regular backups running to CrashPlan, so this seemed like a reasonable trade-off. I re-read the instructions and put on my ‘big boy pants’ before starting the update (or is it an upgrade?)
First gotcha was DNS (surprise surprise), as I have a VM running on my TrueNAS box running Pi-hole and unbound. That’s off, so I needed to point it back to my router, and the router out to a secondary DNS server. Easy enough.
Then I switched the TrueNAS update train to FreeCORE, which is pretty much the only config. After that, you just run the update as usual from TrueNAS and wait. It didn’t take as long as I’d expected, as I was going to head out to walk the dog so I didn’t feel the need to interrupt, but before I’d had chance, it started back up looking exactly like TrueNAS, which I thought was strange. A quick refresh and some FreeCORE branding and some interface tweaks, but feeling very much the same.
I thought I’d stopped everything from auto-booting, but I’d missed a few jails, so I changed that and then thought I’d reboot so I was starting from where I’d planned.
The system is running FreeCORE-15.0-U2.4 on the FreeCORE-15.0-STABLE train. This is the recommended first step to check everything is still working as expected.
I can connect to the SMB shares from my MacBook, which given it’s a NAS is pretty important. I checked the pools with zpool status (all 3 ONLINE) and the FreeBSD version with freebsd-version -ku which reports 15.1-RELEASE-p5.
sysctl
kern.features.compat_freebsd13 returns a 1 which means features are
still compatible with 13, which is currently where all my jails are
sitting. This is probably going to be the biggest job, updating them
to 15.1
I
tested one worked (Nextcloud) and I could access through the NPM
proxy, but then quickly closed that down as this is one of the PHP
issue jails.
Next
was the big one – would the Portainer/Docker VM start? YES, and
other than dropping the Portainer license, which I had saved in
Bitwarden, it looks like most,butnot
all of the containers came up. Teslamate
didn’t and it looks like all of the Stacks in Portainer are
unavailable.
So
with a little help from Claude I managed to get to the bottom of
this. It turns out three of my fourteen NFS mounts hadn’t come up,
because the VM booted faster than the NAS and nothing retried them.
One of those was the share holding all my Docker data. That is also
the answer to why everything else started: the other eleven mounts
were fine, and when Docker found its directory missing it quietly
created an empty one on the VM’s own disk, so the containers came
up happily on nothing at all. Portainer started on a blank database,
which is why it looked like a fresh install. Teslamate was the only
one that couldn’t paper over it and actually said so. The
fstab entries only had nfsvers=3 and now have _netdev, nofail and a
retry, and Docker itself has been told to wait for its storage rather
than invent it.
I
also started up the Pi-hole VM andsome
of the jailsandeverything
appears to be working just fine.
I
was going to leave upgrading jails from 13.5 until Sunday, but given
how well things are going I’m going to start now. I’d got Claude
to create me a ‘playbook’ which included the jail migration, but
the new FreeCORE forum also had a HOW TO guide for this, so I tried
to use the best of both.
Nextcloud
was first and the hop to 14.5 took well over an hour,with
long stretches where it looked like it had hung. I’d been using
Claude to check a few of the messages and mentioned the time it was
taking. Claude suggested trimming freebsd-update's components,
because it was reinstalling the entire FreeBSD source tree one file
at a time. Nothing in these jails needs that, and trimming it brought
the second hop, to 15.1, down to about fifteen minutes. WordPress
then did both hops at the faster rate and updated perfectly, so the
two jails actually affected by the PHP security flaw were both done
on the first day. And since this blog runs on that WordPress jail,
the thing I was most worried about on Friday night turned out fine — after all, you’re reading it!
LimeSurvey
is the same, so I’m planning to do that one and then stop for the
night, but I’m sure this results in a FreeCORE update blog in the
not too distant future. Perhaps one to end 2026?
There’ssome
blogs about Omarchy
too, as I’m picking up the EliteBook 6 G1a (now with 32GB RAM) more
than I am my MacBook at the minute, and that’s definitely an OS
preference over a hardware one. I’ve drafted this in LibreOffice
on Omarchy!
But
today has been a good ‘sysadmin’ day. Sad to leave Free/TrueNAS
behind but happy to have found FreeCORE as a very familiar
replacement.

Recent Comments