Files
NomadBackup/nomad_backup/gonic.hcl
2025-11-24 15:25:01 +00:00

151 lines
3.7 KiB
HCL

job "gonic" {
datacenters = ["dc1"]
type = "service"
group "gonic" {
count = 1
task "gonic" {
driver = "docker"
config {
image = "sentriz/gonic"
port_map {
http = 80
}
volumes = [
"/mnt/configs/gonic/data:/data",
"/mnt/configs/gonic/cache:/cache",
"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro",
"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro",
"/mnt/Public/Downloads/podcasts:/podcasts",
"/mnt/Public/Downloads/musicplaylists:/musicplaylists",
]
}
env{
GONIC_SCAN_INTERVAL = "120"
GONIC_MUSIC_PATH = "/music"
GONIC_PODCAST_PATH = "/podcasts"
GONIC_PLAYLISTS_PATH = "/musicplaylists"
}
resources {
cpu = 100 # 100 MHz
memory = 256 # 128 MB
network {
port "http" {
static = "4747"
}
}
}
service {
name = "gonic"
tags = [
"gonic",
"web",
"urlprefix-/gonic",
"backend",
"traefik.http.routers.goniclan.rule=Host(`gonic.service.dc1.consul`)",
"traefik.http.routers.gonicwan.rule=Host(`mg.fbleagh.duckdns.org`)",
"traefik.http.routers.gonicwan.tls=true",
"traefik.http.routers.gonicwan.tls.certresolver=myresolver"
]
// "traefik.http.middlewares.gonic_auth.basicauth.users=admin:$2y$05$cJGONoS0BFTeBUXqmETikeI14QhLDKIDkYuPdA1umIOC129grVMAm",
port = "http"
meta {
ALLOC = "${NOMAD_ALLOC_ID}"
}
check {
type = "tcp"
interval = "10s"
timeout = "2s"
}
}
} #end gonic
task "init-manual" {
driver = "docker"
lifecycle {
hook = "prestart"
sidecar = false
}
config {
memory_hard_limit = "2048"
image = "ghcr.io/sstent/rsync"
volumes = [
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
"/mnt/Public/config/locks:/locks"
]
args = ["flock", "-x","/locks/${NOMAD_GROUP_NAME}_rsync.lock","rsync","-av","--exclude=Backups","/configbackup/","/config/","--delete-before"]
}
resources {
cpu = 20 # 500 MHz
memory = 20 # 128MB
}
}
task "finalsync-manual" {
driver = "docker"
lifecycle {
hook = "poststop"
}
config {
memory_hard_limit = "2048"
image = "ghcr.io/sstent/rsync"
volumes = [
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
"/mnt/Public/config/locks:/locks"
]
args = ["flock", "-x","/locks/${NOMAD_GROUP_NAME}_rsync.lock","rsync","-av","/config/","/configbackup/"]
}
resources {
cpu = 20 # 500 MHz
memory = 20 # 128MB
}
}
task "db-sync" {
driver = "docker"
lifecycle {
hook = "poststart"
sidecar = true
}
config {
memory_hard_limit = "2048"
image = "ghcr.io/sstent/rsync"
volumes = [
"/mnt/configs/${NOMAD_GROUP_NAME}:/config",
"/mnt/Public/config/${NOMAD_GROUP_NAME}:/configbackup",
]
// args = ["/usr/local/bin/litestream", "replicate", "-config","/local/litestream.yml"]
}
resources {
cpu = 20 # 500 MHz
memory = 20 # 128MB
}
template {
data = <<EOH
dbs:
- path: /data/gonic.db
replicas:
- path: /configbackup
EOH
destination = "local/litestream.yml"
}
} #####
}
}