Why did I choose Fedora Server?

Photo by Kyle Glenn on Unsplash

I thought it would be a good idea to share my experience implementing servers for personal use. It wasn’t easy to know the best fit for my workload and it has been a moving target, so it was critical to understand and update my needs before taking one route or another.

There are plenty of articles discussing which OS is more appropriate, some will warn against Fedora Server or even CentOS Stream regarding stability, but all it comes down to the use case. So the context is what makes the difference.

RHEL is predictable with Insights as a bonus

I started using a RHEL (developer license) to implement my services. At the time it was the obvious choice, because I needed a predictable package versioning. I implemented various services using PHP and Databases which needed a consistent versioning of dependencies.

RHEL also gave me the additional bonus of Insights which is a convenient tool to see CVE’s, patches, and other interesting data. But apart from the initial hype while learning its capabilities, I stopped using it almost completely because my server was always up to date, and there wasn’t anything to see in the dashboard. I concluded, therefore, that despite the potential of Insights, it wasn’t something I really needed.

CentOS Stream brings you upgrades ahead of time

RHEL versioning helps cases where staying in one minor version for a long time is paramount to keep applications working. But it wasn’t my case. I was always upgrading through minor versions as soon as they were available. So I looked at CentOS Stream as an appealing alternative. It would give me the same stability with the additional benefit of getting the upgrades ahead of time. I made the move and migrated to CentOS Stream.

I was reluctant to use containers, in those days, thinking that having my workload installed directly in the server was more efficient. The presumption was that I was running Apache, MariaDB, Postgress, PHP, etc. only once. But there is a caveat with this simplified view because some of those services fork different instances to support the various requests anyway.

Moving services into containers

A realization came when one of the services needed a newer PHP version which wasn’t available in the standard repo. So I reverted to Modules to install the newer version. Unfortunately, I encountered some issues with dependencies on EPEL that wouldn’t work with some of the newer PHP packages. Also, not all my services worked well with the latest PHP, and so on, and so forth. Long story short; I scraped all services and implement them as containers.

It was like being born again. Each service running in their own optimized environment happened to be the perfect solution and I just kept Apache Server as reverse proxy.

I run my server in the cloud so resources were pretty limited. Surprisingly, the CPU and RAM consumption didn’t jump as I thought they would meaning that I didn’t have to upgrade my cloud service plan.

Fedora Server turned out to be the best fit

Everything was good until I started using Quadlet to implement my containers. Quadlet is an amazing tool that replaces the deprecated podman-generate-systemd to create systemd units to handle containers’ lifecycle.

Quadlet is available starting with Podman 4.6, but it is limited to single containers. The implementation of Pods will be only available starting with Podman 5.0. The plan is to include Podman 5.0 in Fedora 40 which in turn will branch out CentOS Stream 10. This means that if I stay on CentOS Stream, I will need to wait approximately 8 months to enjoy this new feature.

I was also looking for DNF5, but unfortunately it didn’t make on time to Fedora 40. This means it will only be available on CentOS Stream 11 in another 4 years. Who knows what other cool upgrades I may be missing or will miss in the future.

After the move to CentOS Stream, I came to another realization. I didn’t need a server with a predictable package versioning anymore. So you see where I’m going. On one hand, I’m not getting any particular benefit running CentOS Stream (or RHEL), because all my workload is containerized. On the other hand, I’m missing the latest software to make my life easier and more enjoyable. So moving to Fedora Server is a no brainier.

Another factor I didn’t think of before is the upgraded workflow. Staying with CentOS Stream doesn’t guarantee a pathway between major versions, so it is likely that I will need to do a fresh install. Whereas using Fedora Server guarantees a pathway and workflow to move between major releases.

So, all and all, the change makes so much sense for my use case. And I’m assuming this is a common scenario.

Fedora Project community

