chore: backup infrastructure configurations [skip ci]
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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}
|
||||||
@@ -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}
|
||||||
@@ -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}
|
||||||
@@ -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}
|
||||||
@@ -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"]}
|
||||||
@@ -1 +1 @@
|
|||||||
{"state": null, "start_time": null, "stabilization_checks": 0}
|
{"state": "stopping_torrents", "start_time": 1763998459.4216952, "stabilization_checks": 0}
|
||||||
@@ -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}
|
||||||
@@ -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"}}
|
||||||
70
nomad_backup/node-exporter.hcl
Normal file
70
nomad_backup/node-exporter.hcl
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
70
nomad_backup/node-exporter_backup.hcl
Normal file
70
nomad_backup/node-exporter_backup.hcl
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -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
155
nomad_backup/unpackerr.hcl
Normal 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
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user