Add deployment options for media kubenix manifest

Cleanup sonarr log files
Increase size of sonarr volume
This commit is contained in:
Pim Kunis 2025-01-18 16:20:24 +01:00
parent 5b3687f802
commit 0c75d07f73
3 changed files with 462 additions and 420 deletions

View file

@ -132,7 +132,7 @@
jellyseerr.storage = "75Mi"; jellyseerr.storage = "75Mi";
radarr.storage = "300Mi"; radarr.storage = "300Mi";
prowlarr.storage = "150Mi"; prowlarr.storage = "150Mi";
sonarr.storage = "150Mi"; sonarr.storage = "250Mi";
bazarr.storage = "25Mi"; bazarr.storage = "25Mi";
minecraft.storage = "1Gi"; minecraft.storage = "1Gi";
ntfy.storage = "300Mi"; ntfy.storage = "300Mi";

View file

@ -4,13 +4,25 @@
lib, lib,
utils, utils,
... ...
}: { }: let
options.media.enable = lib.mkEnableOption "media"; cfg = config.media;
in {
options.media = {
enable = lib.mkEnableOption "media";
jellyfin.enable = (lib.mkEnableOption "jellyfin") // {default = true;};
deluge.enable = (lib.mkEnableOption "deluge") // {default = true;};
jellyseerr.enable = (lib.mkEnableOption "jellyseerr") // {default = true;};
radarr.enable = (lib.mkEnableOption "radarr") // {default = true;};
prowlarr.enable = (lib.mkEnableOption "prowlarr") // {default = true;};
sonarr.enable = (lib.mkEnableOption "sonarr") // {default = true;};
bazarr.enable = (lib.mkEnableOption "bazarr") // {default = true;};
};
config = lib.mkIf config.media.enable { config = lib.mkIf cfg.enable {
kubernetes.resources = { kubernetes.resources = {
deployments = { deployments = {
jellyfin.spec = { jellyfin = lib.mkIf cfg.jellyfin.enable {
spec = {
selector.matchLabels = { selector.matchLabels = {
app = "media"; app = "media";
component = "jellyfin"; component = "jellyfin";
@ -84,8 +96,10 @@
}; };
}; };
}; };
};
deluge.spec = { deluge = lib.mkIf cfg.deluge.enable {
spec = {
selector.matchLabels = { selector.matchLabels = {
app = "media"; app = "media";
component = "deluge"; component = "deluge";
@ -147,8 +161,10 @@
}; };
}; };
}; };
};
jellyseerr.spec = { jellyseerr = lib.mkIf cfg.jellyseerr.enable {
spec = {
selector.matchLabels = { selector.matchLabels = {
app = "media"; app = "media";
component = "jellyseerr"; component = "jellyseerr";
@ -198,8 +214,10 @@
}; };
}; };
}; };
};
radarr.spec = { radarr = lib.mkIf cfg.radarr.enable {
spec = {
selector.matchLabels = { selector.matchLabels = {
app = "media"; app = "media";
component = "radarr"; component = "radarr";
@ -256,8 +274,10 @@
}; };
}; };
}; };
};
prowlarr.spec = { prowlarr = lib.mkIf cfg.prowlarr.enable {
spec = {
selector.matchLabels = { selector.matchLabels = {
app = "media"; app = "media";
component = "prowlarr"; component = "prowlarr";
@ -307,8 +327,10 @@
}; };
}; };
}; };
};
sonarr.spec = { sonarr = lib.mkIf cfg.sonarr.enable {
spec = {
selector.matchLabels = { selector.matchLabels = {
app = "media"; app = "media";
component = "sonarr"; component = "sonarr";
@ -365,8 +387,10 @@
}; };
}; };
}; };
};
bazarr.spec = { bazarr = lib.mkIf cfg.bazarr.enable {
spec = {
selector.matchLabels = { selector.matchLabels = {
app = "media"; app = "media";
component = "bazarr"; component = "bazarr";
@ -424,9 +448,11 @@
}; };
}; };
}; };
};
services = { services = {
jellyfin.spec = { jellyfin = lib.mkIf cfg.jellyfin.enable {
spec = {
selector = { selector = {
app = "media"; app = "media";
component = "jellyfin"; component = "jellyfin";
@ -437,8 +463,10 @@
targetPort = "web"; targetPort = "web";
}; };
}; };
};
deluge.spec = { deluge = lib.mkIf cfg.deluge.enable {
spec = {
type = "LoadBalancer"; type = "LoadBalancer";
loadBalancerIP = globals.transmissionIPv4; loadBalancerIP = globals.transmissionIPv4;
@ -459,8 +487,10 @@
}; };
}; };
}; };
};
jellyseerr.spec = { jellyseerr = lib.mkIf cfg.jellyseerr.enable {
spec = {
type = "LoadBalancer"; type = "LoadBalancer";
loadBalancerIP = globals.jellyseerrIPv4; loadBalancerIP = globals.jellyseerrIPv4;
@ -474,8 +504,10 @@
targetPort = "web"; targetPort = "web";
}; };
}; };
};
radarr.spec = { radarr = lib.mkIf cfg.radarr.enable {
spec = {
type = "LoadBalancer"; type = "LoadBalancer";
loadBalancerIP = globals.radarrIPv4; loadBalancerIP = globals.radarrIPv4;
@ -489,8 +521,10 @@
targetPort = "web"; targetPort = "web";
}; };
}; };
};
prowlarr.spec = { prowlarr = lib.mkIf cfg.prowlarr.enable {
spec = {
type = "LoadBalancer"; type = "LoadBalancer";
loadBalancerIP = globals.prowlarrIPv4; loadBalancerIP = globals.prowlarrIPv4;
@ -504,8 +538,10 @@
targetPort = "web"; targetPort = "web";
}; };
}; };
};
sonarr.spec = { sonarr = lib.mkIf cfg.sonarr.enable {
spec = {
type = "LoadBalancer"; type = "LoadBalancer";
loadBalancerIP = globals.sonarrIPv4; loadBalancerIP = globals.sonarrIPv4;
@ -519,8 +555,10 @@
targetPort = "web"; targetPort = "web";
}; };
}; };
};
bazarr.spec = { bazarr = lib.mkIf cfg.bazarr.enable {
spec = {
type = "LoadBalancer"; type = "LoadBalancer";
loadBalancerIP = globals.bazarrIPv4; loadBalancerIP = globals.bazarrIPv4;
@ -535,12 +573,15 @@
}; };
}; };
}; };
};
persistentVolumeClaims = { persistentVolumeClaims = {
jellyfin-cache.spec = { jellyfin-cache = lib.mkIf cfg.jellyfin.enable {
spec = {
accessModes = ["ReadWriteOnce"]; accessModes = ["ReadWriteOnce"];
resources.requests.storage = "20Gi"; resources.requests.storage = "20Gi";
}; };
};
media.spec = { media.spec = {
accessModes = ["ReadWriteMany"]; accessModes = ["ReadWriteMany"];
@ -553,7 +594,7 @@
lab = { lab = {
ingresses = { ingresses = {
jellyfin = { jellyfin = lib.mkIf cfg.jellyfin.enable {
host = "media.kun.is"; host = "media.kun.is";
service = { service = {
@ -562,7 +603,7 @@
}; };
}; };
jellyseerr = { jellyseerr = lib.mkIf cfg.jellyseerr.enable {
host = "jellyseerr.kun.is"; host = "jellyseerr.kun.is";
entrypoint = "localsecure"; entrypoint = "localsecure";
@ -574,69 +615,69 @@
}; };
tailscaleIngresses = { tailscaleIngresses = {
tailscale-jellyseerr = { tailscale-jellyseerr = lib.mkIf cfg.jellyseerr.enable {
host = "jellyseerr"; host = "jellyseerr";
service.name = "jellyseerr"; service.name = "jellyseerr";
}; };
tailscale-radarr = { tailscale-radarr = lib.mkIf cfg.radarr.enable {
host = "radarr"; host = "radarr";
service.name = "radarr"; service.name = "radarr";
}; };
tailscale-sonarr = { tailscale-sonarr = lib.mkIf cfg.sonarr.enable {
host = "sonarr"; host = "sonarr";
service.name = "sonarr"; service.name = "sonarr";
}; };
tailscale-bazarr = { tailscale-bazarr = lib.mkIf cfg.bazarr.enable {
host = "bazarr"; host = "bazarr";
service.name = "bazarr"; service.name = "bazarr";
}; };
tailscale-prowlarr = { tailscale-prowlarr = lib.mkIf cfg.prowlarr.enable {
host = "prowlarr"; host = "prowlarr";
service.name = "prowlarr"; service.name = "prowlarr";
}; };
tailscale-deluge = { tailscale-deluge = lib.mkIf cfg.deluge.enable {
host = "deluge"; host = "deluge";
service.name = "deluge"; service.name = "deluge";
}; };
}; };
longhorn.persistentVolumeClaim = { longhorn.persistentVolumeClaim = {
jellyfin = { jellyfin = lib.mkIf cfg.jellyfin.enable {
volumeName = "jellyfin"; volumeName = "jellyfin";
storage = "5Gi"; storage = "5Gi";
}; };
deluge = { deluge = lib.mkIf cfg.deluge.enable {
volumeName = "deluge"; volumeName = "deluge";
storage = "500Mi"; storage = "500Mi";
}; };
jellyseerr = { jellyseerr = lib.mkIf cfg.jellyseerr.enable {
volumeName = "jellyseerr"; volumeName = "jellyseerr";
storage = "75Mi"; storage = "75Mi";
}; };
radarr = { radarr = lib.mkIf cfg.radarr.enable {
volumeName = "radarr"; volumeName = "radarr";
storage = "300Mi"; storage = "300Mi";
}; };
prowlarr = { prowlarr = lib.mkIf cfg.prowlarr.enable {
volumeName = "prowlarr"; volumeName = "prowlarr";
storage = "150Mi"; storage = "150Mi";
}; };
sonarr = { sonarr = lib.mkIf cfg.sonarr.enable {
volumeName = "sonarr"; volumeName = "sonarr";
storage = "150Mi"; storage = "250Mi";
}; };
bazarr = { bazarr = lib.mkIf cfg.bazarr.enable {
volumeName = "bazarr"; volumeName = "bazarr";
storage = "25Mi"; storage = "25Mi";
}; };

View file

@ -24,6 +24,7 @@ in {
enabled = true; enabled = true;
user = lib.mkDefault "sonarr"; user = lib.mkDefault "sonarr";
group = lib.mkDefault "sonarr"; group = lib.mkDefault "sonarr";
tmpfiles = with nglib.nottmpfiles.dsl; [(e "${cfg.dataDir}/logs" "-" cfgInit.user cfgInit.group "7d" _)];
script = pkgs.writeShellScript "sonarr-run" '' script = pkgs.writeShellScript "sonarr-run" ''
umask 0002 umask 0002
@ -35,7 +36,7 @@ in {
users.users.${cfgInit.user} = lib.mkIf (cfgInit.user == "sonarr") (nglib.mkDefaultRec { users.users.${cfgInit.user} = lib.mkIf (cfgInit.user == "sonarr") (nglib.mkDefaultRec {
description = "sonarr"; description = "sonarr";
group = cfgInit.group; inherit (cfgInit) group;
createHome = false; createHome = false;
home = "/var/empty"; home = "/var/empty";
useDefaultShell = true; useDefaultShell = true;