chore: backup infrastructure configurations [skip ci]

This commit is contained in:
github-actions[bot]
2025-11-25 02:00:43 +00:00
parent 26a7d1eee1
commit 9e6c3bdecd
17 changed files with 338 additions and 24 deletions

View File

@@ -1,5 +1,5 @@
{ {
"backup_timestamp": "2025-11-24T15:25:00.879116", "backup_timestamp": "2025-11-25T02:00:43.207780",
"total_keys": 79, "total_keys": 79,
"successful_backups": 74, "successful_backups": 74,
"failed_backups": 5, "failed_backups": 5,

View File

@@ -1 +1 @@
{"conn_url":"postgres://192.168.4.226:5432/postgres","api_url":"http://192.168.4.226:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":589299797968,"replication_state":"streaming","timeline":248} {"conn_url":"postgres://192.168.4.226:5432/postgres","api_url":"http://192.168.4.226:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":589695087928,"replication_state":"streaming","timeline":248}

View File

@@ -1 +1 @@
{"conn_url":"postgres://192.168.4.227:5432/postgres","api_url":"http://192.168.4.227:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":589299779856,"replication_state":"streaming","timeline":248} {"conn_url":"postgres://192.168.4.227:5432/postgres","api_url":"http://192.168.4.227:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":589695042792,"replication_state":"streaming","timeline":248}

View File

@@ -1 +1 @@
{"conn_url":"postgres://192.168.4.228:5432/postgres","api_url":"http://192.168.4.228:8008/patroni","state":"running","role":"primary","version":"4.0.4","xlog_location":589299779856,"timeline":248} {"conn_url":"postgres://192.168.4.228:5432/postgres","api_url":"http://192.168.4.228:8008/patroni","state":"running","role":"primary","version":"4.0.4","xlog_location":589695042792,"timeline":248}

View File

@@ -1 +1 @@
{"conn_url":"postgres://192.168.4.36:5432/postgres","api_url":"http://192.168.4.36:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":589299713952,"replication_state":"streaming","timeline":248} {"conn_url":"postgres://192.168.4.36:5432/postgres","api_url":"http://192.168.4.36:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":589695111384,"replication_state":"streaming","timeline":248}

View File

@@ -1 +1 @@
{"optime":589299779856,"slots":{"pg_odroid6":589299779856,"pg_odroid7":589299779856,"pg_opti1":589299779856,"pg_odroid8":589299779856},"retain_slots":["pg_odroid6","pg_odroid7","pg_odroid8","pg_opti1"]} {"optime":589695042792,"slots":{"pg_odroid6":589695042792,"pg_odroid7":589695042792,"pg_opti1":589695042792,"pg_odroid8":589695042792},"retain_slots":["pg_odroid6","pg_odroid7","pg_odroid8","pg_opti1"]}

View File

@@ -1 +1 @@
{"state": null, "start_time": null, "stabilization_checks": 0} {"state": "stopping_torrents", "start_time": 1763998459.4216952, "stabilization_checks": 0}

View File

@@ -1 +1 @@
{"connection_state": "unstable", "last_state_change_time": 1763997771.3138738, "consecutive_failures": 0, "consecutive_stable_checks": 0, "last_failure_time": 1763829749.067393} {"connection_state": "unstable", "last_state_change_time": 1763997771.3138738, "consecutive_failures": 837, "consecutive_stable_checks": 0, "last_failure_time": 1764028457.5270371}

View File

@@ -1 +1 @@
{"vpn_status": "running", "last_vpn_status_change": 1763829147.0930555, "public_ip": "139.28.218.235", "last_public_ip_change": 1763997771.0223732, "public_ip_details": {"public_ip": "139.28.218.235", "region": "Quebec", "country": "Canada", "city": "Montreal", "location": "45.499401,-73.570297", "organization": "M247 Europe SRL", "postal_code": "H3B", "timezone": "America/Toronto"}} {"vpn_status": "running", "last_vpn_status_change": 1764028493.6521404, "public_ip": "87.101.92.171", "last_public_ip_change": 1764016230.1919472, "public_ip_details": {"public_ip": "87.101.92.171", "region": "Quebec", "country": "Canada", "city": "Montr\u00e9al", "location": "45.5088,-73.5878", "organization": "AS9009 M247 Europe SRL", "postal_code": "H3H", "timezone": "America/Toronto"}}

View File

@@ -0,0 +1,70 @@
job "node-exporter" {
region = "global"
datacenters = ["dc1"]
type = "system"
constraint {
attribute = "${attr.kernel.name}"
value = "linux"
}
group "node-exporter" {
count = 1
restart {
attempts = 3
delay = "20s"
mode = "delay"
}
task "node-exporter" {
driver = "docker"
config {
#image = "anzevalher/node-exporter"
image = "prom/node-exporter"
force_pull = true
args = ["--collector.cpu","--collector.filesystem","--collector.meminfo","--collector.thermal_zone","--collector.disable-defaults",]
volumes = [
"/proc:/host/proc",
"/sys:/host/sys",
"/:/rootfs",
]
port_map {
http = 9100
}
}
service {
name = "node-exporter"
tags = [
"metrics",
]
port = "http"
check {
type = "http"
path = "/metrics/"
interval = "10s"
timeout = "2s"
}
}
resources {
cpu = 20
memory = 20
network {
port "http" {
static = "9100"
}
}
}
}
}
}

View File

@@ -0,0 +1,70 @@
job "node-exporter_backup" {
region = "global"
datacenters = ["dc1"]
type = "system"
node_pool = "backup"
constraint {
attribute = "${attr.kernel.name}"
value = "linux"
}
group "node-exporter" {
count = 1
restart {
attempts = 3
delay = "20s"
mode = "delay"
}
task "node-exporter" {
driver = "docker"
config {
#image = "anzevalher/node-exporter"
image = "prom/node-exporter"
force_pull = true
args = ["--collector.cpu","--collector.filesystem","--collector.meminfo","--collector.thermal_zone","--collector.disable-defaults",]
volumes = [
"/proc:/host/proc",
"/sys:/host/sys",
"/:/rootfs",
]
port_map {
http = 9100
}
}
service {
name = "node-exporter"
tags = [
"metrics",
]
port = "http"
check {
type = "http"
path = "/metrics/"
interval = "10s"
timeout = "2s"
}
}
resources {
cpu = 20
memory = 20
network {
port "http" {
static = "9100"
}
}
}
}
}
}

View File

@@ -226,6 +226,14 @@ service {
}, },
] ]
} }
env {
REQUIRE_AUTH = "false" # Option 1: Disable auth
# OR
# REQUIRE_AUTH = "true" # Option 2: Enable auth with credentials
# PROXY_USER = "your-username"
# PROXY_PASSWORD = "your-password"
}
resources { resources {
cpu = 64 # 500 MHz cpu = 64 # 500 MHz

View File

@@ -1,12 +1,6 @@
# There can only be a single job definition per file. # There can only be a single job definition per file.
# Create a job with ID and Name 'example' # Create a job with ID and Name 'example'
job "prowlarr" { job "prowlarr" {
constraint {
attribute = "${attr.cpu.arch}"
operator = "!="
value = "arm"
}
datacenters = ["dc1"] datacenters = ["dc1"]
type = "service" type = "service"
@@ -36,11 +30,28 @@ job "prowlarr" {
} }
task "flaresolver" {
driver = "docker"
config {
image = "ghcr.io/flaresolverr/flaresolverr:latest"
ports = ["http_flare"]
dns_servers = ["${attr.unique.network.ip-address}","192.168.4.250","8.8.8.8"]
memory_hard_limit = "2048"
force_pull = false
}
service {
name = "${TASKGROUP}"
tags = ["prowlarr_pg", "tools"]
port = "http_flare"
}
}
task "prowlarr" { task "prowlarr" {
driver = "docker" driver = "docker"
config { config {
image = "ghcr.io/linuxserver/prowlarr:develop" image = "ghcr.io/linuxserver/prowlarr:develop"
ports = ["http"] ports = ["http"]
dns_servers = ["${attr.unique.network.ip-address}","192.168.4.250","8.8.8.8"]
memory_hard_limit = "2048" memory_hard_limit = "2048"
volumes = [ volumes = [
"/mnt/Public/configs/prowlarr_pg:/config", "/mnt/Public/configs/prowlarr_pg:/config",

View File

@@ -159,6 +159,13 @@
] ]
} }
env {
REQUIRE_AUTH = "false" # Option 1: Disable auth
# OR
# REQUIRE_AUTH = "true" # Option 2: Enable auth with credentials
# PROXY_USER = "your-username"
# PROXY_PASSWORD = "your-password"
}
resources { resources {
cpu = 64 # 500 MHz cpu = 64 # 500 MHz
memory = 128 # 128MB memory = 128 # 128MB

View File

@@ -43,7 +43,7 @@ job "sonarr-small" {
ports = ["http"] ports = ["http"]
// dns_servers = ["192.168.1.1", "1.1.1.1"] dns_servers = ["${attr.unique.network.ip-address}","192.168.4.250","8.8.8.8"]
memory_hard_limit = "2048" memory_hard_limit = "2048"
// cpuset_cpus = "4-7" // cpuset_cpus = "4-7"

View File

@@ -1,11 +1,4 @@
job "traefik" { job "traefik" {
node_pool = "default"
constraint {
attribute = "${attr.cpu.arch}"
operator = "!="
value = "arm"
}
datacenters = ["dc1"] datacenters = ["dc1"]
type = "system" type = "system"
@@ -65,7 +58,7 @@ job "traefik" {
"/mnt/mnt/configs/letsencrypt:/acmecert/", "/mnt/mnt/configs/letsencrypt:/acmecert/",
] ]
// dns_servers = ["192.168.4.1", "192.168.4.250"] dns_servers = ["${attr.unique.network.ip-address}","192.168.4.250","8.8.8.8"]
ports = ["traefik", "traefikhttps","traefikui"] ports = ["traefik", "traefikhttps","traefikui"]
memory_hard_limit = 20480 memory_hard_limit = 20480

155
nomad_backup/unpackerr.hcl Normal file
View File

@@ -0,0 +1,155 @@
# There can only be a single job definition per file.
# Create a job with ID and Name 'example'
job "unpackerr" {
datacenters = ["dc1"]
type = "service"
constraint {
attribute = "${attr.kernel.name}"
value = "linux"
}
constraint {
attribute = "${attr.unique.hostname}"
operator = "regexp"
value = "odroid.*"
}
// affinity {
// attribute = "${attr.unique.hostname}"
// value = "odroid2"
// value = "odroid2"
// weight = 100
// }
update {
stagger = "10s"
max_parallel = 1
}
group "unpackerr" {
count = 1
restart {
attempts = 2
interval = "1m"
delay = "10s"
mode = "fail"
}
task "unpackerr" {
driver = "docker"
config {
image = "golift/unpackerr"
memory_hard_limit = "2048"
force_pull = false
dns_servers = ["${attr.unique.network.ip-address}","192.168.4.250","8.8.8.8"]
volumes = [
"/mnt/Public/Downloads/news:/downloads",
]
}
env {
TZ = "EST5EDT"
#PUID = 1000
#PGID = 1000
#TZ=${TZ}
#General config
UN_DEBUG="false"
#UN_LOG_FILE=
#UN_LOG_FILES=10
#UN_LOG_FILE_MB=10
#UN_INTERVAL=2m
#UN_START_DELAY=1m
#UN_RETRY_DELAY=5m
#UN_MAX_RETRIES=3
#UN_PARALLEL=1
#UN_FILE_MODE=0644
#UN_DIR_MODE=0755
#Sonarr Config
UN_SONARR_0_URL="http://sonarr.service.dc1.consul:8989"
UN_SONARR_0_API_KEY="1632787062fb47a9a6eb4c88e32b3ff3"
UN_SONARR_0_PATHS_0="/downloads/qbittorrent/tv-sonarr"
UN_SONARR_0_PROTOCOLS="torrent"
UN_SONARR_0_TIMEOUT="10s"
UN_SONARR_0_DELETE_ORIG="false"
UN_SONARR_0_DELETE_DELAY="5m"
UN_SONARR_1_URL="http://sonarr-small.service.dc1.consul:8989"
UN_SONARR_1_API_KEY="1632787062fb47a9a6eb4c88e32b3ff3"
UN_SONARR_1_PATHS_0="/downloads/qbittorrent/tv-sonarrsmall"
UN_SONARR_1_PROTOCOLS="torrent"
UN_SONARR_1_TIMEOUT="10s"
UN_SONARR_1_DELETE_ORIG="false"
UN_SONARR_1_DELETE_DELAY="5m"
#Radarr Config
UN_RADARR_0_URL="http://radarr.service.dc1.consul:7878"
UN_RADARR_0_API_KEY="237c27f22504440385e5ee295fd65eb5"
UN_RADARR_0_PATHS_0="/downloads/qbittorrent/radarr"
UN_RADARR_0_PROTOCOLS="torrent"
UN_RADARR_0_TIMEOUT="10s"
UN_RADARR_0_DELETE_ORIG="false"
UN_RADARR_0_DELETE_DELAY="5m"
#Lidarr Config
#UN_LIDARR_0_URL=http://lidarr.service.dc1.consul:8686
#UN_LIDARR_0_API_KEY=
#UN_LIDARR_0_PATHS_0=/downloads
#UN_LIDARR_0_PROTOCOLS=torrent
#UN_LIDARR_0_TIMEOUT=10s
#UN_LIDARR_0_DELETE_ORIG=false
#UN_LIDARR_0_DELETE_DELAY=5m
#Readarr Config
#UN_READARR_0_URL=http://readarr:8787
#UN_READARR_0_API_KEY=
#UN_READARR_0_PATHS_0=/downloads
#UN_READARR_0_PROTOCOLS=torrent
#UN_READARR_0_TIMEOUT=10s
#UN_READARR_0_DELETE_ORIG=false
#UN_READARR_0_DELETE_DELAY=5m
#Folder Config
#UN_FOLDER_0_PATH=
#UN_FOLDER_0_EXTRACT_PATH=
#UN_FOLDER_0_DELETE_AFTER=10m
#UN_FOLDER_0_DELETE_ORIGINAL=false
#UN_FOLDER_0_DELETE_FILES=false
#UN_FOLDER_0_MOVE_BACK=false
#Webhook Config
#UN_WEBHOOK_0_URL=
#UN_WEBHOOK_0_NAME=
#UN_WEBHOOK_0_NICKNAME=Unpackerr
#UN_WEBHOOK_0_CHANNEL=
#UN_WEBHOOK_0_TIMEOUT=10s
#UN_WEBHOOK_0_SILENT=false
#UN_WEBHOOK_0_IGNORE_SSL=false
#UN_WEBHOOK_0_EXCLUDE_0=
#UN_WEBHOOK_0_EVENTS_0=0
#UN_WEBHOOK_0_TEMPLATE_PATH=
#UN_WEBHOOK_0_CONTENT_TYPE=application/json
#Command Hook Config
#UN_CMDHOOK_0_COMMAND=
#UN_CMDHOOK_0_NAME=
#UN_CMDHOOK_0_TIMEOUT=10s
#UN_CMDHOOK_0_SILENT=false
#UN_CMDHOOK_0_SHELL=false
#UN_CMDHOOK_0_EXCLUDE_0=
#UN_CMDHOOK_0_EVENTS_0=0
}
resources {
cpu = 500 # 500 MHz
memory = 256 # 128MB
}
# Specify configuration related to log rotation
logs {
max_files = 10
max_file_size = 15
}
# Controls the timeout between signalling a task it will be killed
# and killing the task. If not set a default is used.
kill_timeout = "10s"
} #End main task
}
}