From ac45f86cb5749e9555b9f70945f4924f39924b26 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Sat, 20 Sep 2025 11:43:30 +0200 Subject: [PATCH] Add jellyfin service --- hosts/nixos/hs/containers.nix | 27 +++++++++++++++++++++++++++ hosts/nixos/vps/proxy.nix | 22 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/hosts/nixos/hs/containers.nix b/hosts/nixos/hs/containers.nix index 351c856..bf1700d 100644 --- a/hosts/nixos/hs/containers.nix +++ b/hosts/nixos/hs/containers.nix @@ -136,6 +136,33 @@ in autoStart = true; }; + # Jellyfin media server (alternative to Plex) + jellyfin = { + image = "docker.io/linuxserver/jellyfin:latest"; + + volumes = [ + "/var/lib/containers/jellyfin/config:/config" + "/mnt/storage/Media:/data" + ]; + + environment = { + PUID = commonUID; + PGID = commonGID; + TZ = systemTZ; + }; + + ports = [ + "5002:8096" + ]; + + extraOptions = [ + "--network=podman" + "--device=/dev/dri:/dev/dri" # Hardware acceleration + ]; + + autoStart = true; + }; + # Sonarr TV show management sonarr = { image = "docker.io/linuxserver/sonarr:latest"; diff --git a/hosts/nixos/vps/proxy.nix b/hosts/nixos/vps/proxy.nix index 7122a29..bf6a024 100644 --- a/hosts/nixos/vps/proxy.nix +++ b/hosts/nixos/vps/proxy.nix @@ -123,6 +123,19 @@ }; }; + # Jellyfin Media Server + jellyfin = { + rule = "Host(`jellyfin.yanlincs.com`)"; + entrypoints = "websecure"; + service = "jellyfin"; + tls = { + certResolver = "cloudflare"; + domains = [{ + main = "*.yanlincs.com"; + }]; + }; + }; + # Plex Media Server plex = { rule = "Host(`plex.yanlincs.com`)"; @@ -243,6 +256,15 @@ }; }; + # Jellyfin backend (via WireGuard) + jellyfin = { + loadBalancer = { + servers = [{ + url = "http://10.2.2.20:5002"; + }]; + }; + }; + # Plex backend (via WireGuard) plex = { loadBalancer = {