{"id":137871,"date":"2026-09-25T08:00:00","date_gmt":"2026-09-25T08:00:00","guid":{"rendered":"https:\/\/fedoramagazine.org\/?p=44316"},"modified":"2026-09-25T08:00:00","modified_gmt":"2026-09-25T08:00:00","slug":"installing-navidrome-on-fedora-linux-using-podman","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2026\/09\/25\/installing-navidrome-on-fedora-linux-using-podman\/","title":{"rendered":"Installing Navidrome on Fedora Linux using Podman"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"127\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/09\/installing-navidrome-on-fedora-linux-using-podman.jpg\" class=\"webfeedsFeaturedVisual wp-post-image\" alt=\"\" style=\"margin: auto;margin-bottom: 5px;max-width: 100%\" \/><\/p>\n<p class=\"wp-block-paragraph\"><strong>Navidrome<\/strong> is an open-source music server that lets you stream your personal audio collection anywhere. It gives you freedom to listen to your music collection from any browser or mobile device. It\u2019s like your personal Spotify!<\/p>\n<p class=\"wp-block-paragraph\">In this guide, we will explore how to get Navidrome up and running securely using <strong>Podman<\/strong> on Fedora Linux. Best of all, because <strong>Navidrome<\/strong> builds official multi-architecture container images including, <em>linux\/amd64<\/em>, l<em>inux\/arm64<\/em>, and <em>linux\/arm\/v6\/v7<\/em>, this setup is highly portable. Whether your hardware is a standard <em>x86 PC server <\/em>or a low-powered <em>ARM-based Raspberry Pi,<\/em> this walk-through has you covered.<\/p>\n<p> <span id=\"more-44316\"><\/span> <\/p>\n<p class=\"wp-block-paragraph\">For the official image for Navidrome Music Server go to:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"alignleft\"><a href=\"https:\/\/hub.docker.com\/r\/deluan\/navidrome\" target=\"_blank\" rel=\" noopener\"><img decoding=\"async\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/09\/installing-navidrome-on-fedora-linux-using-podman.png\" alt=\"\" \/><\/a><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/hub.docker.com\/r\/deluan\/navidrome\" target=\"_blank\" rel=\"noreferrer noopener\">deluan\/navidrome &#8211; Docker Image<\/a><\/h3>\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/discussion.fedoraproject.org\/t\/installing-navidrome-using-podman\/202608#p-532684-installing-with-podman-1\"><\/a><\/h2>\n<p class=\"wp-block-paragraph\">\n<h3 class=\"wp-block-heading\">Using the official container images with Podman and Podman Compose<\/h3>\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/hub.docker.com\/r\/deluan\/navidrome\" target=\"_blank\" rel=\"noreferrer noopener\">Container images<\/a> are available for the <em>linux\/amd64<\/em>, <em>linux\/arm\/v6<\/em>, <em>linux\/arm\/v7<\/em> and <em>linux\/arm64<\/em> platforms. They include everything needed to run Navidrome<\/p>\n<pre class=\"wp-block-preformatted\">[nico@stamfordbridge navidrome\\]$ podman pull deluan\/navidrome<br \/><img decoding=\"async\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/09\/installing-navidrome-on-fedora-linux-using-podman-1.png\" alt=\"\u2714\" class=\"wp-smiley\" style=\"height: 1em;max-height: 1em\" \/> docker.io\/deluan\/navidrome:latest<br \/>Trying to pull docker.io\/deluan\/navidrome:latest\u2026<br \/>Getting image source signatures<br \/>Copying blob 75c0824146ea done |<br \/>Copying blob 4f4fb700ef54 done |<br \/>Copying blob 4f4fb700ef54 done |<br \/>Copying blob e1dbf20ea67c done |<br \/>Copying blob 1cc3d825d8b2 done |<br \/>Copying config 0c9bad3bd7 done |<br \/>Writing manifest to image destination<br \/>0c9bad3bd7305815d56fe588a64f9172a8bb6aa2bfef3ad77e764c8694e7e860<br \/><\/pre>\n<p class=\"wp-block-paragraph\">If you have SELinux enabled on your Fedora Linux server, then add the <kbd>container_file_t<\/kbd> SELinux context to the Data and Music directories and its contents.<\/p>\n<pre class=\"wp-block-preformatted\">[nico@stamfordbridge navidrome]$ sudo semanage fcontext -a -t container_file_t '\/home\/nico\/navidrome\/Data(\/.\\*)?' [nico@stamfordbridge navidrome]$ sudo semanage fcontext -a -t container_file_t '\/home\/nico\/navidrome\/Music(\/.\\*)?'<\/pre>\n<p class=\"wp-block-paragraph\">Apply the SELinux policy to the Data and Music directories.<\/p>\n<pre class=\"wp-block-preformatted\">[nico@stamfordbridge navidrome]$ sudo restorecon -R \/home\/nico\/navidrome\/Data [nico@stamfordbridge navidrome]$ sudo restorecon -R \/home\/nico\/navidrome\/Music\n<\/pre>\n<p class=\"wp-block-paragraph\">Change the owner of the <kbd>\/home\/nico\/navidrome\/Data<\/kbd> and <kbd>\/home\/nico\/navidrome\/Music<\/kbd> to 1000.<\/p>\n<pre class=\"wp-block-preformatted\">[nico@stamfordbridge navidrome]$ podman unshare chown 1000:1000 \/home\/nico\/navidrome\/Data [nico@stamfordbridge navidrome]$ podman unshare chown 1000:1000 \/home\/nico\/navidrome\/Music<\/pre>\n<h3 class=\"wp-block-heading\"><strong>Using podman-compose :<\/strong><\/h3>\n<p class=\"wp-block-paragraph\">Create a <kbd>podman-compose.yml<\/kbd> file with the following content (or add the navidrome service below to your existing file):<\/p>\n<pre class=\"wp-block-preformatted\">[nico@stamfordbridge navidrome]$ cat podman-compose.yml\nversion: \"3\"\nservices: navidrome: image: deluan\/navidrome:latest user: 1000:1000 # should be owner of volumes ports: - \"4533:4533\" restart: unless-stopped environment: # Optional: put your config options customization here. Examples: ND_SCANSCHEDULE: 1h ND_LOGLEVEL: info ND_SESSIONTIMEOUT: 24h ND_BASEURL: \"\" volumes: - \"\/home\/nico\/navidrome\/Data:\/data\" - \"\/home\/nico\/navidrome\/Music:\/music:ro\"\n<\/pre>\n<p class=\"wp-block-paragraph\">Start the navidrome container with <kbd>podman-compose up -d<\/kbd>.<\/p>\n<pre class=\"wp-block-preformatted\">[nico@stamfordbridge navidrome]$ podman-compose up -d<\/pre>\n<p class=\"wp-block-paragraph\">Note that the environment variables above are just an example and are not required. The values in the example are already the defaults<\/p>\n<h3 class=\"wp-block-heading\">Using podman command line tool:<\/h3>\n<pre class=\"wp-block-preformatted\">[nico@stamfordbridge navidrome]$ podman run -d - name navidrome - restart=unless-stopped - user $(id -u):$(id -g) -v \/home\/ec2-user\/navidrome\/Music:\/music -v \/home\/ec2-user\/navidrome\/Data:\/data -p 4533:4533 -e ND_LOGLEVEL=info deluan\/navidrome:latest\nc00c31d49ec5e0f0a0141aef9e2b69abf6a1b5f0604515bc7111f3e0ef398237 [nico@stamfordbridge navidrome]$ podman ps -a\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nc00c31d49ec5 docker.io\/deluan\/navidrome:latest 9 seconds ago Up 9 seconds 0.0.0.0:4533-&gt;4533\/tcp navidrome<\/pre>\n<h3 class=\"wp-block-heading\">Customization<\/h3>\n<ul class=\"wp-block-list\">\n<li>The user argument should ideally reflect the UID:GID of the owner of the music library to avoid permission issues. For testing purposes you could omit this directive, but as a rule of thumb you should not run a production container as root.<\/li>\n<li>Remember to change the volumes paths to point to your local paths. <kbd>\/data<\/kbd> is where Navidrome will store its DB and cache, <kbd>\/music<\/kbd> is where your music files are stored.<\/li>\n<li>Configuration options can be customized with environment variables as needed. For podman-compose just add them to the environment section or the yml file. For podman CLI use the -e parameter. e.g.: <kbd>-e ND_SESSIONTIMEOUT=24h<\/kbd>.<\/li>\n<li>If you want to use a configuration file with Navidrome running in Podman, you can create a navidrome.toml config file in the \/data folder and set the option <kbd>ND_CONFIGFILE=\/data\/navidrome.toml<\/kbd>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Navidrome is an open-source music server that lets you stream your personal audio collection anywhere. It gives you freedom to listen to your music collection from any browser or mobile device. It\u2019s like your personal Spotify! In this guide, we will explore how to get Navidrome up and running securely using Podman on Fedora Linux. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":137872,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[45,61,46,524,1594,47,540],"class_list":["post-137871","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fedora-os","tag-fedora","tag-fedora-project-community","tag-magazine","tag-music","tag-navidrome","tag-news","tag-podman"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/137871","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=137871"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/137871\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media\/137872"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=137871"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=137871"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=137871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}