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";
radarr.storage = "300Mi";
prowlarr.storage = "150Mi";
sonarr.storage = "150Mi";
sonarr.storage = "250Mi";
bazarr.storage = "25Mi";
minecraft.storage = "1Gi";
ntfy.storage = "300Mi";

View file

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

View file

@ -24,6 +24,7 @@ in {
enabled = true;
user = 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" ''
umask 0002
@ -35,7 +36,7 @@ in {
users.users.${cfgInit.user} = lib.mkIf (cfgInit.user == "sonarr") (nglib.mkDefaultRec {
description = "sonarr";
group = cfgInit.group;
inherit (cfgInit) group;
createHome = false;
home = "/var/empty";
useDefaultShell = true;