diff --git a/snackpot.yml b/snackpot.yml index 4d756de..173ee8a 100644 --- a/snackpot.yml +++ b/snackpot.yml @@ -9,6 +9,7 @@ nextcloud_db_user: nextcloud nextcloud_db: nextcloud jellyfin_hostname: jf.noodlefactory.co.uk + navidrome_hostname: nd.noodlefactory.co.uk letsencrypt_email: webmaster@noodlefactory.co.uk docker_compose_base_dir: /opt/docker-compose docker_compose_cmd: docker-compose diff --git a/templates/docker-compose/docker-compose.yml b/templates/docker-compose/docker-compose.yml index 0f954bc..dcbeb80 100644 --- a/templates/docker-compose/docker-compose.yml +++ b/templates/docker-compose/docker-compose.yml @@ -17,6 +17,8 @@ volumes: minidlna_state: minidlna_data: mopidy_data: + navidrome_cache: + navidrome_data: borgmatic-cache: networks: @@ -132,6 +134,45 @@ services: env_file: - letsencrypt-companion.env + navidrome: + build: ./navidrome + ports: + - "4533:4533" + volumes: + - navidrome_data:/data + - navidrome_cache:/cache + - minidlna_data:/music + networks: + proxy-tier: + default: + group_add: + # audio group ID (gid) on host system + - "29" + devices: + - "/dev/snd:/dev/snd" + depends_on: + - letsencrypt-companion + env_file: + - navidrome.env + + bonob: + image: simojenki/bonob:latest + ports: + - "4534:4534" + networks: + lan: # Static ip for the container on the macvlan net + ipv4_address: 192.168.0.244 + restart: unless-stopped + environment: + BNB_PORT: 4534 + # ip address of your machine running bonob + BNB_URL: http://192.168.0.244:4534 + BNB_SONOS_AUTO_REGISTER: "true" + BNB_SONOS_DEVICE_DISCOVERY: "true" + BNB_SUBSONIC_URL: http://navidrome:4533 + depends_on: + - navidrome + jellyfin: image: jellyfin/jellyfin:latest restart: always @@ -159,6 +200,7 @@ services: lan: # Static ip for the container on the macvlan net ipv4_address: 192.168.0.242 environment: + # UID/GID are assumed to both be 2000 in other containers, to allow access - UPID=2000 - UGID=2000 - MINIDLNA_INOTIFY=yes @@ -202,11 +244,13 @@ services: image: alpine:latest # a small dumy image command: sh -c "sleep infinity" depends_on: + - bonob - nextcloud - nextcloud_cron - web - jellyfin - minidlna + - navidrome - upmpdcli borgmatic: @@ -228,6 +272,7 @@ services: - jellyfin_config:/mnt/source/jellyfin_config:ro - minidlna_state:/mnt/source/minidlna_state:ro - minidlna_data:/mnt/source/minidlna_data:ro + - navidrome_data:/mnt/source/navidrome_data:ro # System volumes - /etc/timezone:/etc/timezone:ro # timezone - /etc/localtime:/etc/localtime:ro # localtime diff --git a/templates/docker-compose/navidrome.env.j2 b/templates/docker-compose/navidrome.env.j2 new file mode 100644 index 0000000..d25c477 --- /dev/null +++ b/templates/docker-compose/navidrome.env.j2 @@ -0,0 +1,9 @@ +ND_SCANSCHEDULE=1h +ND_LOGLEVEL=info +ND_CACHEFOLDER="/cache" +ND_JUKEBOX_ENABLED="true" +ND_BASEURL="https://{{ navidrome_hostname }}" +VIRTUAL_HOST="{{ navidrome_hostname }}" +VIRTUAL_PORT=4533 +LETSENCRYPT_HOST="{{ navidrome_hostname }}" +LETSENCRYPT_EMAIL="{{ letsencrypt_email }}" diff --git a/templates/docker-compose/navidrome/Dockerfile b/templates/docker-compose/navidrome/Dockerfile new file mode 100644 index 0000000..25ec3f8 --- /dev/null +++ b/templates/docker-compose/navidrome/Dockerfile @@ -0,0 +1,5 @@ +FROM deluan/navidrome:0.50.2 + +RUN apk add --no-cache mpv +# Ensure that navidrome has access to these directories +RUN mkdir -p /data /cache && chown -R 1000:1000 /data /cache