diff --git a/hosts/faunus-ater/modules/media.nix b/hosts/faunus-ater/modules/media.nix index 1ad7d54..7d7fd6a 100644 --- a/hosts/faunus-ater/modules/media.nix +++ b/hosts/faunus-ater/modules/media.nix @@ -5,6 +5,7 @@ ... }: let webdavPort = 4918; + navidromePort = 4533; in { # User and group that owns all media-related files users.users.media = { @@ -106,8 +107,32 @@ in { server.listen = ["0.0.0.0:${builtins.toString webdavPort}" "[::]:${builtins.toString webdavPort}"]; location = [ { - route = ["/*path"]; - directory = "/data/media"; + route = ["/music/*path"]; + directory = "/data/dirty/music"; + handler = "filesystem"; + methods = ["webdav-ro"]; + autoindex = true; + auth = "false"; + } + { + route = ["/tv/*path"]; + directory = "/data/media/tv"; + handler = "filesystem"; + methods = ["webdav-ro"]; + autoindex = true; + auth = "false"; + } + { + route = ["/anime/*path"]; + directory = "/data/media/anime"; + handler = "filesystem"; + methods = ["webdav-ro"]; + autoindex = true; + auth = "false"; + } + { + route = ["/movies/*path"]; + directory = "/data/media/movies"; handler = "filesystem"; methods = ["webdav-ro"]; autoindex = true; @@ -117,6 +142,15 @@ in { }; }; + services.navidrome = { + enable = true; + settings = { + MusicFolder = "/data/dirty/music"; + Port = navidromePort; + DefaultLanguage = "de"; + }; + }; + systemd.services.fix-media-permissions = { enable = true; description = "Fix media permissions and ownership"; @@ -192,6 +226,12 @@ in { proxyWebsockets = true; }; }; + "music.tammena.me" = withPreset "music" { + locations."/" = { + proxyPass = "http://127.0.0.1:${builtins.toString navidromePort}"; + proxyWebsockets = true; + }; + }; }; # Secrets @@ -208,5 +248,6 @@ in { certificate-key-prowlarr-tammena-me = conf; certificate-key-downloadarr-tammena-me = conf; certificate-key-webdav-tammena-me = conf; + certificate-key-music-tammena-me = conf; }; } diff --git a/hosts/granodomus-lima/default.nix b/hosts/granodomus-lima/default.nix index 8923ef6..39ef2a8 100644 --- a/hosts/granodomus-lima/default.nix +++ b/hosts/granodomus-lima/default.nix @@ -131,6 +131,7 @@ in { ${point "radarr" faunus-ater} ${point "prowlarr" faunus-ater} ${point "downloadarr" faunus-ater} + ${point "music" faunus-ater} ''; }; }; diff --git a/secrets/hosts/faunus-ater/secrets.yaml b/secrets/hosts/faunus-ater/secrets.yaml index 37968e3..df91f3b 100644 --- a/secrets/hosts/faunus-ater/secrets.yaml +++ b/secrets/hosts/faunus-ater/secrets.yaml @@ -25,6 +25,7 @@ certificate-key-webdav-tammena-me: ENC[AES256_GCM,data:XdX1uSK5H/8SnqrLraTEY++2a certificate-key-bazarr-tammena-me: ENC[AES256_GCM,data:H8dL0YydAMx+Azd0xpQ80ASkEFTlMlm0tIntMMbdMImJRet5/81Wfhu+hFyRKJpoYadyKqrNq2SeWEURUU2g7UtsjB6G8nCBeszdaeHe/7pdgkCe7LBW5tQWKtnYKkS3vn3Vz27i+6+NO+U+RhR7w2YaZZBwsTBy3976xGvQVjQ0Yn36kkoOvDpVEmdJyXexzgNZMnR/avFk2klwbf/LBPFme9RFylp/c02QvOgK8au3nWueYjDsKbvOobABrw8oqp5LF2i0R1vz4WTvK4LhNag6JMW/fdal9dB9QpmpC3CphVo0bJThlDbooc7qo+PiT2I1tNXCuPrNWGRyZ7WZ6iKcqKma8o+CzvRZoUuB80PjkNK6dvWF/i+CJRnQIZtHIe6xqGhHleRSo9AmRg8=,iv:DMPOGFijuiIEC9QBlb1DJynjq50H1rwpUUqDwaGSgQ8=,tag:vYFrzTvvCsYW1blobzNcbA==,type:str] certificate-key-prowlarr-tammena-me: ENC[AES256_GCM,data:AeiJMufnFh3EDjKnkPz5S+ScxW8U9AdlLo4q8jN1r3CdVF+mp7TrYsDK//QJiTzyJkzQN4TVNj27ioUt0IQtHrlLbI83wbgZeeMtYSKxXt8PnrSnQOhZYQstXhqcyax6z2uJf0xkecSFtrUW8ZngM9PBr8T2BzcXv8TXR/tBP3qB8np+cyn8JvKbuVR9HZQO5HulXm2ZxCe0C4o+TANntZhvbJBbgihAOSukToNewPhzml7h2bLG5iit9LisdWOxihuqall5R2kE2HBax9nbK9Q1xI8y0A8jRxB0NMNyCMYUQ0eEgLCorNgalX1u9dE5QEPGbdLj3Bs2YfqHqnX6FZNDz/YWkSbEV6KIfqXFESMr5M59h1zhYZRc8f9mmHWitR0FZtkqZT62fb1fCW8=,iv:Cr2nI1qZWqSCkzDaeAwvaot11pOz6VYR+j07LJEMr7E=,tag:7hI+giA6nNbBNZ2QS9yBOg==,type:str] certificate-key-lidarr-tammena-me: ENC[AES256_GCM,data:vkoBDdBgHkdA9CmE6Ld5Tav+Q10fssGKKcbnRNYuS0Nh8I7DiBb8Md5yab33KNV9ZL4a/0A3VTPvpJs76GPFRkxVcwTTbcCl6O5oxTArvfc4SOtut7sC5tc3ReXMkJnKfHfwiJas9SW7ag01rRamgD9OUZ913qlKxmDO0RrhX8kjgAPvUiRPtpLyFPR7QypzP/PXHW7t70gtZFmIrwTbIFMTdR6bBMcyTA4S8qwSIu6DnTIlaJwIdELqmr5WIK8GzsXCowG+hlL0mImSSnoidwzygjrybSdBUyDbDIv9ga9uALO6UtsJfYLIiV9t5Yv+5rR/Q6i4xnCAZpqwZ0Y/sgELIMExxxSslBXrE7VRiG3F0ZqR2S+o2rYVCNlcmKpwZC3caZuj4pCDHtLl/+M=,iv:NsUI/VwzYqk/ovysBgvlVRKIRBt88iZ4AR44EEfN2cE=,tag:uw5jlgF6SP7w4DL0Zy6TMw==,type:str] +certificate-key-music-tammena-me: ENC[AES256_GCM,data:W7562jT1GB1gHGrVjrkJWfcz4zOfh3IEg6QOuIEiRhI6WirGltFzTOXtBy+FQZWf448BTQvwJ07Mjyy5rdaTd1Ox79kx3QzYVyqmh3+G9ZY7J2HKxX6DEEyHVT6rF/AeQDX96eprAAXGz1OIEcy6RpzkZnuVk8LOSAynvLRvgWUFjQmbPulxPa+4yY7zoNH36r0mELLhPbif7N7pPUYev0N7NL7lX+PZzlDxLGiP4rxmjG5g8E84KkV1EZgZd+f3wUCBSGwz0X6GkR5baTsg6mlEBBmuVgjAgaSxmrRwp1cWTfPHV6di5Ihyw98/6MY4aoiEilBQNrUimkZLHxAmw4TDG2GmqtHukgSQbZLEu5m7y56oMKkCYLKUsjQn/twta3pMgToRjhE9VUhsWpQ=,iv:mc/XaCw0Kzllz3IIysSnoTcR0vbu9iizvXQSvcrReio=,tag:M5jhusP2vsZxPk8qd8rJNw==,type:str] sops: kms: [] gcp_kms: [] @@ -40,8 +41,8 @@ sops: ZzFxdmlXaTRCY2tUZndBSDlNeUVROVUKH1CxbcdwHR3ELn9YlGvO6YbGGg++wGZv 97ez/ErXEOq/6IF6HzV3I9BsVV4WCJI2VTP8Lbiwt59qg5riH7CGJQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-02-26T14:08:30Z" - mac: ENC[AES256_GCM,data:wBQa8JTURhGsFrvxwO2YBke9aE5jl6+SIkhEFkKkMPE9tO7mquOnItLWQsHEO3gcmgeKZ4fqgSGRIF3IkPBdgmocudJ0LnrAeC4CJ6lz4VRFn9cml2CIkn1HD8RInXFYq8NP3dJ1ytEJg68QrRlyTj7CMrMnImquEsK2Po2UyL4=,iv:ef3/cS4bQOjZEg/LEDZctDzTayWfDJUSeCNL+MFT86c=,tag:o4JYpryUgBx16hcVK6A0wg==,type:str] + lastmodified: "2024-03-01T07:52:20Z" + mac: ENC[AES256_GCM,data:BjM9tFIEaiTTsMHocSBoR7FZjBHIhCnyNkxsFto+7OD/Hu/QGPweme4ey9tyW255veBkVBLlfR6b+MRQBbEJWTODJ+iYs9BMElK1uJk5D5pxH1JM/Dk2Pz/Z8AYCSbsx37jy8lLnNoHvJIxBuADTjQk0RvF0qUNVXZUTfhGA49w=,iv:Iizw65Ruh7vq1gH8+tR1TI2ddHZZhKHtE0LS5FzqpuM=,tag:3CPy7IR1H3ztl3XomH6fPA==,type:str] pgp: - created_at: "2023-11-06T16:58:30Z" enc: | diff --git a/secrets/pub/music-tammena-me.crt b/secrets/pub/music-tammena-me.crt new file mode 100644 index 0000000..2e572db --- /dev/null +++ b/secrets/pub/music-tammena-me.crt @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBtzCCAV2gAwIBAgIUCTlWBN1XndRyRWPmH0jbyVCkz9MwCgYIKoZIzj0EAwIw +FTETMBEGA1UEAwwKTXkgSG9tZSBDQTAeFw0yNDAzMDEwNzUyMTlaFw0yNTAzMDEw +NzUyMTlaMBExDzANBgNVBAMMBiouaG9tZTBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABDj6PVJQ6w7bDgBoMet58ghgCrVgx3twhVo7rroZpKjOJyFKj3toLODtI8XY +kv0u8FqHRzeQoYaSMM4SGI3b6iSjgY4wgYswCwYDVR0PBAQDAgXgMBMGA1UdJQQM +MAoGCCsGAQUFBwMBMCcGA1UdEQQgMB6CEG11c2ljLnRhbW1lbmEubWWCCm11c2lj +LmhvbWUwHQYDVR0OBBYEFNIywlNqPsgvTkgUyvNdxWR8uAe5MB8GA1UdIwQYMBaA +FAD63A/bJrL4LdckOxmyIq1lmU+rMAoGCCqGSM49BAMCA0gAMEUCIQDADSek9wNP +0Pp8XK9vLUbvny26ua5FvZcr9npboqfaGAIgFgHNjOUtUm4WbdFqaeXeFVbqd+Ww +Z3WOCLO7TGeIZSE= +-----END CERTIFICATE-----