From 9e3f5ac71043c7398db59312b3acaae3cfc6bee1 Mon Sep 17 00:00:00 2001 From: TheWanderingCrow Date: Mon, 7 Jul 2025 10:32:09 -0400 Subject: [PATCH] jellyfin + tubearchivist --- hosts/common/core/default.nix | 2 + modules/services/jellyfin/default.nix | 55 ++++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/hosts/common/core/default.nix b/hosts/common/core/default.nix index cff061a..fa16f7f 100644 --- a/hosts/common/core/default.nix +++ b/hosts/common/core/default.nix @@ -54,6 +54,8 @@ in { }; }; + virtualisation.oci-containers.backend = lib.mkDefault "podman"; + nix.settings = { connect-timeout = 5; log-lines = 25; diff --git a/modules/services/jellyfin/default.nix b/modules/services/jellyfin/default.nix index b46e0ba..5149f6e 100644 --- a/modules/services/jellyfin/default.nix +++ b/modules/services/jellyfin/default.nix @@ -3,9 +3,62 @@ lib, pkgs, ... -}: { +}: let + volumePath = "/overseer/services"; +in { services.jellyfin = { enable = true; openFirewall = true; }; + + # Tube Archivist + virtualisation.oci-containers.containers = { + tubearchivist = { + image = "bbilly1/tubearchivist"; + extraOptions = ["--ip=10.88.0.14"]; + volumes = [ + "${volumePath}/tubearchivist/ta/youtube:/youtube" + "${volumePath}/tubearchivist/ta/cache:/cache" + ]; + environment = { + ES_URL = "http://10.88.0.16:9200"; + REDIS_CON = "redis://10.88.0.15:6379"; + HOST_UID = "1000"; + HOST_GID = "1000"; + TA_HOST = "http://192.168.0.30:8000"; + TA_USERNAME = "tubearchivist"; + TA_PASSWORD = "verysecret"; + ELASTIC_PASSWORD = "verysecret"; + TZ = "America/New_York"; + }; + dependsOn = [ + "archivist-redis" + "archivist-es" + ]; + }; + archivist-redis = { + image = "redis"; + extraOptions = ["--ip=10.88.0.15"]; + volumes = [ + "${volumePath}/tubearchivist/redis:/data" + ]; + dependsOn = [ + "archivist-es" + ]; + }; + archivist-es = { + image = "bbilly1/tubearchivist-es"; + extraOptions = ["--ip=10.88.0.16"]; + environment = { + ELASTIC_PASSWORD = "verysecret"; + ES_JAVA_OPTS = "-Xms1g -Xmx1g"; + "xpack.security.enabled" = "true"; + "discovery.type" = "single-node"; + "path.repo" = "/usr/share/elasticsearch/data/snapshot"; + }; + volumes = [ + "${volumePath}/tubearchivist/es:/usr/share/elasticsearch/data" + ]; + }; + }; }