FedoraRHEL Based

How To Install Navidrome on Fedora 42

Install Navidrome on Fedora 42

In an age where music streaming services dominate the landscape, having control over your personal music collection might seem like a concept of the past. However, with Navidrome, a modern self-hosted music server, you can enjoy the best of both worlds: the convenience of streaming and the ownership of your music files. This comprehensive guide will walk you through installing Navidrome on Fedora 42, giving you complete control over your music streaming experience.

Table of Contents

Understanding Navidrome

Navidrome is an open-source, self-hosted music streaming server that allows you to access your music collection from anywhere. Unlike commercial streaming platforms that require subscriptions and limit your library to their catalog, Navidrome puts you in control of your music experience.

Key Features of Navidrome:

  • Modern, responsive web interface that works across devices
  • Support for numerous audio formats including MP3, FLAC, OGG, and more
  • On-the-fly transcoding capabilities through FFmpeg
  • Multi-user support with customizable access levels
  • Compatibility with the Subsonic API, enabling use with numerous mobile applications
  • Album art and metadata management
  • Custom playlist creation
  • Low resource footprint, making it suitable for modest hardware

Navidrome stands out from other self-hosted music servers due to its modern technology stack (built with Go and React), active development community, and excellent performance even with large music libraries. Users report successful deployments with collections exceeding 900,000 songs, proving its robustness for music enthusiasts with extensive collections.

Prerequisites for Installing Navidrome on Fedora 42

Before diving into the installation process, ensure your system meets these requirements:

Hardware Requirements:

  • A 64-bit x86 computer (ARM devices are also supported with compatible builds)
  • Minimum 1GB RAM (2GB recommended for larger music libraries)
  • Sufficient storage space for your music collection
  • Network connectivity for remote access

Software Prerequisites:

  • Fedora 42 Server or Workstation with the latest updates
  • Administrative (sudo) privileges
  • Basic knowledge of Linux terminal commands
  • FFmpeg installed for audio transcoding

Networking Considerations:

  • Port forwarding configured if you plan to access from outside your network
  • Domain name setup (optional but recommended for remote access)
  • Understanding of basic firewall management

Take a moment to verify these requirements before proceeding. Having all prerequisites in place will ensure a smooth installation experience and prevent common issues that might arise during setup.

Preparing Your Fedora 42 System

Proper preparation is crucial for a successful Navidrome installation. Follow these steps to prepare your Fedora 42 system:

System Update

First, ensure your system is fully updated with the latest security patches and package updates:

sudo dnf update -y

This command updates all installed packages to their latest versions, ensuring compatibility and security.

Installing Essential Dependencies

Navidrome requires several dependencies to function properly, particularly FFmpeg for audio transcoding:

sudo dnf install -y wget unzip ffmpeg libprotobuf-c protobuf-c-compiler libicu-devel libicu

These packages provide necessary functionality for downloading the Navidrome binary, extracting it, and processing your media files for streaming.

Firewall Configuration

By default, Fedora uses firewalld as its firewall management tool. You’ll need to open port 4533 to allow access to Navidrome’s web interface:

sudo firewall-cmd --permanent --add-port=4533/tcp
sudo firewall-cmd --reload

The first command adds a permanent rule allowing TCP traffic on port 4533, while the second command applies the changes without requiring a system restart.

Creating Directory Structure

Next, set up the necessary directories for Navidrome installation and data storage:

sudo mkdir -p /opt/navidrome
sudo mkdir -p /var/lib/navidrome

Setting Appropriate Permissions

For better security, you might want to create a dedicated user for running Navidrome:

sudo useradd -r navidrome
sudo chown -R navidrome:navidrome /opt/navidrome
sudo chown -R navidrome:navidrome /var/lib/navidrome

Alternatively, if you prefer to run Navidrome under your user account, simply assign ownership to your user:

sudo chown -R $USER:$USER /opt/navidrome
sudo chown -R $USER:$USER /var/lib/navidrome

With these preparations complete, your Fedora 42 system is ready for Navidrome installation.

Installation Methods Overview

Navidrome can be installed on Fedora 42 through several methods, each with its own advantages and complexity levels. Understanding these options helps you choose the best approach for your specific needs.

Docker Installation

This method offers excellent isolation and simplifies updates but requires basic Docker knowledge. It’s ideal if you already use Docker for other services or prefer containerized applications.

Binary Installation

The binary installation provides direct control without containerization overhead. This approach is straightforward for most users and offers a good balance between simplicity and control.

Package Managers

While no official Fedora package exists for Navidrome yet, community repositories might offer packages. This method provides integration with system package management but depends on third-party maintenance.

Building from Source

For advanced users, building from source offers maximum customization but requires development tools and compilation knowledge. This approach is typically unnecessary for most users.

For most Fedora 42 users, the binary installation method provides the best balance of simplicity and control. Let’s explore both the Docker and binary installation methods in detail.

