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 :
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 ] {
let results = $items | par-each -k $c
-1
View File
@@ -41,5 +41,4 @@ in
linode = greg "linode";
hosea = greg "hosea";
vm-gitlab = greg "vm-gitlab";
vm-jellyfin = greg "vm-jellyfin";
}
-1
View File
@@ -53,7 +53,6 @@ in
isaiah = unstable { name = "isaiah"; };
vm-gitlab = vm { name = "vm-gitlab"; };
vm-jellyfin = vm { name = "vm-jellyfin"; };
proxmoxtemplate = unstable { name = "proxmoxtemplate"; };
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.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.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.9 ivr ivr.thehellings.lan
# 10 - monitor
@@ -21,7 +21,7 @@
# VMs
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
# VIP
@@ -43,7 +43,7 @@
100.90.74.19 zeke.home
100.115.57.8 linode.home
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
# Dev hosts
+70 -7
View File
@@ -2,7 +2,7 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ top, ... }:
{ pkgs, top, ... }:
let
wanInterface = "enp2s0";
lanInterface = "enp1s0";
@@ -28,7 +28,43 @@ in
};
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 = {
hostName = "hosea";
@@ -48,16 +84,43 @@ in
};
};
# Serves as the router, DHCP, and DNS for the site
greg = {
tailscale.enable = true;
home = true;
};
services = {
jellyfin = {
enable = true;
openFirewall = true;
};
# Configure keymap
xserver.xkb = {
layout = "us";
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.115.57.8 # linode
- 100.65.5.38 # matrix
- 100.127.55.22 # jellyfin
#- 100.127.55.22 # jellyfin
---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP