Gmer4Lfe
95151c2278
Watchdogs/ folder + host conf rename
...
Move all watchdog scripts to a dedicated Watchdogs/ folder:
Docker_Essentials/docker_watchdog.sh → Watchdogs/
unRAID_Essentials/system_watchdog.sh → Watchdogs/
unRAID_Essentials/resource_watchdog.sh → Watchdogs/
Orchestrators/watchdog_orchestrator.sh → Watchdogs/
Tools/watchdog_skip_list_manager.sh → Watchdogs/
Rename host config files:
master_host1.conf → host1.conf
master_host2.conf → host2.conf
Update all references across the ecosystem:
master.conf: WATCHDOG_ORCHESTRATOR_SCRIPTS paths → Watchdogs/
load_config.sh: host*.conf glob + all comments
git_pull_execute.sh: sparse checkout glob + all comments
Partnership/ssh_setup.sh: HOST_CONF path construction
user_script_plug-in.sh: all script paths + per-host conf path
common.sh, README.md, README-User_Script_Plug-in.md: comment refs
All Partnership, Fallback, Monitors, Transcodes, Tools scripts: comment refs
2026-05-22 17:08:36 -04:00
Gmer4Lfe
ef8ef436cf
Orchestrators echo/log audit pass
...
Status conclusions, clean-cycle summaries, skipped-feature lines, and phase
completion results → echo across all nine orchestrator scripts. Per-share,
per-job, and per-script detail lines inside loops remain log. README-Orchestrators:
added Output Tiers section.
2026-05-21 17:25:29 -04:00
Gmer4Lfe and Claude Sonnet 4.6
9a5f6f88f2
refactor: rename resource_manager → resource_watchdog, RM_ → RW_
...
Consistent naming with the watchdog family (system_watchdog, docker_watchdog).
File renamed, all RM_ config variables and internal references updated to RW_
across master.conf, master_host1.conf, common.sh, docker_watchdog.sh,
system_watchdog.sh, watchdog_orchestrator.sh, and sunday_morning_coffee_report.sh.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 18:31:09 -04:00
Gmer4Lfe and Claude Sonnet 4.6
309546e615
feat: watchdog architecture v2 — resource manager + single-pass orchestrator
...
Introduce a four-layer self-healing stack replacing the continuous-loop watchdogs:
- resource_manager.sh (new): single-pass pressure reduction layer; throttles
SABnzbd/qBit at level 1, docker-pauses background containers at level 2,
docker-stops optional containers and signals docker_watchdog to defer at
level 3; graduated recovery with hysteresis
- watchdog_orchestrator.sh (new, Orchestrators/): runs resource_manager →
docker_watchdog → system_watchdog in sequence; intended for per-minute cron
via User Scripts; startup grace, acquire_lock to prevent pile-up, heartbeat
- docker_watchdog.sh: de-looped to single-pass; daemon strikes persisted to
state file across runs; cross-script coordination reads RM_STATE_FILE instead
of SYS_WATCHDOG_STATE_FILE
- system_watchdog.sh: de-looped to single-pass; stripped of all container
management (shutdown_non_essential_containers removed); reboot-only last resort
- master.conf: removed system_watchdog and docker_watchdog from
ARRAY_START_SCRIPTS; added WATCHDOG ORCHESTRATOR and RESOURCE MANAGER sections
- master_host1.conf: added RM_PAUSE_CONTAINERS and RM_STOP_CONTAINERS arrays
- common.sh: aliased RM_PAUSE_CONTAINERS and RM_STOP_CONTAINERS via detect_hosts()
- continuous_scripts_status.sh: moved to Tools/ (preserved for future use)
- sunday_morning_coffee_report.sh: watchdog section updated to use state file
mtime checks instead of is_running; added Resource Manager subsection;
fixed mem_shutdown grep filter pointing to wrong state file
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 17:41:59 -04:00
Gmer4Lfe and Claude Sonnet 4.6
009820e981
refactor: rename failover/HA → fallback across entire codebase
...
Removes all references to "failover" and "HA" (high availability)
terminology from variable names, config keys, state values, rsync
profile names, directory paths, and user-visible strings.
Mapping:
FAILOVER_* → FALLBACK_*
FAILOVER_HOST*_RUNS_FOR → FALLBACK_HOST*_COVERS
critical-failover → critical-fallback
emby-failover → emby-fallback
appdata-Failover/ → appdata-Fallback/
"FAILOVER" state value → "FALLBACK"
failover_start key → fallback_start
Failover/ directory → Fallback/
failover.sh → fallback.sh
failover_state.db → fallback_state.db
-Failover folder suffix → -Fallback
State machine: NORMAL | FALLBACK | DARK (unchanged)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-08 19:28:21 -04:00
Gmer4Lfe and Claude Sonnet 4.6
5526bc1eca
v2 post-migration bug fixes, lidarr_missing_art port, and Partnership SSH/FolderView3 enhancements
...
Bug fixes across the ecosystem after v1→v2 architecture migration and Unraid 7.2.5 upgrade:
- common.sh: fix _alias_array() phantom empty element (removed [@]:-} pattern), fix
resolve_remote_ip() with Tailscale FQDN lowercase + awk fallback, add FANART/LASTFM
key aliases in detect_hosts(), global [@]:-} sweep across 10+ scripts
- webgui_restart.sh: fix emhttp detection (pgrep emhttpd) and restart command for 7.2.5
(/usr/local/sbin/emhttp stop && start — rc.emhttp removed in 7.2.5)
- bandwidth_monitor.sh, continuous_scripts_status.sh: fix 'local' keyword outside function
- backup_verify.sh: fix resolve_remote_ip() called before detect_hosts()
- Orchestrators: fix script display duplication bug in status output (${entry##*/})
- rsync_stop.sh, git_pull_execute.sh, partnership_manager.sh, coffee_report: lowercase all
tailscale ip -4 call sites to match Tailscale's lowercase device names
- master_host1.conf: fix SSH key path (gmer4lfe_rsync_automation), add FANART/LASTFM keys
- master_host2.conf: add FANART/LASTFM API keys
New: Media/lidarr_missing_art.sh
- Full ecosystem port of standalone Lidarr artwork fetcher
- Fetches missing album art via fanart.tv + Last.fm APIs
- @tsv batch extraction: 1 jq call per API response vs N*albums (8050 albums in 24s)
- HOST guard (HOST1 only), --status, --dry-run, acquire_lock
New: Initial_run/ssh_setup.sh
- Generates {hostname}_rsync_automation ed25519 keypair (skip if exists, --force to regen)
- ssh-copy-id to remote via Tailscale IP, auto-updates master_host*.conf
- --validate mode: strike tracking (SSH_MAX_STRIKES, SSH_STRIKE_RESET_HRS),
notify at limit — Tailscale-unreachable remote does NOT count as SSH strike
New: Initial_run/partnership_onboard.sh
- Orchestrator: ssh_setup.sh then partnership_manager.sh --onboard in one command
Partnership/partnership_manager.sh: FolderView3 integration
- Derive partner folder name at runtime (strip unraid- prefix case-insensitively)
- --onboard: create {Mirror}-Failover folder with failover tier containers
- --offboard (both paths): stop + rm containers in folder, remove JSON entry
- --check: calls ssh_setup.sh --validate when IP resolves but SSH state empty
- --status: shows FolderView3 folder state and containers inline
master.conf: SSH_MAX_STRIKES, SSH_STRIKE_RESET_HRS, PARTNERSHIP_FOLDERVIEW3,
PARTNERSHIP_FOLDERVIEW3_URL added to Partnership section
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-08 18:20:23 -04:00
FailedProxy
ec7de648dc
massive update. Master conf split, now modular with a load sceriprt to drive all configs to scripts. with unraid scpecific safeguard tests , and improved standardized ux. including dynamic host detect, who am i who else it there. EVERY SINGLE SCRIPT UPDATED. DEBATING THAT THIS IS ACUALLY V2
2026-05-03 17:16:49 -04:00
FailedProxy
f7074cfba0
updated variables for coffee report.
2026-04-26 16:38:38 -04:00
FailedProxy
4f621192a5
update to incorrect output in temps on coffee report
2026-04-26 15:58:15 -04:00
FailedProxy
e9a42c2aee
updated weekly health and sunday coffee report, all needed monitor now in both
2026-04-26 14:42:23 -04:00
FailedProxy
b3d53b792b
added /mnt/user/appdata/unraid_scripts/Monitors/continuous_scripts_status.sh
2026-04-26 02:30:12 -04:00
FailedProxy
3df4542351
added manual neuclear option to arrs cleanup
2026-04-26 01:05:22 -04:00