bolt Valebyte VPS from $4/mo — NVMe, 60s deploy.

Get a VPS arrow_forward

Navidrome on VPS: installation, configuration, and maintenance

calendar_month June 12, 2026 schedule 17 min read visibility 31 views
person
Valebyte Team
Navidrome on VPS: installation, configuration, and maintenance
Navidrome on VPS: Installation, Configuration, and Maintenance — is the process of deploying a personal music streaming server on a Virtual Private Server, which allows you to gain full control over your media library and ensure access to it from anywhere in the world. Deploying Navidrome on a VPS using Docker provides flexibility, scalability, and ease of management, transforming your server into a powerful hub for listening to music.

What is Navidrome and why is it ideal for a self-hosted media library?

Navidrome is a modern, open-source music server designed to allow you to stream your own music collection from any device using a web interface or mobile applications compatible with the Subsonic API. Unlike commercial services, Navidrome gives you full control over your data and files, freeing you from subscription fees and catalog restrictions. It's an ideal solution for those looking for a reliable `navidrome self-hosted` option for their audio library.

Key Features of Navidrome

Navidrome offers a rich set of features that make it one of the best choices for organizing your own music collection:
  • Subsonic API Compatibility: Supports a wide range of mobile and desktop clients such as Dsub, Subtracks, SubStreamer, Astiga, and many others. This means you can use familiar applications to access your music.
  • Modern Web Interface: A clean, intuitive, and responsive interface that works perfectly on any device — from desktops to smartphones.
  • Automatic Media Library Scanning: Navidrome automatically scans your music folder, extracts metadata (ID3 tags, album art), and organizes your collection.
  • Wide Format Support: Plays MP3, FLAC, OGG, AAC, M4A, and other popular audio formats.
  • On-the-fly Transcoding: Ability to transcode audio files to a lower bitrate or different format to save bandwidth or ensure device compatibility.
  • Playlist and Favorites Management: Create and manage playlists, mark favorite tracks and albums.
  • Multi-user Mode: Supports multiple users with individual settings and collections. Each user can have their own listening history and playlists.
  • Low System Requirements: Navidrome is written in Go, making it very efficient and resource-friendly, which is ideal for `navidrome on a server` with limited capabilities.

Advantages of Navidrome on a VPS

Deploying Navidrome on a VPS offers several significant advantages compared to a local installation or using a home server:
  • 24/7 Availability: Your music server will be accessible 24/7 from anywhere in the world with an internet connection, without the need to keep a home computer powered on.
  • Stability and Reliability: Commercial VPS providers, such as Valebyte.com, ensure high availability, stable internet connectivity, and regular hardware maintenance.
  • Scalability: You can easily increase or decrease your VPS resources (CPU, RAM, disk space) as your needs change, without interrupting service operation.
  • Security: A VPS is located in a professional data center with physical security and redundant power. You also have full control over your operating system's security.
  • Dedicated IP Address: Most VPS come with a dedicated IP address, simplifying DNS configuration and access to your `navidrome vps` via a domain name.
  • No Home Internet Issues: You don't have to worry about dynamic IP addresses, port forwarding on your router, or home internet provider restrictions.

Navidrome System Requirements and Optimal VPS Selection

Choosing the right VPS for `Navidrome installation` is critical to ensure stable and fast operation of your media library. While Navidrome is quite lightweight, your resource requirements will depend on the size of your collection, the number of active users, and the need for transcoding.

Minimum Requirements for Navidrome Installation

Navidrome is known for its efficiency and can run even on very modest configurations.
  • Processor (CPU): 1 vCPU with 1-2 GHz. Navidrome does not require much CPU time unless there is active transcoding.
  • Random Access Memory (RAM): 512 MB. This is sufficient for processing a small collection (up to 10,000 tracks) and 1-2 active users without transcoding.
  • Disk Space: Minimum 10-20 GB for the operating system and Navidrome itself. The main storage will depend on the size of your music collection. SSD or NVMe drives are recommended for better performance.
  • Network Interface: 100 Mbps. This is more than enough for music streaming.
  • Operating System: Any modern Linux distribution (Ubuntu, Debian, CentOS, etc.).

Recommended VPS Configurations for Different Workloads

For comfortable operation and scaling of your `navidrome on a server`, consider the following configurations, based on typical usage scenarios:

