Add configuration for Navidrome

Navidrome is a Subsonic/Airsonic-compatible music server with a built-in
web interface, and can be used as a quasi-self-hosted-Spotify-alternative.

By default, music files are read from an empty `navidrome-music` volume,
which is expected to be populated via whatever external means are
available to the server. The workflow here might be improved in the
future.
This commit is contained in:
Alex Palaistras 2021-11-18 22:22:51 +00:00
parent aafd88dafb
commit b31beff6f1
7 changed files with 71 additions and 0 deletions

View File

@ -0,0 +1,21 @@
FROM debian:bullseye-slim
ARG VERSION=0.46.0
RUN apt-get update -y && apt-get upgrade -y && \
apt-get install -y --no-install-recommends curl ca-certificates gosu ffmpeg
ENV PACKAGE_URL https://github.com/deluan/navidrome/releases/download/v${VERSION}/navidrome_${VERSION}_Linux_x86_64.tar.gz
RUN curl -L ${PACKAGE_URL} | tar -C /bin -xvzf - navidrome && chmod +x /bin/navidrome
RUN apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false curl
RUN addgroup --system --gid 10000 navidrome
RUN adduser --system --uid 10000 --ingroup navidrome --home /var/lib/navidrome navidrome
COPY container/config /etc/navidrome
VOLUME /music
USER navidrome
EXPOSE 4533
ENTRYPOINT ["/bin/navidrome", "--configfile", "/etc/navidrome/navidrome.toml"]

View File

@ -0,0 +1,17 @@
# Log level. Useful for troubleshooting. Possible values: error, info, debug, trace.
LogLevel = "info"
# Base URL (only the path part) to configure Navidrome behind a proxy.
BaseURL = "/"
# Folder for storing Navidrome database.
DataFolder = "/var/lib/navidrome"
# How frequently to scan for changes in your music library.
ScanSchedule = "@every 30m"
# Size of transcoding cache.
TranscodingCacheSize = "100MB"
# Folder where your music library is stored. Can be read-only.
MusicFolder = "/music"

View File

@ -0,0 +1,10 @@
variant: fcos
version: 1.3.0
storage:
trees:
- path: /etc/systemd/system
local: service/navidrome/systemd/
systemd:
units:
- name: navidrome.service
enabled: true

View File

@ -0,0 +1,20 @@
[Unit]
Description=Navidrome Music Server
Wants=container-build@%N.service container-volume@%N.service
After=container-build@%N.service container-volume@%N.service
[Service]
Type=notify
NotifyAccess=all
SyslogIdentifier=%N
Restart=on-failure
Environment=PODMAN_SYSTEMD_UNIT=%n
ExecStart=/bin/podman run --replace --name %N --net internal --sdnotify=conmon \
--volume %N:/var/lib/%N:z \
--volume %N-music:/music:z,ro \
localhost/%N:latest
ExecStop=/bin/podman stop --ignore --time 10 %N
ExecStopPost=/bin/podman rm --ignore --force %N
[Install]
WantedBy=multi-user.target

View File

@ -16,6 +16,7 @@ ignition:
- local: service/prosody/spec.ign
- local: service/biboumi/spec.ign
- local: service/radicale/spec.ign
- local: service/navidrome/spec.ign
- local: private/spec.ign
passwd:

View File

@ -17,6 +17,7 @@ ignition:
- local: service/biboumi/spec.ign
- local: service/spectrum/spec.ign
- local: service/radicale/spec.ign
- local: service/navidrome/spec.ign
- local: private/spec.ign
passwd:

View File

@ -18,6 +18,7 @@ ignition:
- local: service/radicale/spec.ign
- local: service/spectrum/spec.ign
- local: service/rss2email/spec.ign
- local: service/navidrome/spec.ign
passwd:
users: