From daafc3a0f2ca40b586eb010a3c2e137a9a3ccf39 Mon Sep 17 00:00:00 2001 From: rope Date: Tue, 21 Jul 2026 09:50:24 +0100 Subject: [PATCH] shelfarr: audiobook search/acquire, Sonarr/Radarr-style --- services/authelia.nix | 1 + services/nginx.nix | 1 + services/shelfarr.nix | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 services/shelfarr.nix diff --git a/services/authelia.nix b/services/authelia.nix index d5cabe1..fa0ac8b 100644 --- a/services/authelia.nix +++ b/services/authelia.nix @@ -38,6 +38,7 @@ { domain = "prowlarr.nordhammer.it"; policy = "one_factor"; } { domain = "torrent.nordhammer.it"; policy = "one_factor"; } { domain = "profilarr.nordhammer.it"; policy = "one_factor"; } + { domain = "shelfarr.nordhammer.it"; policy = "one_factor"; } { domain = "sabnzbd.nordhammer.it"; policy = "one_factor"; } { domain = "code.nordhammer.it"; policy = "one_factor"; } { domain = "notes.nordhammer.it"; policy = "one_factor"; } diff --git a/services/nginx.nix b/services/nginx.nix index 1a70a18..c7c8847 100644 --- a/services/nginx.nix +++ b/services/nginx.nix @@ -115,6 +115,7 @@ in # "7dtd.nordhammer.it" = protectedProxy 8090; # 7DTD disabled "adguard.nordhammer.it" = protectedProxy 3000; "profilarr.nordhammer.it" = protectedProxy 6868; + "shelfarr.nordhammer.it" = protectedProxy 5056; "sabnzbd.nordhammer.it" = protectedProxy 8085; "code.nordhammer.it" = lib.recursiveUpdate (protectedProxy 4444) { locations."/".extraConfig = autheliaAuthConfig + '' diff --git a/services/shelfarr.nix b/services/shelfarr.nix new file mode 100644 index 0000000..7df69a4 --- /dev/null +++ b/services/shelfarr.nix @@ -0,0 +1,41 @@ +# services/shelfarr.nix — Shelfarr: Sonarr/Radarr-style search+acquire for +# audiobooks. Not in nixpkgs, so runs as a container like profilarr. +# +# Only the main app is deployed — the shelfarr-libation companion (Audible +# account backup) is skipped, beta and unrelated to indexer-based search. +# Ebooks volume also skipped (audiobooks-only use case); mount /ebooks later +# if that turns out to be required for the container to start cleanly. +# +# Prowlarr/qBittorrent hookup isn't wired into arr-interconnect.nix: unlike +# Sonarr/Radarr/Prowlarr/Bazarr, Shelfarr has no config.xml API key written +# before first boot — the first registered user becomes admin via the web UI, +# so that connection has to be made once by hand at +# https://shelfarr.nordhammer.it after first boot. +{ config, lib, ... }: +{ + config = lib.mkIf (config.networking.hostName == "FredOS-Mediaserver") { + + systemd.tmpfiles.rules = [ + "d /var/lib/shelfarr 0755 root root -" + ]; + + virtualisation.oci-containers.containers.shelfarr = { + image = "ghcr.io/pedro-revez-silva/shelfarr:latest"; + volumes = [ + "/var/lib/shelfarr:/rails/storage" + "/mnt/storage/torrents/audiobooks:/audiobooks" + "/mnt/storage/torrents/downloads:/downloads" + ]; + # Localhost-only; nginx fronts it at shelfarr.nordhammer.it behind Authelia + ports = [ "127.0.0.1:5056:80" ]; + environment = { + TZ = "Europe/London"; + SOLID_QUEUE_IN_PUMA = "1"; + # Matches fred:media ownership (2775) on /mnt/storage/torrents/audiobooks + PUID = "1000"; + PGID = "3000"; + CHOWN_ON_START = "auto"; + }; + }; + }; +}