1. Small Personal Media Library (1-2 users, up to 50,000 tracks, rare transcoding):

  • CPU: 1-2 vCPU (2-2.5 GHz).
  • RAM: 1-2 GB.
  • Disk: 50-100 GB NVMe. NVMe will significantly speed up library scanning and database operations.
  • Example Cost: From $5-10/month.

2. Family or Small Group of Friends (2-5 users, up to 200,000 tracks, moderate transcoding):

  • CPU: 2-4 vCPU (2.5+ GHz). Additional cores will be useful for parallel transcoding.
  • RAM: 2-4 GB. Will increase caching and database performance.
  • Disk: 100-200 GB NVMe.
  • Example Cost: From $10-20/month.

3. Large Collection and Active Use (5+ users, over 200,000 tracks, frequent transcoding):

  • CPU: 4+ vCPU (3+ GHz). Important for handling multiple simultaneous transcodings.
  • RAM: 4-8 GB.
  • Disk: 200 GB+ NVMe. External storage or an attached block volume may be required for very large collections.
  • Example Cost: From $20-40/month.

When choosing a VPS, also pay attention to the virtualization type (KVM is preferable to OpenVZ for full control and stability; you can learn more about this in the article KVM VPS vs OpenVZ VPS in 2026) and data center location. Choose a provider that offers flexible pricing plans and the ability to quickly upgrade. For a deeper understanding of what a VPS is, we recommend checking out the VPS buyer's guide.

Looking for a reliable server for your projects?

VPS from $10/month and dedicated servers from $9/month with NVMe, DDoS protection, and 24/7 support.

View offers →

Preparing the VPS for Navidrome Installation: Basic Steps

Before proceeding with `Navidrome installation`, you need to prepare your VPS. These steps will ensure a secure and stable environment for your music server.

System Update and Docker Installation

First, connect to your VPS via SSH. If you are using Linux or macOS, open a terminal; for Windows, you can use PuTTY or similar clients.
ssh user@your_vps_ip_address
After a successful connection, execute the following commands to update the system and install necessary packages:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
Now, let's install Docker and Docker Compose. Docker is a containerization platform that simplifies the deployment and management of applications like Navidrome. `navidrome docker` is the recommended installation method.

Installing Docker Engine:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

Adding user to the docker group (to avoid using sudo with every docker command):

sudo usermod -aG docker $USER
newgrp docker # Applies changes to the current session, or reconnect via SSH

Installing Docker Compose (V2):

sudo apt install -y docker-compose-plugin

You can verify the installation with these commands:

docker --version
docker compose version

Creating Necessary Directories and Users

Navidrome will require directories to store its configuration, database, and, of course, your music collection. It is recommended to create a separate directory for Navidrome and subdirectories within it.
sudo mkdir -p /opt/navidrome/{data,music}
sudo chown -R $USER:$USER /opt/navidrome
  • `/opt/navidrome/data`: This is where Navidrome will store its database, cache, album art, and other data.
  • `/opt/navidrome/music`: This is where your music collection will reside. You can upload it here later via SFTP or rsync.

Configuring the firewall (UFW) is also a critical step for the security of your `navidrome vps`. Allow SSH, HTTP, and HTTPS traffic:

sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable # Confirm if prompted
rocket_launch Quick pick

Need a dedicated server?

Compare prices from top providers. Configure and order in minutes.

Browse dedicated servers arrow_forward

Step-by-step Navidrome Installation on VPS using Docker Compose

Using Docker Compose significantly simplifies `Navidrome installation`, allowing you to define the entire service configuration in a single YAML file.

Configuring the docker-compose.yml file for Navidrome

Create a `docker-compose.yml` file in the `/opt/navidrome/` directory:
cd /opt/navidrome
nano docker-compose.yml
Enter the following content:
version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    restart: unless-stopped
    ports:
      - "4533:4533" # Port for accessing Navidrome
    environment:
      # Optional environment variables, see https://www.navidrome.org/docs/usage/configuration-options/ for details
      ND_SCANSCHEDULE: 1h # Scan library every hour
      ND_LOGLEVEL: info # Logging level
      ND_SESSIONTIMEOUT: 24h # Session timeout
      ND_ENABLETRANSCODING: "true" # Enable transcoding
      # ND_TRANSCODE_CACHE_SIZE: 100MB # Transcoding cache, can be increased
      # ND_DEFAULTTHEME: dark # Default dark theme
      # ND_MUSICFOLDER: "/music" # Path to music inside the container (already set by default)
    volumes:
      - ./data:/data # Location for Navidrome database and cache
      - ./music:/music:ro # Location for your music (read-only)
    # user: "1000:1000" # Optional: run container as a specific user/group
    # network_mode: "host" # Optional: use host network stack (not recommended with reverse proxy)
    # healthcheck: # Optional: container health check
    #   test: ["CMD", "curl", "-f", "http://localhost:4533/ping"]
    #   interval: 1m30s
    #   timeout: 10s
    #   retries: 3
    #   start_period: 30s

