On the last post I wrote about the hardware side of self-hosting and how to optimize it for energy efficiency. I also mentioned that the operating system I installed was Proxmox VE.
Well…now I’m running Fedora Server.
Why I left Proxmox
I like Proxmox, the main selling point is the web interface where you can manage anything you can think of, I mean, look at the feature page! I was very eager to try it out.
But, after a couple of months, I realized it wasn’t the right tool for me. My use case was running an LXC container for each application, you shouldn’t install anything on the host system. While LXC allows for traditional software installation, many applications I was interested in were designed with Docker/Podman in mind; but it’s not recommended using Docker inside an LXC container.
Docker/Podman containers are a standard nowadays and improving my skills on these technologies is a key goal of mine.
Another important aspect was having a single node. Proxmox shines when used with multiple nodes, enabling features like clustering, high availability and backups. However, with only one node, I couldn’t fully leverage these advantages.
I was left with a choice: keep Proxmox and create a virtual machine with Docker/Podman or switch to a different operating system.
Since running a single VM looked like a waste of resources and it did not take advantage of Proxmox’s capabilities, I opted for a different operating system.
Welcome to Fedora Server
For years Ubuntu was my go to choice for a server, like on my Raspberry Pi, but it had one major problem for me: if I want to learn new technologies I need the “latest and greatest”. Sure, it might not be the most pragmatic strategy for mission-critical infrastructure, but my server is more about personal learning, experimentation and home automation.
I choose Fedora Server because it follows a six-months lifecycle and the packages, while not bleeding-edge, are recent and stable. Plus, being already familiar with Fedora Workstation on my main PC made the transition easier.
We are in RedHat world that means you get features like SELinux, Podman and Cockpit. The latter is a web interface used to manage your server, it is not as advanced as Proxmox but it’s incredibly useful for tasks like setting up networking, storage, managing containers or checking logs; all without using the terminal.
I applied the same optimizations done on Proxmox with Powertop and the CPU governor.
Podman Quadlets
Running Podman means I need to create systemd services to manage a container lifecycle. On my first post it was done with podman generate systemd but it got replaced by Quadlets. Basically you create systemd unit files with the parameters you use with podman run.
Next steps
Overall I think this is the right decision going forward, I can focus on setting up containers without worring about LXC added complexity.
This post laid the ground for my next one: setting up the applications themselves! Expect a more technical deep dive into that process soon™. I’m working on it I promise!