Installing Navidrome with Docker on Fedora 42

Docker provides an isolated environment for running applications, making it an excellent choice for deploying Navidrome. Follow these steps for a Docker-based installation:

Installing Docker

First, install Docker on your Fedora 42 system:

sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io

Starting and Enabling Docker Service

After installation, start the Docker service and enable it to launch at system startup:

sudo systemctl start docker
sudo systemctl enable docker

Installing Docker Compose (Optional but Recommended)

Docker Compose simplifies managing Docker containers with complex configurations:

sudo dnf install -y docker-compose-plugin

Creating Docker Compose Configuration

Create a directory for your Docker configuration and prepare the docker-compose.yml file:

mkdir -p ~/navidrome
cd ~/navidrome
nano docker-compose.yml

Add the following content to your docker-compose.yml file:

version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    ports:
      - "4533:4533"
    environment:
      - ND_SCANINTERVAL=1h
      - ND_LOGLEVEL=info
    volumes:
      - ./data:/data
      - /path/to/your/music:/music:ro
    restart: unless-stopped

Remember to replace `/path/to/your/music` with the actual path to your music library on your host system. The `:ro` flag makes your music directory read-only inside the container for added security.

Launching Navidrome Container

Start the Navidrome container using Docker Compose:

docker-compose up -d

The `-d` flag runs the container in detached mode, allowing it to run in the background.

Verifying Docker Installation

Verify that the container is running properly:

docker ps

You should see the Navidrome container listed with status “Up”. The web interface will now be available at `http://your-server-ip:4533`.

Manual Binary Installation on Fedora 42

For users who prefer a more direct installation without Docker, the binary installation method provides excellent control and potentially better performance.

Downloading the Latest Navidrome Release

First, check the latest version from the Navidrome GitHub releases page and download it (replace the version number with the current one):

wget https://github.com/navidrome/navidrome/archive/refs/tags/v0.55.2.zip

Extracting the Archive

Extract the downloaded archive:

unzip v0.55.2.zip

Installing the Binary

Move the extracted binary to a location in your system path and make it executable:

sudo mv navidrome /usr/local/bin/
sudo chmod +x /usr/local/bin/navidrome

Creating Data Directory

Ensure your data directory exists with proper permissions:

sudo mkdir -p /var/lib/navidrome
sudo chown $USER:$USER /var/lib/navidrome

Creating Configuration File

Create a basic configuration file to define your music library location:

nano /var/lib/navidrome/navidrome.toml

Add the following content to this file:

MusicFolder = "/path/to/your/music"
DataFolder = "/var/lib/navidrome"
LogLevel = "info"
ScanSchedule = "@every 1h"

Replace `/path/to/your/music` with the actual path to your music collection.

Testing the Installation

Before setting up the system service, test that Navidrome runs correctly:

navidrome --configfile=/var/lib/navidrome/navidrome.toml

If everything is configured correctly, Navidrome should start and display initialization messages. Press Ctrl+C to stop it once you’ve verified it’s working.

Setting Up Systemd Service for Navidrome

To ensure Navidrome starts automatically with your system and runs in the background, create a systemd service file:

Creating the Service File

sudo nano /etc/systemd/system/navidrome.service

Add the following configuration, adjusting the username and group as needed:

[Unit]
Description=Navidrome Music Server
After=network.target

[Service]
User=YOUR_USERNAME
Group=YOUR_GROUP
ExecStart=/usr/local/bin/navidrome --configfile=/var/lib/navidrome/navidrome.toml
WorkingDirectory=/var/lib/navidrome
Restart=always

[Install]
WantedBy=multi-user.target

Replace `YOUR_USERNAME` and `YOUR_GROUP` with your actual username and group.

Enabling and Starting the Service

Reload the systemd daemon to recognize the new service and start it:

sudo systemctl daemon-reload
sudo systemctl enable navidrome
sudo systemctl start navidrome

Verifying Service Status

Check that the service is running correctly:

sudo systemctl status navidrome

You should see “active (running)” in the output. If the service failed to start, check the logs:

sudo journalctl -u navidrome -f

Advanced Navidrome Configuration

Proper configuration enhances your Navidrome experience on Fedora 42. The main configuration file is located at `/var/lib/navidrome/navidrome.toml` (or within your Docker volume if using that installation method).

Essential Configuration Options

# Basic configuration
MusicFolder = "/path/to/your/music"
DataFolder = "/var/lib/navidrome"
LogLevel = "info"

# Server settings
Address = "0.0.0.0"
Port = 4533
BaseURL = ""

# Scanning options
ScanSchedule = "@every 1h"

Security Configurations

# Security settings
AuthRequestLimit = 5
AuthWindowLength = "20s"
SessionTimeout = "24h"
EnableGravatar = false

Transcoding Settings

# Transcoding settings
TranscodingCacheSize = "100MB"
TranscodingCacheTTL = "24h"

