Introduction to My Home Server Setup
I’ve been running Ubuntu on my home server for years, but after the 2025 release of Fedora 38, I decided it was time to switch. The prospect of using the latest Linux kernel, improved systemd integration, and a more streamlined package manager was too enticing to resist. In this article, I’ll walk you through the process of replacing Ubuntu with Fedora on my home server, highlighting what broke and how I fixed it.
Preparing for the Switch
Before making the switch, I took a few precautions to ensure a smooth transition. I backed up all my important data using rsync and btrfs snapshots - don’t bother with anything less, you never know when you’ll need to restore your files. I also made a list of all the services and applications I was running on my Ubuntu server, including nginx, mysql, and nextcloud. This is where people usually get burned, so take your time and make sure you have everything accounted for.
Installing Fedora
The installation process was relatively straightforward. I downloaded the Fedora 38 ISO from the official Fedora website and created a bootable USB drive using dd. After booting from the USB drive, I followed the installation prompts to install Fedora on my server. The real trick is to make sure you have a reliable internet connection, as the installer will need to download some additional packages.
Post-Installation Configuration
After the installation, I was greeted with a familiar systemd-based system. I configured my network settings using nmcli and set up my ssh server to allow remote access. I also installed the necessary packages, including nginx, mysql, and nextcloud, using dnf. In practice, this is where you’ll spend most of your time, so be prepared to tweak and adjust your configuration as needed.
What Broke
However, not everything went smoothly. My nextcloud instance, which relies on mysql, refused to start due to a compatibility issue with the new mysql version. I’ve seen this go wrong when people upgrade their database servers, so I was prepared for some troubleshooting. I also had to reconfigure my nginx server to use the new systemd socket activation mechanism.
Fixing the Issues
To fix the nextcloud issue, I edited the config.php file to update the mysql socket path:
'mysql' => [
'host' => '/var/run/mysqld/mysqld.sock',
'user' => 'nextcloud',
'password' => 'password',
'database' => 'nextcloud',
],
I also updated my nginx configuration to use the new systemd socket activation mechanism:
http {
...
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
systemd Configuration
I also had to update my systemd configuration to ensure that my services started correctly. I created a new systemd service file for nextcloud:
[Unit]
Description=Nextcloud
After=network.target
[Service]
User=nextcloud
ExecStart=/usr/bin/php /var/www/nextcloud/occ
Restart=always
[Install]
WantedBy=multi-user.target
Lessons Learned
Replacing Ubuntu with Fedora on my home server was a relatively smooth process, but it did require some tweaking to get everything working correctly. I learned the importance of testing and verifying my configuration after a major system change. If you’re considering making the switch, I recommend taking the time to back up your data, test your configuration, and be prepared to troubleshoot any issues that may arise.