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:
@@ -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
|
||||||
|
|||||||
@@ -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";
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"; };
|
||||||
|
|||||||
@@ -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
@@ -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"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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";
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user