Preparing a Cluster Host

Ok, so you have your firewall and switch installed and configured! Great! You can add a cluster host to your SERVERS DMZ. Remember, Sovereign Stack is more than just a home node package, so get hardware with heft, especially if you're going to host more than one website.

💡
Right now, Sovereign Stack IS NOT a distributed system. Future iterations of the project will leverage incus clustering and docker swarm for workload distribution and scalability.

Begin by connecting your new cluster host to the appropriate ACCESS port assigned to the SERVERS VLAN. It also helps have the power adapter plugged into a UPS for reliability.

💡
It's best that you buy hardware that DOES NOT have Wifi hardware on it. It simply adds expense and attack surface. Sovereign Stack DOES NOT work with wirelesss adapters! This is because Sovereign Stack relies on Macvlan to expose services to your network, and WLAN interfaces do NOT support Macvlan! Not only that, when you're hosting a website, you want something that's reliable and has minimal contention. WiFi is not that.

Download Ubuntu Server

First, download Ubuntu Server 22.04.01, install it on a bootable USB device. The Ubuntu website has excellent instructions. Use them.

Insert the USB device into your new cluster host. Your goal is to boot into the USB media (the Ubuntu Server Installer). You may have to modify the boot priority of your cluster host to boot into the installation.

Install Ubuntu Server 22.04 (minimized)

Once you're at the installer interface, choose your preferred language and be sure to update the updater if possible. Select your keyboard layout and continue by installing Ubuntu Server (minimized). DO NOT download third-party drivers.

Network Configuration

When you get to the Network connections menu in the installer, you MAY need to perform some additional steps in your DHCP and DNS servers (e.g., PFSense). Sovereign Stack works best when the network underlay is stable.

You need to create a DHCP reservation for each new physical cluster host. After that, you need to static DNS host entries for the host. Something like clusterhost-01.domain.tld.

If your network connection(s) aren't getting the correct IP assignments during the installer, you may need to check that DHCP reservation and DNS are configured correctly. Conveniently, the Ubuntu installer displays your network adapter's MAC addresses.

During the installation, you may be asked to configure proxy or mirror servers. Just leave that at default for now.

Disks / Formatting

How you format all depends how many SSD/nVMEs you have on your system.

If you have TWO independent SSDs in your system, dedicate the entire second SSD to Sovereign Stack. 1Tb minimum is recommended.

💡
That partition gets formatted when you take the cluster host under management of Sovereign Stack. Sovereign Stack scripts inform incus to lay down a ZFS file system on this partition.

For now during the installer, just use the default Ubuntu 22.04 disk layout which uses Logical Volume Management (LVM). This works well with Sovereign Stack.

Later, once you're logged into the cluster host via SSH, you can configure the Logical Volume that Sovereign Stack will use by issuing thesudo lvcreate -L 500G -n sovereign-stack ubuntu-vg command. The size you use should be based on your intended use case(s).

Profile setup

Complete the installer by entering ubuntu for the username. Also give the cluster host its name. This should the server name that was specified in your DNS settings for the cluster host.

Provide a unique and sufficiently complex password for the ubuntu user and store it in your password manager.

Software Installation

Sovereign Stack only requires that you install OpenSSH server as your last step. This is important! This is how Sovereign Stack scripts manage your Linux cluster host!

Proceed with the installation. When complete, select Reboot Now.

When directed, remove the USB installation media, then press enter.

Conclusion

Cool, your management machine should be able to SSH into your new cluster host! The system boots to Ubuntu Server 22.04.01 and is listening on the network on port 22, SSH.