/images/avatar.png

ZFS RAIDZ2 with ZFSBootMenu: A Fault-Tolerant 4-Disk NAS

In my previous article, I described how to install Ubuntu on a ZFS mirror and boot it using ZFSBootMenu. This time, the goal is more ambitious: build a proper four-disk NAS where both the operating system and user data live on a single ZFS RAIDZ2 pool, while still being able to boot the machine after losing one or even two physical disks. I also wanted to avoid a dedicated boot SSD.

Build a home Kubernetes cluster: part 1, k3s server

This guide installs the control plane for a small home Kubernetes cluster on an x86_64 Ubuntu NAS. Raspberry Pi 5 machines will join it as worker nodes in the next part of the series. The NAS remains the only k3s server and does not run ordinary application workloads. Target environment: Ubuntu Server 26.04 LTS on x86_64 and k3s v1.36.2+k3s1. Validate the procedure on the NAS before changing this note to Tested on.

Run managed Samba and S3 storage on Ubuntu 26.04 with ZFS

This guide turns one Ubuntu 26.04 LTS server with a ZFS pool into a small LAN-only NAS. Samba, Cockpit, and the 45Drives management plugins run together in an Incus system container. Garage provides an S3-compatible API from a Docker container on the host. Keeping Samba and its management interface in the same system container gives Cockpit direct access to the Unix users, groups, Samba password database, and service it manages. It avoids synchronizing /etc/passwd, smb.

Run WireGuard and WireGuard UI behind Traefik

This guide deploys a small VPN gateway on a public Ubuntu virtual machine. Traefik is the only container that publishes host ports: TCP 80 and 443 for HTTPS and Let’s Encrypt; UDP 51820 for WireGuard; WireGuard UI and the Traefik dashboard are available only over HTTPS. This setup does not require a separate router or port forwarding. The virtual machine must have a public IP address, and its cloud firewall must allow incoming TCP 80, TCP 443, and UDP 51820 traffic.

Forcing an ext4 filesystem check on the next reboot

Forcing an ext4 Filesystem Check on the Next Reboot with tune2fs Sometimes you need to verify an ext4 filesystem, but the filesystem is mounted and cannot safely be repaired online. This is especially common when the filesystem is the root filesystem, such as /dev/md0 mounted as /. Running fsck directly on a mounted filesystem is not a safe way to repair it: 1 sudo fsck -n -f /dev/md0 The -n option makes it read-only, so it will not fix anything.

Run docker image for arm64 on amd64

Display the host architecture 1 2 uname -m x86_64 Let’s try run image with arm64. We’ve got an error 1 2 3 docker run --rm -t arm64v8/ubuntu uname -m WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested exec /usr/bin/uname: exec format error Install the qemu packages 1 sudo apt-get install qemu binfmt-support qemu-user-static This step will execute the registering scripts