17 Comments

  1. RG

    Hear Hear

  2. DM

    I’m a bit unsure why you have chosen Fedora over RHEL if I am honest. You don’t need the latest tools and updates on the host system. You need stability, consistency and predictability.
    Then the VM’s and containers you generate on there can be your fun toys with the latest and greatest stuff installed on it without risking the host server installing the “latest must have gadget” which breaks something else which has been running smoothly for months.

    • Job79

      Yes, these are some very important points for a critical server. But the author of the article is running servers for personal use, so this is probably less relevant for them.

      The author seems to prefer the latest software and the guaranteed upgrade path between versions (last 2 paragraphs). To me this seems like a valid reason to prefer fedora server over RHEL. But I agree, if stability is preferred RHEL is probably a better choice 😉

      @Daniel have you considered fedora coreos? Your use case sounds like a perfect match. Coreos is designed to run containers and has the advantage of being immutable, which is really great for consistency and predictability.

      The immutable aspect makes all deployments consistent, and when running a cluster with some deployments in the testing stream it is possible to detect breakages before they are deployed to the important servers. Because of this coreos can do safe automatic updates (including mayor versions), which I personally really enjoy for my personal servers.

      Ignition is also great. It lets you define server config using yaml files which is then used to creating a new server. Important to note that it is not required to completely setup the server using ignition, so if this is not your thing it isn’t a problem. I personally use git repo’s with quadlet files which I clone into

      ~/.config/containers/systemd/

      because my config changes frequently. This also works perfectly fine, ignition is great but if it seems like to much trouble don’t bother.

      But great article! I too am very excited for podman 5, but mostly the pasta part that is finally is gonna solve the source ip issue.

      • Correct, this is a personal server. And Fedora is more than capable to handle my workload.
        CoreOS wasn’t in my radar until now, it looks pretty interesting, I will have a play with it.
        Who knows, it may be an inspiration for another article in the future.

        • Job79

          RE: Who knows, it may be an inspiration for another article in the future.

          That would be great. I have the feeling CoreOS would be a good choice for many people, but it’s not as widely recognized as other options. Or people discard it because they don’t understand ignition, it does have a somewhat larger learning curve than traditional install methods.

          I would be happy to help if you every consider writing that article 😉
          Send me a message on matrix (job@plabble.org)

    • I run a general LEMP stack and a few years ago I ran into issues with CentOS (before Stream) having old packages or needing some EPEL/other repo. That’s when I went with Fedora Server primarily as I was already liking Fedora Workstation, wanted to have the freshest most up-to-date packages, it’s free (later found RHEL is free too), and just works.

      I’ve had websites like Joomla and WordPress that would pull-in updates from git main branches daily unattended on Fedora Server and openSUSE TW even, and for years haven’t had an issue with the OS packages or updates.

      I run on bare-metal and test on production; if the latest and greatest ever breaks, I want to know all about it :p VMs and containers are boring and a layer of abstraction, but I also have a lot to learn about them.

  3. jask

    Seeing your trajectory I bet CoreOS will be next step 😉

  4. Vs

    I too after running various Linux distros and fedora/redhat variants for home server use, I have decided to use Fedora server edition for my home use. Combing it with podman covers everything I need so far. I like being able to keep my system up to date as I want to be able to get the most out my simple home server.But the real gem for me is cockpit since I am able to mange my machine and manage my storage devices with LVM and raid with the click of a button. Still new to podman and containers but again, cockpit makes it easy to manage.

  5. Oscar

    I also use Fedora as server to use the latest packages, as I sometimes use it in workstation mode for rapid workflow when my full workstation is not at my fingertip, and also allow simple management where I can easily turn a workstation into a server when the main server goes down without having to manage multiple OS’s.

    I don’t use containers much, since I can always take the time to create my own custom packages which can co-exist with stock version from the repo. For example, I must have a specific PHP version for certain apache-based servers, and I just create a PHP rpm that does not conflict with stock PHP rpm, then just modify the apache config for that server to point to the custom PHP path.

    This also helps troubleshoot any issues with the stock OS so that it can be improved, rather than being sheltered and serving just for myself or a small group using the containerized ones. For personal server, I don’t mind some hiccups when using leading-edge OS.

  6. Michael

    I ran Fedora Server for about a year to host my static website and Gemini capsule. While I liked it after I successfully fought SE Linux, I had to switch back to Debian, because I switched hosting providers.

    My biggest gripes with Fedora Server:

    Very slow package manager (DNF)
    At least once a week I had to reboot it in order to install a new kernel, libc, or another software package, which needed a reboot to become active

    Debian instead has a very fast package manager and only needed two, maybe three reboots within five months.

    But then again, it lacks current packages and more modern security features (e.g. ufw vs. firewalld, no SE Linux ootb). Fedora had shown failing services on SSH login, which Debian doesn’t, but Fedora broke it in the first place, because they removed stream support and broke my nginx mainline with configured HTTP/3.0 support when updating from F38 to F39, IIRC.

    In the end I wouldn’t choose any of them and rather go with Alpine Linux to get a minimal system with a blazingly fast package manager and fairly current packages, if my hosting provider had support for it.

    • Most hosting providers provide a rescue mode that will boot a basic linux install with access to the disk and network. Then from there you can install “unsupported” distro’s like alpine / coreos by downloading the iso and writing it to the boot disk. So if you are feeling adventurous and want to give alpine a try that is always an option worth investigating ;P

      I used alpine on my servers before switching to coreos. It’s great, but not so much for running podman containers. Because alpine uses openrc it can’t use the podman quadlet/systemd files, which will mean also no auto updates or other fancy features. But this is only a problem when using podman containers, when running services on the host alpine works great.

    • john

      RE: very slow package manager (DNF)

      echo “max_parallel_downloads=10” >> /etc/dnf/dnf.conf
      echo “fastestmirror=True” >> /etc/dnf/dnf.conf

  7. Robert Hinson

    Fedora comes with DNF5. I don’t know why he said he would have to wait.
    I do believe DNF5 is still in development.

  8. Armin

    Besides Fedora CoreOS the also rpm-ostree/bootc-based Fedora IoT might also be a good option if your workloads runs containerized on podman/systemd. This is what I use on my Raspberry Pi 4.

  9. Ryan G.

    I use Fedora Server for personal workloads because my local hardware isn’t supported by anything newer than RHEL/CENTOS 7 and because I run everything in containers. However I’m starting to think I may need to begin some level of cloud hosting and get it offloaded from local hardware.

  10. GB

    Your use case (tinkering with what is around the corner) is the exact one Fedora Server is made for. While doing this is a real production environment would be downright silly, I can certainly validate doing so in a home lab. Professionals that don’t want to tinker with the next iteration pass over valuable yet very easy learning opportunities.

Comments are Closed

The opinions expressed on this website are those of each author, not of the author's employer or of Red Hat. Fedora Magazine aspires to publish all content under a Creative Commons license but may not be able to do so in all cases. You are responsible for ensuring that you have the necessary permission to reuse any work on this site. The Fedora logo is a trademark of Red Hat, Inc. Terms and Conditions