white compact disc

Setting up a CD ripping and music server on Fedora Linux

By ntnayrB | My Hobbies | 14 Dec 2025



So you want to have your physical media but also have access to it whenever? Well you're in luck - because that's exactly what this article aims to cover.

Ripping CDs


You'll want to run the following to install software to rip CDs, convert audio files to mp3, and handle the gathering of metadata. If you don't plan to use mp3 files, you can drop lame.


sudo dnf install -y abcde lame python3-eyed3

You'll also want to add your user to the cdrom group via `sudo usermod -aG cdrom $USER` so that you don't need to use sudo every time you invoke `abcde`

Now we can test ripping a CD, stick it into the DVD reader on your PC (or the USB one you bought because modern PCs typically don't have one built in anymore), and run the following:

abcde -d /dev/sr0 -o flac,mp3

 *assuming that your DVD reader enumerated as /dev/sr0, if it hasn't run `lsblk` and look for sr* as it could be a different number.

Setting up Navidrome


Looking at the Navidrome docs, we can see that it only ships packages for debian derivatives. That's fine, we'll just use the container, but since docker is an antipattern in the Enterprise Linux ecosystem (Fedora, CentOS Stream, RHEL/Alma/Rocky/Oracle Linux), we'll convert this to a podman quadlet.


First, we need to enable linger as the user the container will run as so it'll keep running after you log out of the box

sudo loginctl enable-linger $USER

Paste the following into `~/.config/containers/systemd/navidrome.container` to make our quadlet container file:

[Unit]
Description=Navidrome Music Server

[Container]
ContainerName=navidrome
Image=docker.io/deluan/navidrome:latest
AutoUpdate=registry
PublishPort=4533:4533/tcp
UserNS=keep-id
Volume=navidrome-data:/data:Z
Volume=%h/Music:/music:Z
# if your music isn't in your home directory under the subfolder Music change the line above

[Service]
Restart=always

[Install]
WantedBy=default.target

Then run the following:

systemctl --user daemon-reload
systemctl --user enable navidrome
systemctl --user start navidrome

Then open your web browser and go to http://{YOUR_HOST_HERE}:4533 and go through the setup process.

For mobile apps, I use Ultrasonic on Android, but DSub is also popular. Further clients can be found here as Navidrome maintains compatibility with the Subsonic API.

How do you rate this article?

4



My Hobbies
My Hobbies

A catch-all blog for all my interests

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.