Files
NomadBackup/nomad_backup/navidrome.hcl
2025-11-21 21:10:40 +00:00

118 lines
3.0 KiB
HCL

job "navidrome" {
datacenters = ["dc1"]
type = "service"
constraint {
attribute = "${attr.unique.hostname}"
operator = "regexp"
value = "odroid.*"
}
group "navidrome" {
count = 1
# Prestart restore task
task "restore" {
driver = "docker"
lifecycle {
hook = "prestart"
sidecar = false
}
config {
image = "litestream/litestream:latest"
args = [
"restore",
"-if-replica-exists",
"-if-db-not-exists",
"-o", "/alloc/tmp/navidrome.db",
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db"
]
volumes = [
"/mnt/configs/navidrome:/data"
]
}
}
# Main Navidrome task
task "navidrome" {
driver = "docker"
config {
image = "ghcr.io/navidrome/navidrome:latest"
memory_hard_limit = "2048"
ports = ["http"]
volumes = [
"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro",
"/mnt/Public/Downloads/news/slskd/downloads:/music/slskd:ro",
"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro",
"/mnt/configs/navidrome:/data"
]
}
env {
ND_DATAFOLDER = "/alloc/tmp/"
ND_CACHEFOLDER = "./data/cache"
ND_SCANSCHEDULE = "32 8-20 * * *"
ND_LOGLEVEL = "debug"
ND_REVERSEPROXYWHITELIST = "0.0.0.0/0"
ND_REVERSEPROXYUSERHEADER = "X-Forwarded-User"
ND_SCANNER_GROUPALBUMRELEASES = "False"
ND_BACKUP_PATH = "/data"
ND_BACKUP_SCHEDULE = "0 0 * * *"
ND_BACKUP_COUNT = "7"
}
resources {
cpu = 100
memory = 128
}
service {
name = "navidrome"
tags = [
"navidrome",
"web",
"urlprefix-/navidrome",
"tools",
"traefik.http.routers.navidromelan.rule=Host(`navidrome.service.dc1.consul`)",
"traefik.http.routers.navidromewan.rule=Host(`m.fbleagh.duckdns.org`)",
"traefik.http.routers.navidromewan.middlewares=dex@consulcatalog",
"traefik.http.routers.navidromewan.tls=true",
]
port = "http"
check {
type = "tcp"
interval = "10s"
timeout = "2s"
}
}
}
# Litestream sidecar for continuous replication
task "litestream" {
driver = "docker"
lifecycle {
hook = "poststart" # runs after main task starts
sidecar = true
}
config {
image = "litestream/litestream:latest"
args = [
"replicate",
"/alloc/tmp/navidrome.db",
"sftp://root:odroid@192.168.4.63/mnt/Shares/litestream/navidrome.db"
]
volumes = [
"/mnt/configs/navidrome:/data"
]
}
}
network {
port "http" {
static = 4533
to = 4533
}
}
}
}