diff --git a/hosts/by-name/servo/services/default.nix b/hosts/by-name/servo/services/default.nix index 54b25aa7d..9e4c2a99a 100644 --- a/hosts/by-name/servo/services/default.nix +++ b/hosts/by-name/servo/services/default.nix @@ -17,6 +17,7 @@ ./komga.nix ./lemmy.nix ./matrix + ./minidlna.nix ./mumble.nix ./navidrome.nix ./nginx.nix diff --git a/hosts/by-name/servo/services/jellyfin.nix b/hosts/by-name/servo/services/jellyfin.nix index 5335d98ed..b6f6ef7df 100644 --- a/hosts/by-name/servo/services/jellyfin.nix +++ b/hosts/by-name/servo/services/jellyfin.nix @@ -13,8 +13,9 @@ # - config/system.xml: misc preferences like log file duration, audiobook resume settings, etc. # - data/jellyfin.db: maybe account definitions? internal state? -{ config, lib, ... }: +{ lib, ... }: +lib.mkIf false #< XXX(2024-11-17): disabled because it hasn't been working for months; web UI hangs on load, TVs see no files { # https://jellyfin.org/docs/general/networking/index.html sane.ports.ports."1900" = { @@ -43,6 +44,10 @@ sane.persist.sys.byStore.plaintext = [ { user = "jellyfin"; group = "jellyfin"; mode = "0700"; path = "/var/lib/jellyfin"; method = "bind"; } ]; + + services.jellyfin.enable = true; + users.users.jellyfin.extraGroups = [ "media" ]; + sane.fs."/var/lib/jellyfin/config/logging.json" = { # "Emby.Dlna" logging: symlink.text = '' @@ -71,6 +76,10 @@ ''; }; + systemd.services.jellyfin.unitConfig.RequiresMountsFor = [ + "/var/media" + ]; + # Jellyfin multimedia server # this is mostly taken from the official jellfin.org docs services.nginx.virtualHosts."jelly.uninsane.org" = { @@ -80,6 +89,7 @@ locations."/" = { proxyPass = "http://127.0.0.1:8096"; + # TODO: just use `recommendedProxySettings = true;`? extraConfig = '' proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -121,9 +131,4 @@ }; sane.dns.zones."uninsane.org".inet.CNAME."jelly" = "native"; - - services.jellyfin.enable = true; - systemd.services.jellyfin.unitConfig.RequiresMountsFor = [ - "/var/media" - ]; } diff --git a/hosts/by-name/servo/services/minidlna.nix b/hosts/by-name/servo/services/minidlna.nix new file mode 100644 index 000000000..00e1185ab --- /dev/null +++ b/hosts/by-name/servo/services/minidlna.nix @@ -0,0 +1,38 @@ +# - `man 5 minidlna.conf` +# - `man 8 minidlnad` +# +# this is an extremely simple (but limited) DLNA server: +# - no web UI +# - no runtime configuration -- just statically configure media directories instead +# - no transcoding +# compatibility: +# - LG TV: music: all working +# - LG TV: videos: mixed. i can't see the pattern; HEVC works; H.264 sometimes works. +{ ... }: +{ + sane.ports.ports."1900" = { + protocol = [ "udp" ]; + visibleTo.lan = true; + description = "colin-upnp-for-minidlna"; + }; + sane.ports.ports."8200" = { + protocol = [ "tcp" ]; + visibleTo.lan = true; + description = "colin-minidlna-http"; + }; + + services.minidlna.enable = true; + + services.minidlna.settings = { + media_dir = [ + # A/V/P to restrict a directory to audio/video/pictures + "A,/var/media/Music" + "V,/var/media/Videos/Film" + # "V,/var/media/Videos/Milkbags" + "V,/var/media/Videos/Shows" + ]; + notify_interval = 60; + }; + + users.users.minidlna.extraGroups = [ "media" ]; +}