feat(host/faunus-ater): music frontend via navidrome

This commit is contained in:
Malte Tammena 2024-03-01 09:29:08 +01:00
parent 3c4d91c122
commit d47679ec28
4 changed files with 59 additions and 4 deletions

View file

@ -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;
};
}

View file

@ -131,6 +131,7 @@ in {
${point "radarr" faunus-ater}
${point "prowlarr" faunus-ater}
${point "downloadarr" faunus-ater}
${point "music" faunus-ater}
'';
};
};

View file

@ -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: |

View file

@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIBtzCCAV2gAwIBAgIUCTlWBN1XndRyRWPmH0jbyVCkz9MwCgYIKoZIzj0EAwIw
FTETMBEGA1UEAwwKTXkgSG9tZSBDQTAeFw0yNDAzMDEwNzUyMTlaFw0yNTAzMDEw
NzUyMTlaMBExDzANBgNVBAMMBiouaG9tZTBZMBMGByqGSM49AgEGCCqGSM49AwEH
A0IABDj6PVJQ6w7bDgBoMet58ghgCrVgx3twhVo7rroZpKjOJyFKj3toLODtI8XY
kv0u8FqHRzeQoYaSMM4SGI3b6iSjgY4wgYswCwYDVR0PBAQDAgXgMBMGA1UdJQQM
MAoGCCsGAQUFBwMBMCcGA1UdEQQgMB6CEG11c2ljLnRhbW1lbmEubWWCCm11c2lj
LmhvbWUwHQYDVR0OBBYEFNIywlNqPsgvTkgUyvNdxWR8uAe5MB8GA1UdIwQYMBaA
FAD63A/bJrL4LdckOxmyIq1lmU+rMAoGCCqGSM49BAMCA0gAMEUCIQDADSek9wNP
0Pp8XK9vLUbvny26ua5FvZcr9npboqfaGAIgFgHNjOUtUm4WbdFqaeXeFVbqd+Ww
Z3WOCLO7TGeIZSE=
-----END CERTIFICATE-----