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
This commit is contained in:
@@ -228,7 +228,7 @@ LIDARR_DISCOVERY_REJECT_COOLDOWN=30 # days before re-evaluating a Stage 2 reje
|
||||
LIDARR_DISCOVERY_HISTORY="$DATA_DIR/lidarr_discovery_history.db"
|
||||
```
|
||||
|
||||
Requires `HOST*_LASTFM_API_KEY` in `master_host*.conf`.
|
||||
Requires `HOST*_LASTFM_API_KEY` in `host*.conf`.
|
||||
|
||||
---
|
||||
|
||||
@@ -246,7 +246,7 @@ RADARR_DISCOVERY_SEED_LIBRARIES=("Movies") # Emby libraries to draw seeds from
|
||||
RADARR_DISCOVERY_HISTORY="$DATA_DIR/radarr_discovery_history.db"
|
||||
```
|
||||
|
||||
Requires `HOST*_TMDB_API_KEY` in `master_host*.conf`.
|
||||
Requires `HOST*_TMDB_API_KEY` in `host*.conf`.
|
||||
|
||||
---
|
||||
|
||||
@@ -266,7 +266,7 @@ SONARR_DISCOVERY_HISTORY="$DATA_DIR/sonarr_discovery_history.db"
|
||||
# SONARR_EMBY_LIBRARIES is shared with emby_to_sonarr_sync — see Orchestrator Job Order
|
||||
```
|
||||
|
||||
Requires `HOST*_TMDB_API_KEY` in `master_host*.conf`.
|
||||
Requires `HOST*_TMDB_API_KEY` in `host*.conf`.
|
||||
|
||||
> **MONITOR_MODE note:** Use `"all"` (default) to have Sonarr search all existing seasons
|
||||
> after adding a show. `"future"` only marks upcoming seasons as monitored — shows where
|
||||
@@ -289,9 +289,9 @@ MEDIA_MAINTENANCE_JOBS=(
|
||||
|
||||
---
|
||||
|
||||
## ━━━ CONFIGURATION — master_host*.conf ━━━
|
||||
## ━━━ CONFIGURATION — host*.conf ━━━
|
||||
|
||||
### master_host1.conf
|
||||
### host1.conf
|
||||
|
||||
```bash
|
||||
# Shares this server applies permissions to
|
||||
@@ -429,7 +429,7 @@ cp radarr_cleanup.sh readarr_cleanup.sh
|
||||
# 2. Replace RADARR_ prefix with READARR_ throughout
|
||||
# Update API endpoint, tracked file API path, extension list, protected patterns
|
||||
|
||||
# 3. Add to master_host*.conf
|
||||
# 3. Add to host*.conf
|
||||
HOST1_READARR_URL="http://192.168.50.2:8787"
|
||||
HOST1_READARR_API_KEY="your-api-key"
|
||||
HOST1_READARR_BOOKS_ROOT="/mnt/user/Books"
|
||||
@@ -534,7 +534,7 @@ If ghosts persist:
|
||||
1. Is Emby's API responding?
|
||||
curl -s "http://[emby-ip]:8096/System/Info/Public"
|
||||
|
||||
2. Is EMBY_URL / EMBY_API_KEY correct in master_host*.conf?
|
||||
2. Is EMBY_URL / EMBY_API_KEY correct in host*.conf?
|
||||
Run: sonarr_cleanup.sh --status (shows Emby config)
|
||||
|
||||
3. Trigger manually in Emby:
|
||||
|
||||
+1
-1
@@ -78,7 +78,7 @@
|
||||
# CONFIGURATION
|
||||
# ==============================================================================================
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST*_LIDARR_URL / HOST*_LIDARR_API_KEY — local Lidarr (aliased by detect_hosts)
|
||||
# HOST*_SONARR_URL / HOST*_SONARR_API_KEY — local Sonarr
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
# CONFIGURATION
|
||||
# ==============================================================================================
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST*_SONARR_URL / HOST*_SONARR_API_KEY / HOST*_SONARR_RECOVERY
|
||||
# HOST*_RADARR_URL / HOST*_RADARR_API_KEY / HOST*_RADARR_RECOVERY
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
# CONFIGURATION
|
||||
# ==============================================================================================
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST1_LIDARR_URL / HOST1_LIDARR_API_KEY / HOST1_LIDARR_MUSIC_ROOT
|
||||
# HOST1_LIDARR_PATH_MAP — container path → host path translation
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
# CONFIGURATION
|
||||
# ==============================================================================================
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST1_LIDARR_URL / HOST1_LIDARR_API_KEY
|
||||
# Aliased by detect_hosts() — script uses LIDARR_URL / LIDARR_API_KEY
|
||||
|
||||
+29
-16
@@ -5,10 +5,10 @@
|
||||
#
|
||||
# PURPOSE
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Remove junk files from media shares using configurable file patterns. Two
|
||||
# profiles — anime and media — each with their own folder list and patterns.
|
||||
# Runs second in the daily maintenance window, after permissions and before
|
||||
# arr cleanup, so orphan detection only encounters actual media files.
|
||||
# Remove scene debris, tool artifacts, and unsafe files from media shares
|
||||
# before the orphan scan — so arr cleanup only encounters actual media files.
|
||||
# Runs second in the daily window, after permissions and before arr cleanup.
|
||||
# Two profiles — anime and media — each with their own folder list and patterns.
|
||||
#
|
||||
# ==============================================================================================
|
||||
# OPERATIONAL MODEL
|
||||
@@ -18,15 +18,29 @@
|
||||
# anime — cleans ANIME_CLEAN_FOLDERS using ANIME_FILE_PATTERNS
|
||||
# media — cleans MEDIA_CLEAN_FOLDERS using MEDIA_FILE_PATTERNS (adds *.iso *.lrc)
|
||||
#
|
||||
# Removes junk left by download clients, scene releases, and tools:
|
||||
# *.sfv *.md5 *.sha1 — checksum files — useless post-download
|
||||
# *.nfo *.url *.lnk — scene info files — not needed in media library
|
||||
# *.rar *.zip — archives — source files not needed after extraction
|
||||
# *.sample* *.proof* — scene samples — never needed
|
||||
# *sync-conflict* — Syncthing conflict files
|
||||
# *.scr *.exe — executables — should never be in a media folder
|
||||
# *.torrent — torrent files left by download clients
|
||||
# *.log *.json — tool output files
|
||||
# Scene debris — left by scene releases and download clients:
|
||||
# *.sfv *.md5 *.sha1 — checksums — useless post-download
|
||||
# *.nzb *.torrent — download files left by clients
|
||||
# *.url *.lnk *.info *.diz — scene metadata
|
||||
# *.sample* *.proof* — scene samples — never needed in library
|
||||
# *sync-conflict* — Syncthing conflict copies
|
||||
# *.rar *.zip *.7z *.ace — archives — source not needed after extraction
|
||||
# *.r00-*.r09 *.srr — multi-part rar segments and repair files
|
||||
# *.001 *.002 *.003 — split archive parts
|
||||
# *.gz *.tar *.bz2 — linux archives
|
||||
#
|
||||
# Tool artifacts — incomplete or stale files from download clients:
|
||||
# *.!ut *.!qB — uTorrent / qBittorrent incomplete markers
|
||||
# *.crdownload *.opdownload — Chrome / Opera incomplete downloads
|
||||
# *.part — partial download files
|
||||
#
|
||||
# Unsafe files — executables that should never appear in a media folder:
|
||||
# *.exe *.scr *.com — Windows executables
|
||||
# *.bat *.cmd *.vbs *.ps1 — Windows scripts
|
||||
# *.msi *.dll *.sys — Windows system files
|
||||
# *.sh — shell scripts in media folders = suspicious
|
||||
#
|
||||
# Media profile also removes: *.iso *.lrc
|
||||
#
|
||||
# ==============================================================================================
|
||||
# OPERATIONAL SAFEGUARDS
|
||||
@@ -37,13 +51,12 @@
|
||||
# Empty array guards — warns and exits cleanly if no folders or patterns configured
|
||||
# Folder existence — skips missing folders with warning, continues others
|
||||
# validate_unraid_cmd — notify script validated before use
|
||||
# Silent by default — only problems and removals produce output
|
||||
#
|
||||
# ==============================================================================================
|
||||
# CONFIGURATION
|
||||
# ==============================================================================================
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST*_ANIME_CLEAN_FOLDERS — folders cleaned by the anime profile on this host
|
||||
# HOST*_MEDIA_CLEAN_FOLDERS — folders cleaned by the media profile on this host
|
||||
@@ -128,7 +141,7 @@ esac
|
||||
# Empty array guards
|
||||
if [[ ${#CLEAN_FOLDERS[@]} -eq 0 ]]; then
|
||||
warn "No folders configured for profile '$PROFILE' on $MY_ID"
|
||||
warn "Check HOST*_${PROFILE^^}_CLEAN_FOLDERS in master_host*.conf"
|
||||
warn "Check HOST*_${PROFILE^^}_CLEAN_FOLDERS in host*.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
# CONFIGURATION
|
||||
# ==============================================================================================
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST*_MEDIA_PERMISSION_SHARES — shares this host applies permissions to
|
||||
# Aliased by detect_hosts() — script uses MEDIA_PERMISSION_SHARES
|
||||
@@ -83,7 +83,7 @@ detect_hosts
|
||||
# Empty array guard
|
||||
if [[ ${#MEDIA_PERMISSION_SHARES[@]} -eq 0 ]]; then
|
||||
warn "MEDIA_PERMISSION_SHARES is empty for $MY_ID — nothing to do"
|
||||
warn "Check HOST*_MEDIA_PERMISSION_SHARES in master_host*.conf"
|
||||
warn "Check HOST*_MEDIA_PERMISSION_SHARES in host*.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
# ==============================================================================================
|
||||
#
|
||||
# Last.fm API key — required for both stages
|
||||
# Configure HOST*_LASTFM_API_KEY in master_host*.conf
|
||||
# Configure HOST*_LASTFM_API_KEY in host*.conf
|
||||
#
|
||||
# ==============================================================================================
|
||||
# CONFIGURATION (master.conf)
|
||||
@@ -135,18 +135,18 @@ if ! command -v jq >/dev/null 2>&1; then
|
||||
fi
|
||||
|
||||
if [[ -z "${EMBY_URL:-}" || -z "${EMBY_API_KEY:-}" ]]; then
|
||||
error "EMBY_URL / EMBY_API_KEY not configured — check master_host*.conf"
|
||||
error "EMBY_URL / EMBY_API_KEY not configured — check host*.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${LIDARR_URL:-}" || -z "${LIDARR_API_KEY:-}" ]]; then
|
||||
error "LIDARR_URL / LIDARR_API_KEY not configured — check master_host*.conf"
|
||||
error "LIDARR_URL / LIDARR_API_KEY not configured — check host*.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${LASTFM_API_KEY:-}" ]]; then
|
||||
error "LASTFM_API_KEY not configured — required for discovery"
|
||||
error "Configure HOST*_LASTFM_API_KEY in master_host*.conf"
|
||||
error "Configure HOST*_LASTFM_API_KEY in host*.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
# ==============================================================================================
|
||||
#
|
||||
# TMDB API key — required for Stage 2 recommendations
|
||||
# Configure HOST*_TMDB_API_KEY in master_host*.conf
|
||||
# Configure HOST*_TMDB_API_KEY in host*.conf
|
||||
# Free key at: https://www.themoviedb.org/settings/api
|
||||
#
|
||||
# ==============================================================================================
|
||||
@@ -136,19 +136,19 @@ if ! command -v jq >/dev/null 2>&1; then
|
||||
fi
|
||||
|
||||
if [[ -z "${EMBY_URL:-}" || -z "${EMBY_API_KEY:-}" ]]; then
|
||||
error "EMBY_URL / EMBY_API_KEY not configured — check master_host*.conf"
|
||||
error "EMBY_URL / EMBY_API_KEY not configured — check host*.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${RADARR_URL:-}" || -z "${RADARR_API_KEY:-}" ]]; then
|
||||
error "RADARR_URL / RADARR_API_KEY not configured — check master_host*.conf"
|
||||
error "RADARR_URL / RADARR_API_KEY not configured — check host*.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${TMDB_API_KEY:-}" ]]; then
|
||||
error "TMDB_API_KEY not configured — required for discovery"
|
||||
error "Get a free key at https://www.themoviedb.org/settings/api"
|
||||
error "Configure HOST*_TMDB_API_KEY in master_host*.conf"
|
||||
error "Configure HOST*_TMDB_API_KEY in host*.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
# ==============================================================================================
|
||||
#
|
||||
# TMDB API key — required for Stage 2 recommendations and external_ids lookup
|
||||
# Configure HOST*_TMDB_API_KEY in master_host*.conf
|
||||
# Configure HOST*_TMDB_API_KEY in host*.conf
|
||||
# Free key at: https://www.themoviedb.org/settings/api
|
||||
#
|
||||
# ==============================================================================================
|
||||
@@ -150,19 +150,19 @@ if ! command -v jq >/dev/null 2>&1; then
|
||||
fi
|
||||
|
||||
if [[ -z "${EMBY_URL:-}" || -z "${EMBY_API_KEY:-}" ]]; then
|
||||
error "EMBY_URL / EMBY_API_KEY not configured — check master_host*.conf"
|
||||
error "EMBY_URL / EMBY_API_KEY not configured — check host*.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${SONARR_URL:-}" || -z "${SONARR_API_KEY:-}" ]]; then
|
||||
error "SONARR_URL / SONARR_API_KEY not configured — check master_host*.conf"
|
||||
error "SONARR_URL / SONARR_API_KEY not configured — check host*.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${TMDB_API_KEY:-}" ]]; then
|
||||
error "TMDB_API_KEY not configured — required for discovery"
|
||||
error "Get a free key at https://www.themoviedb.org/settings/api"
|
||||
error "Configure HOST*_TMDB_API_KEY in master_host*.conf"
|
||||
error "Configure HOST*_TMDB_API_KEY in host*.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
# CONFIGURATION
|
||||
# ==============================================================================================
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST*_RADARR_URL / HOST*_RADARR_API_KEY / HOST*_RADARR_MOVIES_ROOT
|
||||
# HOST*_RADARR_PATH_MAP — container path → host path translation
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
#
|
||||
# RADARR_DROPPED_ADD_EXCLUSION — add removed movies to import exclusion (default: true)
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST1_RADARR_URL / HOST1_RADARR_API_KEY
|
||||
# Aliased by detect_hosts() — script uses RADARR_URL / RADARR_API_KEY
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
# CONFIGURATION
|
||||
# ==============================================================================================
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST*_SONARR_URL / HOST*_SONARR_API_KEY / HOST*_SONARR_TV_ROOT
|
||||
# HOST*_SONARR_PATH_MAP — container path → host path translation
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
#
|
||||
# SONARR_DROPPED_ADD_EXCLUSION — add removed series to import exclusion (default: true)
|
||||
#
|
||||
# master_host*.conf
|
||||
# host*.conf
|
||||
#
|
||||
# HOST1_SONARR_URL / HOST1_SONARR_API_KEY
|
||||
# Aliased by detect_hosts() — script uses SONARR_URL / SONARR_API_KEY
|
||||
|
||||
Reference in New Issue
Block a user