Performance Tuning

For larger music libraries, consider adjusting scan schedules and cache settings:

# Performance tuning
ScanSchedule = "@every 12h"
CacheFolder = "/var/lib/navidrome/cache"

After making changes to the configuration file, restart the Navidrome service:

sudo systemctl restart navidrome

Accessing the Navidrome Web Interface

Once Navidrome is installed and running, you can access its web interface:

Local Access

Open a web browser and navigate to:

http://localhost:4533

Remote Access (Within Your Network)

From another device on the same network, use your server’s IP address:

http://your-server-ip:4533

Install Navidrome on Fedora 42

First-time Setup

When first accessing Navidrome, you’ll need to create an admin user. This account has full administrative privileges, so use a strong password. After logging in, Navidrome will automatically begin scanning your music library.

Setting Up a Reverse Proxy with Nginx

For improved security and functionality, especially when accessing Navidrome from outside your network, setting up a reverse proxy is highly recommended:

Installing Nginx on Fedora 42

sudo dnf install nginx
sudo systemctl enable --now nginx

Basic Nginx Reverse Proxy Configuration

Create a new configuration file:

sudo nano /etc/nginx/conf.d/navidrome.conf

Add the following configuration:

server {
    listen 80;
    server_name music.yourdomain.com;

    location / {
        proxy_pass http://localhost:4533;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Securing with SSL

For secure HTTPS access, consider adding SSL using Let’s Encrypt:

sudo dnf install certbot python3-certbot-nginx
sudo certbot --nginx -d music.yourdomain.com

Applying Changes

After configuring your reverse proxy, restart Nginx:

sudo systemctl restart nginx

With a reverse proxy configured, you can now access Navidrome through your domain name with proper encryption.

Mobile Access with Subsonic-compatible Apps

One of Navidrome’s key advantages is its compatibility with the Subsonic API, enabling access through various mobile applications:

Compatible Mobile Applications

  • DSub (Android)
  • Ultrasonic (Android)
  • Play:Sub (iOS)
  • Substreamer (Android/iOS)
  • Subtracks (Android)

Setting Up Mobile Access

  1. Install your chosen Subsonic-compatible app
  2. When adding a server, use these settings:
    • Server Address: Your server’s address (e.g., `music.yourdomain.com` or IP)
    • Username: Your Navidrome username
    • Password: Your Navidrome password
    • Server Path: `/` (or `/navidrome` if using a subfolder in your reverse proxy)

Testing Mobile Connectivity

After configuration, test browsing your music library and playing a track to verify connectivity. If you encounter issues, check that your server is reachable from your mobile network and that port forwarding is correctly configured if accessing from outside your home network.

Troubleshooting Common Navidrome Issues

Even with careful configuration, you might encounter issues with your Navidrome installation. Here are solutions to common problems:

Service Won’t Start

If the Navidrome service fails to start, check the logs:

sudo journalctl -u navidrome -f

Common causes include:

  • Configuration file errors (check syntax in navidrome.toml)
  • Missing dependencies (particularly FFmpeg)
  • Permission issues with music or data folders
  • Port conflicts (something else might be using port 4533)

Music Library Not Scanning

If Navidrome isn’t finding your music:

  • Verify the path in `MusicFolder` is correct and accessible
  • Check file permissions on your music directory
  • Ensure supported file formats are used
  • Try running a manual scan through the web interface

Permission Problems

If Navidrome can’t access your music files:

sudo chown -R navidrome:navidrome /var/lib/navidrome
sudo chown -R navidrome:navidrome /path/to/your/music

Alternatively, adjust permissions to allow reading:

sudo chmod -R 755 /path/to/your/music

Database Errors

If you encounter database corruption:

  1. Stop Navidrome: sudo systemctl stop navidrome
  2. Back up the database: cp /var/lib/navidrome/navidrome.db /var/lib/navidrome/navidrome.db.bak
  3. Delete the corrupted database: rm /var/lib/navidrome/navidrome.db
  4. Restart Navidrome: sudo systemctl start navidrome

Updating Navidrome on Fedora 42

Keeping Navidrome updated ensures you have the latest features and security patches:

For Docker Installations

# Navigate to your docker-compose directory
cd ~/navidrome

# Pull the latest image
docker-compose pull

# Restart the container
docker-compose up -d

For Binary Installations

  1. Download the latest release
  2. Stop the Navidrome service: sudo systemctl stop navidrome
  3. Replace the binary: sudo mv navidrome /usr/local/bin/
  4. Restore permissions: sudo chmod +x /usr/local/bin/navidrome
  5. Start the service: sudo systemctl start navidrome

Always check the release notes before updating to be aware of any breaking changes or new configuration options.

Congratulations! You have successfully installed Navidrome. Thanks for using this tutorial for installing Navidrome on Fedora 42 Linux system. For additional help or useful information, we recommend you check the official Navidrome website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button