From f6ccfb9e58481ecd622b6028d71a218be454e45a Mon Sep 17 00:00:00 2001 From: kat witch Date: Thu, 7 Apr 2022 18:30:27 +0100 Subject: [PATCH] Additional plexy work --- config/services/access.nix | 39 ++++++++++++++++++---------- config/services/daiyousei-access.nix | 4 +-- config/services/plex.nix | 36 ++++++++++++++++++++++++- config/services/tvheadend.nix | 13 ++++++++++ config/tf | 2 +- 5 files changed, 77 insertions(+), 17 deletions(-) diff --git a/config/services/access.nix b/config/services/access.nix index e246b537..6d188dea 100644 --- a/config/services/access.nix +++ b/config/services/access.nix @@ -1,7 +1,7 @@ { config, lib, meta, ... }: with lib; { - deploy.tf.dns.records.services_media_forward = { + deploy.tf.dns.records.services_plex = { inherit (config.network.dns) zone; - domain = "media"; + domain = "plex"; cname = { inherit (config.network.addresses.public) target; }; }; @@ -23,24 +23,37 @@ forceSSL = true; enableACME = true; locations = { - "/".proxyPass = "http://cloud.int.kittywit.ch:80/"; + "/".proxyPass = "http://cloud.int.kittywit.ch/"; }; }; - "media.${config.network.dns.domain}" = { + "plex.${config.network.dns.domain}" = { forceSSL = true; enableACME = true; locations = { - "/jellyfin/".proxyPass = "http://[${meta.network.nodes.yukari.network.addresses.yggdrasil.nixos.ipv6.address}]:8096/jellyfin/"; - "/jellyfin/socket" = { - proxyPass = "http://[${meta.network.nodes.yukari.network.addresses.yggdrasil.nixos.ipv6.address}]:8096/jellyfin/"; - extraConfig = '' - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - ''; + "/" = { + proxyPass = "http://[${meta.network.nodes.yukari.network.addresses.yggdrasil.nixos.ipv6.address}]"; + extraConfig = '' + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_redirect off; + proxy_buffering off; + proxy_set_header X-Plex-Client-Identifier $http_x_plex_client_identifier; + proxy_set_header X-Plex-Device $http_x_plex_device; + proxy_set_header X-Plex-Device-Name $http_x_plex_device_name; + proxy_set_header X-Plex-Platform $http_x_plex_platform; + proxy_set_header X-Plex-Platform-Version $http_x_plex_platform_version; + proxy_set_header X-Plex-Product $http_x_plex_product; + proxy_set_header X-Plex-Token $http_x_plex_token; + proxy_set_header X-Plex-Version $http_x_plex_version; + proxy_set_header X-Plex-Nocache $http_x_plex_nocache; + proxy_set_header X-Plex-Provides $http_x_plex_provides; + proxy_set_header X-Plex-Device-Vendor $http_x_plex_device_vendor; + proxy_set_header X-Plex-Model $http_x_plex_model; + ''; + }; }; }; - }; - } + } (mkIf config.deploy.profile.trusted (import config.kw.secrets.repo.access.source { inherit config meta; })) ]; } diff --git a/config/services/daiyousei-access.nix b/config/services/daiyousei-access.nix index 0988d260..9b772e2f 100644 --- a/config/services/daiyousei-access.nix +++ b/config/services/daiyousei-access.nix @@ -3,7 +3,7 @@ deploy.tf.dns.records.services_home = { inherit (config.network.dns) zone; domain = "home"; - cname = { inherit (config.network.addresses.public) target; }; + a = { inherit (config.network.addresses.public.tf.ipv4) address; }; }; services.nginx.virtualHosts = { @@ -12,7 +12,7 @@ enableACME = true; locations = { "/" = { - proxyPass = "http://home.int.kittywit.ch:80/"; + proxyPass = "http://home.int.kittywit.ch:8123"; extraConfig = '' proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; diff --git a/config/services/plex.nix b/config/services/plex.nix index dae41014..70dc5670 100644 --- a/config/services/plex.nix +++ b/config/services/plex.nix @@ -1,7 +1,41 @@ -{ config, ... }: { +{ config, kw, pkgs, lib, ... }: { services = { plex = { enable = true; + package = pkgs.plex.overrideAttrs (x: let + # see https://www.plex.tv/media-server-downloads/ for 64bit rpm + version = "1.25.9.5721-965587f64"; + sha256 = "sha256-NPfpQ8JwXDaq8xpvSabyqdDqMWjoqbeoJdu41nhdsI0="; + in { + name = "plex-${version}"; + src = pkgs.fetchurl { + url = "https://downloads.plex.tv/plex-media-server-new/${version}/debian/plexmediaserver_${version}_amd64.deb"; + inherit sha256; + }; + } + ); + }; + + nginx.virtualHosts."plex.kittywit.ch".locations."/" = { + proxyPass = "http://127.0.0.1:32400"; + extraConfig = '' + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_redirect off; + proxy_buffering off; + proxy_set_header X-Plex-Client-Identifier $http_x_plex_client_identifier; + proxy_set_header X-Plex-Device $http_x_plex_device; + proxy_set_header X-Plex-Device-Name $http_x_plex_device_name; + proxy_set_header X-Plex-Platform $http_x_plex_platform; + proxy_set_header X-Plex-Platform-Version $http_x_plex_platform_version; + proxy_set_header X-Plex-Product $http_x_plex_product; + proxy_set_header X-Plex-Token $http_x_plex_token; + proxy_set_header X-Plex-Version $http_x_plex_version; + proxy_set_header X-Plex-Nocache $http_x_plex_nocache; + proxy_set_header X-Plex-Provides $http_x_plex_provides; + proxy_set_header X-Plex-Device-Vendor $http_x_plex_device_vendor; + proxy_set_header X-Plex-Model $http_x_plex_model; + ''; }; }; } diff --git a/config/services/tvheadend.nix b/config/services/tvheadend.nix index b7e127fa..2912ac9c 100644 --- a/config/services/tvheadend.nix +++ b/config/services/tvheadend.nix @@ -21,6 +21,19 @@ }; }; + systemd.services.antennas = { + wantedBy = [ "plex.service" ]; + after = [ "tvheadend-kat.service" ]; + serviceConfig = let + antennaConf = pkgs.writeText "config.yaml" (builtins.toJSON { + antennas_url = "http://127.0.0.1:5009"; + tvheadend_url = "http://127.0.0.1:9981"; + tuner_count = "6"; + }); in { + ExecStart = "${pkgs.antennas}/bin/antennas --config ${antennaConf}"; + }; + }; + systemd.services.tvheadend-kat = { description = "Tvheadend TV streaming server"; wantedBy = [ "multi-user.target" ]; diff --git a/config/tf b/config/tf index 736c050e..a008ca69 160000 --- a/config/tf +++ b/config/tf @@ -1 +1 @@ -Subproject commit 736c050ee87fd11137f75112c0548174ec654036 +Subproject commit a008ca692a8217c4f52ceac1d40be39f77c9a324