Move jellyfin to hardware box

Rather than running Jellyfin on a VM as before, just move the service
over to Hosea, which isn't doing anything graphical
This commit is contained in:
Greg Hellings
2025-11-08 15:37:02 -06:00
parent 3552aa0890
commit c4119dd9b7
8 changed files with 75 additions and 145 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
# vim: set filetype=nushell : # vim: set filetype=nushell :
let servers = [isaiah jeremiah zeke genesis vm-gitlab vm-jellyfin] let servers = [isaiah jeremiah zeke genesis vm-gitlab]
def par-map [ items: list, c: closure ] { def par-map [ items: list, c: closure ] {
let results = $items | par-each -k $c let results = $items | par-each -k $c
-1
View File
@@ -41,5 +41,4 @@ in
linode = greg "linode"; linode = greg "linode";
hosea = greg "hosea"; hosea = greg "hosea";
vm-gitlab = greg "vm-gitlab"; vm-gitlab = greg "vm-gitlab";
vm-jellyfin = greg "vm-jellyfin";
} }
-1
View File
@@ -53,7 +53,6 @@ in
isaiah = unstable { name = "isaiah"; }; isaiah = unstable { name = "isaiah"; };
vm-gitlab = vm { name = "vm-gitlab"; }; vm-gitlab = vm { name = "vm-gitlab"; };
vm-jellyfin = vm { name = "vm-jellyfin"; };
proxmoxtemplate = unstable { name = "proxmoxtemplate"; }; proxmoxtemplate = unstable { name = "proxmoxtemplate"; };
iso = unstable { name = "iso"; }; iso = unstable { name = "iso"; };
+3 -3
View File
@@ -10,7 +10,7 @@
10.42.1.4 chronicles chronicles.thehellings.lan nas.thehellings.lan s3.thehellings.lan 10.42.1.4 chronicles chronicles.thehellings.lan nas.thehellings.lan s3.thehellings.lan
10.42.1.5 genesis genesis.thehellings.lan dns dns.thehellings.lan smart smart.thehellings.lan speedtest.thehellings.lan nixcache.thehellings.lan gitcache.thehellings.lan 10.42.1.5 genesis genesis.thehellings.lan dns dns.thehellings.lan smart smart.thehellings.lan speedtest.thehellings.lan nixcache.thehellings.lan gitcache.thehellings.lan
10.42.1.6 isaiah isaiah.thehellings.lan minio-01.thehellings.lan 10.42.1.6 isaiah isaiah.thehellings.lan minio-01.thehellings.lan
10.42.1.7 hosea hosea.thehellings.lan 10.42.1.7 hosea hosea.thehellings.lan jellyfin jellyfin.thehellings.lan
10.42.1.8 jeremiah jeremiah.thehellings.lan minio-02.thehellings.lan 10.42.1.8 jeremiah jeremiah.thehellings.lan minio-02.thehellings.lan
10.42.1.9 ivr ivr.thehellings.lan 10.42.1.9 ivr ivr.thehellings.lan
# 10 - monitor # 10 - monitor
@@ -21,7 +21,7 @@
# VMs # VMs
10.42.4.1 matrix matrix.thehellings.lan 10.42.4.1 matrix matrix.thehellings.lan
10.42.4.2 jellyfin jellyfin.thehellings.lan vm-jellyfin vm-jellyfin.thehellings.lan #10.42.4.2 vm-jellyfin vm-jellyfin.thehellings.lan
10.42.4.3 git gitlab git.thehellings.lan gitlab.thehellings.lan 10.42.4.3 git gitlab git.thehellings.lan gitlab.thehellings.lan
# VIP # VIP
@@ -43,7 +43,7 @@
100.90.74.19 zeke.home 100.90.74.19 zeke.home
100.115.57.8 linode.home 100.115.57.8 linode.home
100.65.5.38 matrix.home matrix.shire-zebra.ts.net 100.65.5.38 matrix.home matrix.shire-zebra.ts.net
100.127.55.22 jellyfin.home #100.127.55.22 jellyfin.home
100.114.187.61 nas1.home nas1.shire-zebra.ts.net 100.114.187.61 nas1.home nas1.shire-zebra.ts.net
# Dev hosts # Dev hosts
+70 -7
View File
@@ -2,7 +2,7 @@
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ top, ... }: { pkgs, top, ... }:
let let
wanInterface = "enp2s0"; wanInterface = "enp2s0";
lanInterface = "enp1s0"; lanInterface = "enp1s0";
@@ -28,7 +28,43 @@ in
}; };
extraModprobeConfig = "vboxdrv"; extraModprobeConfig = "vboxdrv";
}; };
users.users.greg.extraGroups = [ "vboxusers" ];
environment.systemPackages = with pkgs; [
clinfo
glxinfo
jellyfin-ffmpeg
libva-utils
nfs-utils
radeontop
vulkan-tools
];
greg = {
home = true;
proxies = {
"jellyfin.home".target = "http://localhost:8096/";
"jellyfin.thehellings.lan".target = "http://localhost:8096/";
};
tailscale.enable = true;
};
hardware = {
enableAllFirmware = true;
enableRedistributableFirmware = true;
graphics = {
enable = true;
};
opengl = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
vaapiIntel
vaapiVdpau
#intel-media-sdk
intel-compute-runtime
];
};
};
networking = { networking = {
hostName = "hosea"; hostName = "hosea";
@@ -48,16 +84,43 @@ in
}; };
}; };
# Serves as the router, DHCP, and DNS for the site
greg = {
tailscale.enable = true;
home = true;
};
services = { services = {
jellyfin = {
enable = true;
openFirewall = true;
};
# Configure keymap # Configure keymap
xserver.xkb = { xserver.xkb = {
layout = "us"; layout = "us";
variant = ""; variant = "";
}; };
}; };
systemd.mounts =
let
nfs = name: {
what = "nas1.shire-zebra.ts.net:/mnt/all/${name}";
type = "nfs";
name = "${name}.mount";
where = "/${name}";
requires = [ "tailscaled-autoconnect.service" ];
after = [ "tailscaled-autoconnect.service" ];
wantedBy = [ "multi-user.target" ];
mountConfig.Options = "_netdev,noexec,ro,timeo=50,retrans=5,soft";
};
in
[
(nfs "music")
(nfs "photos")
(nfs "video")
];
users.users = {
greg.extraGroups = [ "vboxusers" ];
jellyfin.extraGroups = [
"video"
"render"
];
};
} }
-79
View File
@@ -1,79 +0,0 @@
{ pkgs, ... }:
{
imports = [ ./hardware-configuration.nix ];
# Bootloader.
boot = {
initrd.kernelModules = [ "amdgpu" ];
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
greg = {
home = true;
proxies."jellyfin.home".target = "http://localhost:8096/";
proxies."jellyfin.thehellings.lan".target = "http://localhost:8096/";
tailscale = {
enable = true;
hostname = "jellyfin";
};
};
environment.systemPackages = with pkgs; [
clinfo
glxinfo
jellyfin-ffmpeg
libva-utils
nfs-utils
radeontop
vulkan-tools
];
systemd.mounts =
let
nfs = name: {
what = "nas1.shire-zebra.ts.net:/mnt/all/${name}";
type = "nfs";
name = "${name}.mount";
where = "/${name}";
requires = [ "tailscaled-autoconnect.service" ];
after = [ "tailscaled-autoconnect.service" ];
wantedBy = [ "multi-user.target" ];
mountConfig.Options = "_netdev,noexec,ro,timeo=50,retrans=5,soft";
};
in
[
(nfs "music")
(nfs "photos")
(nfs "video")
];
hardware = {
enableAllFirmware = true;
enableRedistributableFirmware = true;
graphics = {
enable = true;
};
};
networking = {
hostName = "vm-jellyfin";
firewall.allowedTCPPorts = [ 80 ];
};
services = {
jellyfin = {
enable = true;
openFirewall = true;
};
qemuGuest.enable = true;
};
users.users.jellyfin.extraGroups = [
"video"
"render"
];
}
@@ -1,52 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
lib,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [
"uhci_hcd"
"ehci_pci"
"ahci"
"virtio_pci"
"virtio_scsi"
"sd_mod"
"sr_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = lib.mkDefault "/dev/disk/by-uuid/507251f1-efe7-448d-8de8-91ee582a9afb";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/7115-EFA6";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp6s18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}
+1 -1
View File
@@ -21,7 +21,7 @@ spec:
- 100.90.74.19 # zeke - 100.90.74.19 # zeke
- 100.115.57.8 # linode - 100.115.57.8 # linode
- 100.65.5.38 # matrix - 100.65.5.38 # matrix
- 100.127.55.22 # jellyfin #- 100.127.55.22 # jellyfin
--- ---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP kind: IngressRouteTCP