Host Readarr #63

Merged
wi11-holdsworth merged 1 commit from enhancement/62 into main 2025-12-29 16:40:37 +11:00
5 changed files with 131 additions and 75 deletions

View file

@ -14,7 +14,6 @@
"karakeep" "karakeep"
"lidarr" "lidarr"
"miniflux" "miniflux"
"radicale"
"nginx" "nginx"
"ntfy-sh" "ntfy-sh"
"paperless" "paperless"
@ -22,6 +21,7 @@
"qbittorrent" "qbittorrent"
"radarr" "radarr"
"radicale" "radicale"
"readarr"
"sonarr" "sonarr"
"syncthing" "syncthing"
"vaultwarden" "vaultwarden"

View file

@ -30,6 +30,7 @@ let
"paperless" "paperless"
"prowlarr" "prowlarr"
"radarr" "radarr"
"readarr"
"sonarr" "sonarr"
# keep-sorted end # keep-sorted end
]; ];
@ -41,74 +42,8 @@ in
listenPort = port; listenPort = port;
allowedHosts = "homepage-dashboard.fi33.buzz"; allowedHosts = "homepage-dashboard.fi33.buzz";
services = [ services = [
# keep-sorted start block=yes
{ {
"Media Management" = [ "Media Management" = [
{
"Immich" = {
"description" = "Photo backup";
"icon" = "immich.svg";
"href" = "https://immich.fi33.buzz/";
"widget" = {
"type" = "immich";
"fields" = [
"users"
"photos"
"videos"
"storage"
];
"url" = "https://immich.fi33.buzz/";
"version" = 2;
"key" = "@immich@";
};
};
}
{
"Miniflux" = {
"description" = "RSS aggregator";
"icon" = "miniflux.svg";
"href" = "https://miniflux.fi33.buzz/";
"widget" = {
"type" = "miniflux";
"url" = "https://miniflux.fi33.buzz/";
"key" = "@miniflux@";
};
};
}
{
"Paperless" = {
"description" = "Digital filing cabinet";
"icon" = "paperless.svg";
"href" = "https://paperless.fi33.buzz/";
"widget" = {
"type" = "paperlessngx";
"url" = "https://paperless.fi33.buzz/";
"username" = "admin";
"password" = "@paperless@";
};
};
}
];
}
{
"Media Streaming" = [
{
"Jellyfin" = {
"description" = "Media streaming";
"icon" = "jellyfin.svg";
"href" = "https://jellyfin.fi33.buzz/";
"widget" = {
"type" = "jellyfin";
"url" = "https://jellyfin.fi33.buzz/";
"key" = "@jellyfin@";
"enableBlocks" = true;
"enableNowPlaying" = true;
"enableUser" = true;
"showEpisodeNumber" = true;
"expandOneStreamToTwoRows" = false;
};
};
}
{ {
"Radarr" = { "Radarr" = {
"description" = "Movie collection manager"; "description" = "Movie collection manager";
@ -148,6 +83,19 @@ in
}; };
}; };
} }
{
"Readarr" = {
"description" = "Book collection manager";
"icon" = "readarr.svg";
"href" = "https://readarr.fi33.buzz/";
"widget" = {
"type" = "readarr";
"url" = "https://readarr.fi33.buzz/";
"key" = "@readarr@";
"enableQueue" = true;
};
};
}
{ {
"Prowlarr" = { "Prowlarr" = {
"description" = "Indexer management tool"; "description" = "Indexer management tool";
@ -169,6 +117,71 @@ in
} }
]; ];
} }
{
"Media Streaming" = [
{
"Immich" = {
"description" = "Photo backup";
"icon" = "immich.svg";
"href" = "https://immich.fi33.buzz/";
"widget" = {
"type" = "immich";
"fields" = [
"users"
"photos"
"videos"
"storage"
];
"url" = "https://immich.fi33.buzz/";
"version" = 2;
"key" = "@immich@";
};
};
}
{
"Jellyfin" = {
"description" = "Media streaming";
"icon" = "jellyfin.svg";
"href" = "https://jellyfin.fi33.buzz/";
"widget" = {
"type" = "jellyfin";
"url" = "https://jellyfin.fi33.buzz/";
"key" = "@jellyfin@";
"enableBlocks" = true;
"enableNowPlaying" = true;
"enableUser" = true;
"showEpisodeNumber" = true;
"expandOneStreamToTwoRows" = false;
};
};
}
{
"Miniflux" = {
"description" = "RSS aggregator";
"icon" = "miniflux.svg";
"href" = "https://miniflux.fi33.buzz/";
"widget" = {
"type" = "miniflux";
"url" = "https://miniflux.fi33.buzz/";
"key" = "@miniflux@";
};
};
}
{
"Paperless" = {
"description" = "Digital filing cabinet";
"icon" = "paperless.svg";
"href" = "https://paperless.fi33.buzz/";
"widget" = {
"type" = "paperlessngx";
"url" = "https://paperless.fi33.buzz/";
"username" = "admin";
"password" = "@paperless@";
};
};
}
];
}
{ {
"Services" = [ "Services" = [
{ {
@ -226,7 +239,6 @@ in
} }
]; ];
} }
# keep-sorted end
]; ];
settings = { settings = {
title = "Mission Control"; title = "Mission Control";
@ -234,13 +246,6 @@ in
color = "neutral"; color = "neutral";
headerStyle = "clean"; headerStyle = "clean";
layout = [ layout = [
{
"Media Management" = {
style = "row";
columns = 3;
useEqualHeights = true;
};
}
{ {
"Media Streaming" = { "Media Streaming" = {
style = "row"; style = "row";
@ -254,6 +259,13 @@ in
columns = 3; columns = 3;
}; };
} }
{
"Media Management" = {
style = "row";
columns = 3;
useEqualHeights = true;
};
}
{ {
"Utilities" = { "Utilities" = {
style = "row"; style = "row";

View file

@ -0,0 +1,33 @@
let
port = 5016;
in
{
services = {
readarr = {
enable = true;
dataDir = "/srv/readarr";
settings.server = {
inherit port;
};
group = "media";
};
# borgmatic.settings = {
# source_directories = [ ];
# postgresql_databases = [
# {
# name = "readarr";
# hostname = "localhost";
# username = "root";
# password = "{credential systemd borgmatic-pg}";
# }
# ];
# };
nginx.virtualHosts."readarr.fi33.buzz" = {
forceSSL = true;
useACMEHost = "fi33.buzz";
locations."/".proxyPass = "http://localhost:${toString port}";
};
};
}

10
secrets/readarr.age Normal file
View file

@ -0,0 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 qLT+DQ qeJ25W5TGvWY8xc1I5sjjtP/98nGqoRMIFk6xLIbmi8
RhUcEjz6mFp6uNVOpOgg6fPyL2cyrZH1ZWJTrax2xOE
-> ssh-ed25519 7+xRyQ jhJX/0+ZO+teoM2rUmdyFuI9V+tMe5kQaaHQFxwBGSU
fJmXSc/c3lth0cQgx8p/7G0WrnfgioSs8OcRa56B2s0
-> ssh-ed25519 LtK9yQ UH9T6lRLG0pi0P84B9Zs/22nCKAoOAwL6KAmj+536U4
h2DEqoPLgFqmVZOk/RhAIuifCexqt3ZFsIsCDm5KI3M
--- 6FY4tnGR8EIQyCWc3Xa3t8EqwcynoORmZqsp9zWUzZM
õ¡ˆÇ<6E>Æ]Z0ñŽ—råTƒªÞi:EÇE!<21>ð™ 
uB{4cüà£fùvÖÞŸÜKÌj^2/`<60>¼

View file

@ -30,6 +30,7 @@ in
"prowlarr.age".publicKeys = users; "prowlarr.age".publicKeys = users;
"radarr.age".publicKeys = users; "radarr.age".publicKeys = users;
"radicale.age".publicKeys = users; "radicale.age".publicKeys = users;
"readarr.age".publicKeys = users;
"sonarr.age".publicKeys = users; "sonarr.age".publicKeys = users;
"vaultwarden-admin.age".publicKeys = users; "vaultwarden-admin.age".publicKeys = users;
# keep-sorted end # keep-sorted end