feat: rename array orchestrators, add docker_update remainder mode

- Rename array_start.sh → array_started.sh, array_stop.sh → array_stopping.sh
  to clarify these are event-driven (array has started/is stopping), not imperative
- Update all references across 9 files (master.conf, user_script_plug-in.sh,
  watchdogs, continuous_scripts_status.sh, claude_startup.sh)
- Add --remainder mode to docker_update.sh: updates all running containers
  excluding daily containers, weekly sync-window containers (emby + critical-data),
  and fallback coverage containers (FALLBACK_${MY_ID}_COVERS_${REMOTE_ID}_TIER*)
  Fallback containers excluded because the remote server owns their version —
  independent updates risk writeback incompatibility on handback
- weekly_sync_maintenance.sh calls docker_update.sh --remainder as final step
- git_pull_execute.sh: add safe.directory config to fix dubious ownership error
  when running as root on a directory owned by uid 1000

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gmer4Lfe
2026-05-10 22:12:08 -04:00
co-authored by Claude Sonnet 4.6
parent eaade9a9d4
commit f16c962ac0
12 changed files with 176 additions and 56 deletions
+12 -12
View File
@@ -14,7 +14,7 @@
#
# You do not need to schedule every script below. The orchestrators cover it all:
#
# array_start.sh at array start — launches ALL startup scripts in order
# array_started.sh at array start — launches ALL startup scripts in order
# transcode_management.sh every 3 min — cleanup then manager (order critical)
# critical_sync_maintenance.sh every 15 min — auth + Emby dirty sync + partnership
# intermediate_sync_maintenance.sh every 4 hours — arr library sync + artwork fetch
@@ -61,7 +61,7 @@
# v1.7 — cert_monitor.sh added
# v1.8 — Monitors/ folder with all monitoring scripts
# v1.9 — transcode_management.sh added to Orchestrators/
# v2.0 — Major restructure: array_start.sh single entry point, daily/weekly orchestrators,
# v2.0 — Major restructure: array_started.sh single entry point, daily/weekly orchestrators,
# sunday_morning_coffee_report.sh, docker_network_connect combined,
# inotify_tuning.sh, arr path translation, version checking, nuclear mode flags
# v2.1 — critical_sync_maintenance.sh, Partnership/ folder, system_tuning_monitor.sh,
@@ -112,7 +112,7 @@
# docker_watchdog.sh [continuous] two-tier container self-healing watchdog
# fallback.sh [continuous] mutual fallback state machine
#
# bash /mnt/user/appdata/unraid_scripts/Orchestrators/array_start.sh
# bash /mnt/user/appdata/unraid_scripts/Orchestrators/array_started.sh
# ── TRANSCODE MANAGEMENT ──────────────────────────────────────────────────────────────────────
@@ -416,7 +416,7 @@
# ──────────────────────────────────────────────────────────────────────────────────────────────
# fallback.sh — [continuous] mutual fallback state machine
# Started by array_start.sh on both servers independently.
# Started by array_started.sh on both servers independently.
# Every FALLBACK_CHECK_INTERVAL (120s) pings: remote Tailscale IP + 8.8.8.8
# States: NORMAL / FALLBACK / NO_INTERNET / DARK
# FALLBACK: starts remote containers in tiers across 24 hours:
@@ -510,7 +510,7 @@
# ──────────────────────────────────────────────────────────────────────────────────────────────
# docker_watchdog.sh — [continuous] two-tier container self-healing monitor
# Started by array_start.sh. Every DOCKER_WATCHDOG_INTERVAL (900s = 15min).
# Started by array_started.sh. Every DOCKER_WATCHDOG_INTERVAL (900s = 15min).
#
# Tier 1 — explicit per-container (configured in master_host*.conf):
# Memory hard limits: immediate restart when exceeded — no strikes, no waiting
@@ -577,7 +577,7 @@
# bash /mnt/user/appdata/unraid_scripts/Docker_Essentials/docker_weekly_restart.sh
# docker_network_connect.sh — ensure custom networks exist and containers are connected
# Called by array_start.sh. Idempotent — silent when everything is already correct.
# Called by array_started.sh. Idempotent — silent when everything is already correct.
# Network missing → create (bridge driver, auto-assigned subnet) → notify.
# Network creation should only happen after an unRAID update wiped networks — notify tells you.
# Configured via HOST*_NETWORK_CONNECT_NETWORKS and HOST*_NETWORK_CONNECT_CONTAINERS.
@@ -637,7 +637,7 @@
# ──────────────────────────────────────────────────────────────────────────────────────────────
# system_watchdog.sh — [continuous] three-tier server stability last-resort watchdog
# Started by array_start.sh. Every SYSTEM_WATCHDOG_INTERVAL (300s = 5min).
# Started by array_started.sh. Every SYSTEM_WATCHDOG_INTERVAL (300s = 5min).
# All 18 checks independently toggleable per host in master_host*.conf.
#
# Tier 1 CRITICAL — bypass ALL strikes, reboot immediately:
@@ -664,7 +664,7 @@
# bash /mnt/user/appdata/unraid_scripts/unRAID_Essentials/system_watchdog.sh --dry-run
# inotify_tuning.sh — raise Linux inotify kernel limits at array start
# Called by array_start.sh FIRST — must run before containers start (they inherit limits).
# Called by array_started.sh FIRST — must run before containers start (they inherit limits).
# Settings reset on each reboot — script reapplies on every array start. Idempotent.
#
# Limits set:
@@ -679,7 +679,7 @@
# bash /mnt/user/appdata/unraid_scripts/unRAID_Essentials/inotify_tuning.sh
# php_fpm_max_children.sh — set PHP-FPM pm.max_children at array start
# Called by array_start.sh. Default is 4-8 workers — inadequate for a busy multi-user server.
# Called by array_started.sh. Default is 4-8 workers — inadequate for a busy multi-user server.
# Sets PHP_MAX_CHILDREN (250). 250 × ~2MB idle = ~500MB. Acceptable on 64GB+.
# Symptom of saturation: WebGUI slow, settings saves hang, container UI starts timeout.
# Resets on each reboot — reapplied at array start. Idempotent: silent when already correct.
@@ -688,7 +688,7 @@
# bash /mnt/user/appdata/unraid_scripts/unRAID_Essentials/php_fpm_max_children.sh
# docker_syslog_filter.sh — suppress Docker veth/docker0 interface log noise
# Called by array_start.sh before containers start. Creates rsyslog drop rule.
# Called by array_started.sh before containers start. Creates rsyslog drop rule.
# Without this: 50+ containers at array start = 200-400 lines of kernel veth messages.
# Real events (mount failures, permission errors) are invisible in that noise.
# Idempotent: compares expected filter content exactly — only writes when changed.
@@ -895,7 +895,7 @@
# ──────────────────────────────────────────────────────────────────────────────────────────────
# ramdisk_setup.sh — create tmpfs ramdisk and transcode symlink at array start
# Called by array_start.sh. MUST run before Emby starts.
# Called by array_started.sh. MUST run before Emby starts.
# Idempotent: if ramdisk already mounted → report status and exit cleanly, do not remount.
#
# Creates:
@@ -1198,7 +1198,7 @@
# ==============================================================================================
#
# At Startup of Array:
# Orchestrators/array_start.sh (single entry — handles everything)
# Orchestrators/array_started.sh (single entry — handles everything)
#
# */3 * * * * every 3 minutes:
# Orchestrators/transcode_management.sh