Let's break down the key parameters in `docker-compose.yml` for `navidrome docker`:

  • `image: deluan/navidrome:latest`: Specifies which Docker image to use. `latest` means the latest stable version.
  • `container_name: navidrome`: Assigns a convenient name to the container.
  • `restart: unless-stopped`: The container will automatically restart on failures or after a VPS reboot, unless it was manually stopped.
  • `ports: - "4533:4533"`: Maps container port 4533 to host port 4533. Navidrome uses this port by default.
  • `environment`: Section for Navidrome environment variables. Here you can configure scan schedule, logging level, session timeouts, and enable transcoding. A complete list of options is available in the official Navidrome documentation.
  • `volumes`: This section mounts local directories from your VPS into the container.
    • `./data:/data`: Mounts the `/opt/navidrome/data` directory on the host to `/data` inside the container. All modifiable Navidrome data will be stored here.
    • `./music:/music:ro`: Mounts the `/opt/navidrome/music` directory on the host to `/music` inside the container. The `:ro` suffix means "read-only", which is recommended for the music folder to prevent Navidrome from accidentally modifying your files.

Starting Navidrome and Initial Configuration

Save the `docker-compose.yml` file and start the Navidrome container:
docker compose up -d
The `-d` flag means the container will be started in detached mode (background). Within a few seconds, the container should be running. You can check its status:
docker compose ps

Or view the logs:

docker compose logs -f navidrome
Now you can access the Navidrome web interface by opening `http://your_vps_ip_address:4533` in your browser. On the first launch, Navidrome will prompt you to create an administrator user. Enter your desired username and password. After creating the account, you can log in and start uploading your music to the `/opt/navidrome/music` directory on your VPS. After uploading, Navidrome will automatically scan for new files. To upload music, use an SFTP client (e.g., FileZilla, WinSCP) or the `rsync` command from your local computer:
rsync -avzP /path/to/your/music_collection/ user@your_vps_ip_address:/opt/navidrome/music/

Configuring Reverse Proxy and HTTPS for Secure Navidrome Access

Direct access to Navidrome via an IP address and a non-standard port (4533) is not an optimal solution for `navidrome vps`. Using a reverse proxy and HTTPS will ensure secure access via a domain name and standard ports (80/443). We will cover configuration with Nginx and Caddy.

Configuring Nginx as a Reverse Proxy

Nginx is a powerful and popular web server that is excellent for acting as a reverse proxy.

1. Installing Nginx:

sudo apt update
sudo apt install -y nginx

2. Setting up a domain name:

Ensure that your domain name (e.g., `music.yourdomain.com`) points to your VPS's IP address via an A-record in DNS.

3. Creating the Nginx configuration file:

sudo nano /etc/nginx/sites-available/navidrome.conf

Insert the following configuration, replacing `music.yourdomain.com` with your domain:

