From 1214f72958405c03d87fe3325e7fe435494510c9 Mon Sep 17 00:00:00 2001 From: jeremy Date: Wed, 4 Feb 2026 11:28:38 -0600 Subject: [PATCH] Update media stack Nomad job with host volumes --- nomad-jobs/media-stack.nomad.hcl | 95 ++++++-------------------------- 1 file changed, 18 insertions(+), 77 deletions(-) diff --git a/nomad-jobs/media-stack.nomad.hcl b/nomad-jobs/media-stack.nomad.hcl index 9a6bd5d..babfb77 100644 --- a/nomad-jobs/media-stack.nomad.hcl +++ b/nomad-jobs/media-stack.nomad.hcl @@ -1,5 +1,4 @@ -# Media Stack - hobbs.farm -# Services: Jellyfin, Sonarr, Radarr, SABnzbd, NZBHydra2, Jellyseerr +# Media Stack for hobbs.farm # Deploy: nomad job run media-stack.nomad.hcl job "media-stack" { @@ -29,13 +28,7 @@ job "media-stack" { service { name = "jellyfin" port = "http" - - tags = [ - "traefik.enable=true", - "traefik.http.routers.jellyfin.rule=Host(`r2d2.hobbs.farm`)", - "traefik.http.routers.jellyfin.entrypoints=websecure", - "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt", - ] + tags = ["media", "streaming"] check { type = "http" @@ -64,11 +57,11 @@ job "media-stack" { } env { - JELLYFIN_PublishedServerUrl = "https://r2d2.hobbs.farm" + JELLYFIN_PublishedServerUrl = "http://r2d2.hobbs.farm" } resources { - cpu = 2000 + cpu = 1000 memory = 2048 } } @@ -94,22 +87,10 @@ job "media-stack" { read_only = false } - volume "downloads" { - type = "host" - source = "downloads" - read_only = false - } - service { name = "sonarr" port = "http" - - tags = [ - "traefik.enable=true", - "traefik.http.routers.sonarr.rule=Host(`sonarr.hobbs.farm`)", - "traefik.http.routers.sonarr.entrypoints=websecure", - "traefik.http.routers.sonarr.tls.certresolver=letsencrypt", - ] + tags = ["media", "pvr"] check { type = "http" @@ -137,11 +118,6 @@ job "media-stack" { destination = "/media" } - volume_mount { - volume = "downloads" - destination = "/downloads" - } - env { PUID = "1000" PGID = "1000" @@ -175,22 +151,10 @@ job "media-stack" { read_only = false } - volume "downloads" { - type = "host" - source = "downloads" - read_only = false - } - service { name = "radarr" port = "http" - - tags = [ - "traefik.enable=true", - "traefik.http.routers.radarr.rule=Host(`radarr.hobbs.farm`)", - "traefik.http.routers.radarr.entrypoints=websecure", - "traefik.http.routers.radarr.tls.certresolver=letsencrypt", - ] + tags = ["media", "pvr"] check { type = "http" @@ -218,11 +182,6 @@ job "media-stack" { destination = "/media" } - volume_mount { - volume = "downloads" - destination = "/downloads" - } - env { PUID = "1000" PGID = "1000" @@ -250,22 +209,16 @@ job "media-stack" { read_only = false } - volume "downloads" { + volume "media" { type = "host" - source = "downloads" + source = "media" read_only = false } service { name = "sabnzbd" port = "http" - - tags = [ - "traefik.enable=true", - "traefik.http.routers.sabnzbd.rule=Host(`sabnzbd.hobbs.farm`)", - "traefik.http.routers.sabnzbd.entrypoints=websecure", - "traefik.http.routers.sabnzbd.tls.certresolver=letsencrypt", - ] + tags = ["media", "downloader"] check { type = "http" @@ -289,8 +242,8 @@ job "media-stack" { } volume_mount { - volume = "downloads" - destination = "/downloads" + volume = "media" + destination = "/media" } env { @@ -306,7 +259,7 @@ job "media-stack" { } } - # NZBHydra2 - Indexer Manager + # NZBHydra2 - Indexer Aggregator group "nzbhydra2" { count = 1 @@ -316,20 +269,14 @@ job "media-stack" { volume "config" { type = "host" - source = "nzbhydra2-config" + source = "nzbhydra-config" read_only = false } service { name = "nzbhydra2" port = "http" - - tags = [ - "traefik.enable=true", - "traefik.http.routers.nzbhydra2.rule=Host(`hydra.hobbs.farm`)", - "traefik.http.routers.nzbhydra2.entrypoints=websecure", - "traefik.http.routers.nzbhydra2.tls.certresolver=letsencrypt", - ] + tags = ["media", "indexer"] check { type = "http" @@ -360,12 +307,12 @@ job "media-stack" { resources { cpu = 300 - memory = 256 + memory = 384 } } } - # Jellyseerr - Media Request Manager + # Jellyseerr - Media Requests group "jellyseerr" { count = 1 @@ -382,17 +329,11 @@ job "media-stack" { service { name = "jellyseerr" port = "http" - - tags = [ - "traefik.enable=true", - "traefik.http.routers.jellyseerr.rule=Host(`requests.hobbs.farm`)", - "traefik.http.routers.jellyseerr.entrypoints=websecure", - "traefik.http.routers.jellyseerr.tls.certresolver=letsencrypt", - ] + tags = ["media", "requests"] check { type = "http" - path = "/api/v1/status" + path = "/" interval = "30s" timeout = "5s" }