Self-Hosted Infrastructure from Homelab to Company Part 2

Choosing an operating system

Choosing an operating system

Introduction

When deciding which operating system will run on your server, there are a few things to consider.

  1. What services do you intend to run, and what are their system requirements?
  2. What file system do you want to use to store your data, such as ZFS, btrfs, or something else?
  3. Familiarity and learning curve of the operating system will affect how quickly you’ll be able to get services up and running and the security of those services.

Operating Systems

There are many choices for operating systems when it comes to servers. Some are for particular purposes, and others are more general. Some are stable, while others are more bleeding edge. What you choose will come down to your use case.

Linux

The most common server operating systems are Linux-based, using either the Debian or RedHat package formats. Some Linux-based operating systems, such as NixOS, work differently and don’t follow the typical approach.

Ubuntu

Ubuntu is one of the most used Linux-based operating systems for cloud-based infrastructure. It also has one of the largest communities behind it and enterprise support from Canonical. Advantages of using Ubuntu server include:

  • Built-in ZFS straight from the live installer.
  • Community support, so it’s easy to find help or documentation online.
  • Enterprise support offers 24/7 assistance, troubleshooting, and real-time security updates.
  • Debian-based, so it’s easy to find software.
  • Zero-cost by default, with support provided at a fee.

Proxmox VE

Proxmox is a special-purpose Debian Linux-based operating system for running KVM virtual machines and LXC container workloads. Proxmox is free; however, you’ll require a subscription to get support or access to the stable enterprise repository.

Debian

Debian is a community-driven Linux distribution available in stable and unstable branches; what Debian refers to as stable is about 1-3 years behind what Ubuntu considers stable, with Debian-unstable being more current. Debian is solely community-driven and does not offer enterprise support.

Fedora

Fedora server is a community-developed Linux distribution funded by Red Hat, Inc. It offers a Cockpit, a complete and easy-to-use web user interface, with support for KVM virtual machines and containers via Podman, an alternative to Docker. It follows a fixed-release cycle and offers more bleeding-edge software than Ubuntu but does not provide enterprise support or an LTS version.

Arch Linux

Arch Linux is a lightweight, minimalistic, rolling-release Linux distribution that focuses on keeping it simple; however, this does not mean it’s simple to use, as the user has to configure all packages since they only add what is purposely required.

OpenSUSE

OpenSUSE is an open-source Linux distribution offered in two main variants: Leap, a stable fixed-release distro, and Tumbleweed, a more bleeding-edge rolling-release distro. OpenSUSE is backed by SUSE LLC, with enterprise support available through them. YaST stands for Yet Another Settings Tool; a significant feature only available on OpenSUSE, it offers an easy point-and-click GUI for most of your standard server configurations.

NixOS

NixOS is a Linux distribution designed for reproducible builds with a declarative system-wide Nix configuration file; this allows all software installed and configurations to be defined. You can apply this configuration to any new installation, making it identical to the other systems with the same definition file. NixOS allows atomic updates with the ability to roll back if something goes wrong.

FreeBSD

FreeBSD is a free and Unix-like open-source operating system with support for ZFS. Unlike Linux distributions, which are collections of software made by many different people, FreeBSD is developed by a single team, making it more coherent. FreeBSD is a rolling release system, always getting the newest software, unlike most Linux distributions, which use a fixed release cycle.

TrueNAS

TrueNAS is a network-attached storage operating system with variants TrueNAS CORE (based on FreeBSD) and TrueNAS Scale (based Debian Linux). Both have built-in support for ZFS. The Linux-based version supports KVM virtual machines, Kubernetes, and Docker (as an add-on). The FreeBSD version supports Virtual machines with bhyve and can use jails to provide similar functionality to containers. TrueNAS includes free versions, enterprise versions, and prebuilt hardware.

Windows

Windows is a proprietary, close source (technically, a shared source system, just not with you), heavily restricted operating system. You’ll require a license to run a Windows server, as there is no free version of this OS. In most cases, you’ll be better off with any other option on this list unless you require particular Microsoft services that cannot run on Linux or FreeBSD-based systems.

This series

I’ve set up and managed systems using Fedora, Ubuntu, Proxmox, and TrueNAS CORE and experimented with Debian, Windows, and OpenSUSE. We will use Ubuntu in this series because it is an excellent middle ground with community and enterprise support options.