server {
    listen 80;
    listen [::]:80;
    server_name music.yourdomain.com; # Replace with your domain

    # Redirect HTTP to HTTPS (will be configured after certificate acquisition)
    # return 301 https://$host$request_uri;

    location / {
        proxy_pass http://localhost:4533; # Redirect to Navidrome
        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;
        proxy_redirect off;

        # WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

4. Activating the configuration:

sudo ln -s /etc/nginx/sites-available/navidrome.conf /etc/nginx/sites-enabled/
sudo nginx -t # Test config syntax
sudo systemctl restart nginx
Now Navidrome should be accessible via `http://music.yourdomain.com`.

5. Configuring HTTPS with Let's Encrypt (Certbot):

To obtain a free SSL/TLS certificate, use Certbot. This is critical for secure `navidrome self-hosted` access.

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d music.yourdomain.com
Certbot will automatically configure Nginx to use HTTPS and add a redirect from HTTP to HTTPS. Follow Certbot's instructions. Once completed, your Navidrome will be accessible via `https://music.yourdomain.com`.

Configuring Caddy for Automatic HTTPS

Caddy is a modern web server that automatically manages Let's Encrypt HTTPS certificates, making it extremely simple to configure for `navidrome on a server`.

1. Installing Caddy:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy

2. Configuring the Caddyfile:

sudo nano /etc/caddy/Caddyfile

Remove the existing content and insert the following, replacing `music.yourdomain.com` with your domain:

music.yourdomain.com {
    reverse_proxy localhost:4533
    # Optional: enable Gzip compression
    # encode gzip
}

3. Restarting Caddy:

sudo systemctl restart caddy
sudo systemctl enable caddy
Caddy will automatically obtain and install an SSL certificate for your domain. Your Navidrome will be accessible via `https://music.yourdomain.com` without additional steps. This significantly simplifies `Navidrome installation` with secure access.

Maintaining Navidrome on the Server: Backups, Updates, and Monitoring

Regular maintenance of your `navidrome vps` is key to its long-term stability, security, and relevance. This includes data backup, timely updates, and performance monitoring.

Navidrome Data Backup Strategies

Backup is the most important aspect of maintenance. Your music files and Navidrome database must be protected.

What to back up:

  • Navidrome Database and Configuration: Stored in the `/opt/navidrome/data` directory. This includes information about your library, users, playlists, listening history, and server settings.
  • Music Files: Stored in the `/opt/navidrome/music` directory. This is your main collection.

Backup Method:

For the Navidrome database, it's best to stop the container before copying to avoid data corruption.

# 1. Stop Navidrome
docker compose stop navidrome

# 2. Create an archive of Navidrome data
tar -czvf /path/to/backup/navidrome_data_$(date +%Y%m%d%H%M%S).tar.gz /opt/navidrome/data

# 3. Start Navidrome
docker compose start navidrome

# 4. Copy music files (if they are not synced from an external source)
# For large collections, use rsync for incremental backups
rsync -avz --delete /opt/navidrome/music/ /path/to/backup/music_collection/

Automating Backups with Cron:

Create the script `backup_navidrome.sh`:

#!/bin/bash
BACKUP_DIR="/path/to/your/backup/location" # Specify your path
DATE=$(date +%Y%m%d%H%M%S)
DATA_DIR="/opt/navidrome/data"
MUSIC_DIR="/opt/navidrome/music"

echo "Starting Navidrome backup at $DATE"

# Stop Navidrome container
docker compose stop navidrome

# Create a backup of Navidrome data
tar -czvf $BACKUP_DIR/navidrome_data_$DATE.tar.gz $DATA_DIR
echo "Navidrome data backed up to $BACKUP_DIR/navidrome_data_$DATE.tar.gz"

# Start Navidrome container
docker compose start navidrome

# Incremental music backup (if needed)
# rsync -az --delete $MUSIC_DIR/ $BACKUP_DIR/music_sync/
# echo "Music collection synced to $BACKUP_DIR/music_sync/"

echo "Navidrome backup finished."
Make the script executable: `chmod +x /path/to/backup_navidrome.sh`. Add a task to Cron (e.g., for daily backup at 3 AM):
crontab -e
Add the line:
0 3 * * * /path/to/backup_navidrome.sh >> /var/log/navidrome_backup.log 2>&1

Storing Backups:

Always store backups on a separate medium or in a different location from your VPS. This could be S3-compatible storage, another VPS, a local server, or cloud storage.

Procedure for Updating Navidrome and Docker Containers

Regular updates provide access to new features, bug fixes, and security enhancements.

Updating Navidrome:

Since you are using `navidrome docker`, updating is very simple:

cd /opt/navidrome
docker compose pull navidrome # Downloads the new Navidrome image
docker compose up -d         # Stops the old container, starts a new one with the updated image

Updating Docker Engine:

Regularly update Docker Engine and the Docker Compose plugin via your OS package manager:

sudo apt update
sudo apt upgrade -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Updating OS:

Don't forget to update your VPS's operating system:

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y # For deeper kernel and package updates
sudo reboot # Reboot after kernel update

Monitoring VPS Performance and Resources

Monitoring ensures that your `navidrome on a server` runs efficiently and without issues.
  • Checking Resource Usage: Use `htop` (for CPU/RAM), `df -h` (for disk), `iotop` (for disk I/O) commands.
  • Viewing Container Logs: `docker compose logs -f navidrome` will help identify issues with Navidrome.
  • External Monitoring: For more advanced monitoring, consider installing tools like Netdata on VPS or Prometheus with Grafana. These tools provide graphs of resource usage, network traffic, and other metrics, which are critical for maintaining the stability of your `navidrome vps`.
rocket_launch Quick pick

Need a dedicated server?

Compare prices from top providers. Configure and order in minutes.

Browse dedicated servers arrow_forward

Which VPS Configuration to Choose for Real Navidrome Workload?

Choosing the right VPS configuration for `Navidrome installation` depends on many factors, including the size of your media library, the number of active users, and the intensity of feature usage, such as transcoding. Valebyte.com offers various pricing plans that can meet these needs.

Assessing Needs Based on Library Size and Users

1. Media Library Size:

  • Small (up to 50,000 tracks, ~300-500 GB): The main requirement is sufficient disk space. NVMe drives will significantly speed up initial scanning and overall responsiveness.
  • Medium (50,000 - 200,000 tracks, ~500 GB - 2 TB): In addition to disk space, more RAM will be needed for metadata caching and a more powerful processor for fast searching and navigation.
  • Large (over 200,000 tracks, 2 TB+): Here, not only volume but also disk speed is important, as well as sufficient CPU/RAM resources to handle requests from multiple users and maintain database performance.

2. Number of Active Users:

  • 1-2 users: Minimal CPU and RAM requirements.
  • 3-5 users: More CPU (especially if transcoding is involved) and RAM will be needed for simultaneous sessions.
  • More than 5 users: A VPS with 4+ vCPU and 4+ GB RAM is recommended to ensure smooth operation for everyone.

3. Transcoding:

Transcoding is the most resource-intensive process. If you plan to transcode frequently (e.g., for streaming FLAC to mobile devices with limited bandwidth), choose a VPS with a more powerful processor (high clock speed and number of cores). Navidrome uses FFmpeg for transcoding, and this process can be quite CPU-demanding.

4. Network Bandwidth:

For music streaming, stable and sufficiently wide bandwidth is important. Even for high-quality FLAC streaming, a single user requires about 1-2 Mbps. For multiple simultaneous users, 10-20 Mbps will be needed. Most modern VPS plans offer channels from 100 Mbps to 1 Gbps, which is more than enough for `navidrome self-hosted`.

Comparing Valebyte.com Plans for Navidrome

Valebyte.com offers flexible plans for VPS and dedicated servers that are ideal for `navidrome vps` with varying workloads. Below is a table with example configurations that may suit different Navidrome usage scenarios.
Plan (Example) vCPU RAM NVMe Disk Bandwidth Recommended Navidrome Scenario Approx. Price/month
Valebyte Mini 1 Core (2.5 GHz) 1 GB 50 GB 1 Gbps Small personal media library (up to 50k tracks), 1-2 users, no active transcoding. Ideal for starting `Navidrome installation`. $7.99
Valebyte Basic 2 Cores (2.8 GHz) 2 GB 100 GB 1 Gbps Family media library (up to 100k tracks), 2-4 users, moderate transcoding. Good balance for most users. $14.99
Valebyte Pro 4 Cores (3.0 GHz) 4 GB 200 GB 1 Gbps Large collection (up to 250k tracks), 4-8 users, frequent transcoding. Excellent performance for active `navidrome on a server`. $29.99
Valebyte Max 6 Cores (3.2 GHz) 8 GB 400 GB 1 Gbps Very large media library (250k+ tracks), 8+ users, intensive transcoding. Maximum performance and scalability. $49.99

When choosing a VPS, always focus on your current and future needs. Start with a smaller configuration and scale up as your collection or user count grows. All Valebyte.com plans provide high-performance NVMe drives and stable network channels, which are key to excellent performance for your `navidrome vps`.

If you are unsure which type of VPS suits you, or want to understand the difference between self-managed and managed solutions, check out the article Self-managed vs Managed VPS in 2026.

Conclusion

Navidrome on a VPS from Valebyte.com provides a powerful, flexible, and fully controlled solution for your personal music library. With Docker and Docker Compose, `Navidrome installation` becomes a straightforward task, and the right VPS configuration choice and regular maintenance will ensure stable operation and availability of your music anytime, anywhere.

Ready to choose a server?

VPS and dedicated servers in 72+ countries with instant activation and full root access.

Get started now →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.