Skip to content

[Docs Feedback]: Include Examples for PODMAN as a QUADLET #347

Description

@postnick

I confirm that:

  • This issue is about the documentation website, NOT about the Navidrome server

Page URL or path

https://www.navidrome.org/docs/installation/Podman

Suggestion

I have been running my Navidrome server as a podman quadlet as rootless for about 6 months with no issues. I'd like to propose adding some Example documentation as a sub heading on this page: https://www.navidrome.org/docs/installation/ / Podman

Below isn't perfect but it's a good structure i'd like to see brought in if possible. First time contribution here, but I'd love to get it right. I don't know your repo well enough to do a Merge request or your formatting guidelines yet so I'll pose this as a discussion post. These are the notes i keep around for my quadlet setup.

Thank you for your time and hopefully this is put to good use.


If not already created you'll need a folder here:

mkdir -p ~/.config/containers/systemd

You'll have to create a navidrome.container file under the above directory

  1. Enable lingering for the user. This allows containers to start after reboot without user login required
    sudo loginctl enable-linger $USER

  2. To use enable-linger need:
    [Install] WantedBy=default.target

  3. Inform systemd of the new unit file.
    systemctl --user daemon-reload
    This step creates the test-ol.service based on the test-ol.container file.

  4. Start the service.
    systemctl --user start navidrome.service
    The service runs podman to download the Oracle Linux image and then issues the sleep 60 inside the container image.

  5. Check the status of the service.
    systemctl --user status test-navidrome.service

My Example config (Very Cleaned up)

[Unit]
Description=Navidrome music server
Wants=network-online.target
After=network-online.target
After=local-fs.target

[Container]
ContainerName=Navidrome
Image=docker.io/deluan/navidrome:latest
AutoUpdate=registry
PublishPort=4533:4533

# Data and Config files stored on NFS Share is mounted into a PROD folder
Volume=/path/to/data::/data:z
Volume=/path/to/your/music/Music:/music:z

# Security Label disable needed for SELinux
SecurityLabelDisable=true
Environment=ND_LOGLEVEL=info

# Downloads -  Sharing links - Logging
Environment=ND_ENABLEDOWNLOADS=true
Environment=ND_ENABLESHARING=true
Environment=ND_UIWELCOMEMESSAGE="Welcome..."

# Playlist Path
Environment=ND_AUTOIMPORTPLAYLISTS=true
Environment=ND_SMARTPLAYLISTREFRESHDELAY="300s"
Environment=ND_COVERARTPRIORITY="embedded, cover.*, folder.*, front.*, external"

# Plugins Optional
Environment=ND_PLUGINS_ENABLED=true
Environment=ND_PLUGINS_FOLDER="/data/plugins" 
Environment=ND_PLUGINS_AUTORELOAD=true
Environment=ND_PLUGINS_LOGLEVEL=debug
Environment=ND_PLUGINS_CACHESIZE="200MB"


# Telemetry. - THESE NEED TO BE TRUE TO ENABLE LASTFM , LISTENBRAINZ, AND SPTOIFY INTEGRATIONS
Environment=ND_ENABLEINSIGHTSCOLLECTOR=true
Environment=ND_ENABLEEXTERNALSERVICES=true

# For scrobbling 
Environment=ND_LISTENBRAINZ_ENABLED='true'
Environment=ND_LISTENBRAINZ_BASEURL='https://LISTENBRAINZ.URL/1'
#Environment=ND_LISTENBRAINZ_TOKEN='API TOKEN FOR LISTENBRAINZ'

# LastFM API info - For scrobbling! - You need these here for metadata to come like artist photos
Environment=ND_LASTFM_ENABLED=true
Environment=ND_LASTFM_LANGUAGE=en
Environment=ND_LASTFM_APIKEY='LAST_FM_API_KEY'
Environment=ND_LASTFM_SECRET='LAST_FM_API_SECRET'

[Service]
Restart=unless-stopped
TimeoutStartSec=90

[Install]
WantedBy=default.target

When you get your container working, check your firewall rules you may need to allow ports.

To allow specific ports in the RHEL firewall using firewalld, use the firewall-cmd command with the --add-port option. For example, to open TCP port 8080 permanently:

sudo firewall-cmd --permanent --add-port=8080/tcp

After adding the rule, reload the firewall to apply changes:

sudo firewall-cmd --reload

To verify the port is open, list the active ports:

sudo firewall-cmd --list-ports

For multiple ports, specify them in a comma-separated list:

sudo firewall-cmd --permanent --add-port={8080/tcp,8443/tcp,8009/tcp,8005/tcp}

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions