update stale media ownership language across all docs

arr_sync.sh bidirectional union replaced the old split-ownership model.
Old: HOST1 owns Movies/TV/Music, HOST2 owns Anime — each arr manages
different shares to avoid conflicts.
New: arr_sync.sh keeps all arr databases in union. Either server can
download to any share at any time. The union is the source of truth.

Auth stack references left intact — HOST1 still owns auth config
(one-way sync to HOST2). Only media library ownership language updated.

Files changed:
  README.md                          — server block + share annotations
  Fallback/README-Fallback.md        — role line + Split Source of Truth section
  Orchestrators/README-Orchestrators — daily sync share comments
  Rsync/Manual-Rsync.md              — DEFAULT_RSYNC_OPTS comment block
  Media/README-Media.md              — HOST AWARENESS section
This commit is contained in:
Gmer4Lfe
2026-05-22 21:35:45 -04:00
parent 29eb722057
commit 8d8a4fd637
5 changed files with 30 additions and 32 deletions
+11 -10
View File
@@ -59,7 +59,7 @@ HOST1 — unRAID-Gmer4Lfe
Hardware: Threadripper 1950X, 128GB RAM, ZFS cache pools
Location: Primary site
DDNS: Gmer4Lfe.com
Role: Primary — full service stack + source of truth for Movies/Shows/Music
Role: Primary — full service stack, arr_sync union for all media shares
HOST2 — unRAID-Jayred365
Hardware: Intel i5 10th gen, 64GB RAM
@@ -81,21 +81,22 @@ Container names "Emby" on HOST2 must be the container HOST2 starts for HOST1
Network names Docker custom networks must match for NPM routing to work
```
### Split Source of Truth — No Conflicts
### Union Library — arr_sync.sh Is the Source of Truth
Both servers run arr instances simultaneously with zero conflict — they manage completely
different shares:
Both servers run arr instances simultaneously. arr_sync.sh keeps all databases in
bidirectional union before every rsync cycle — either server can download anything
and it propagates to the other:
```
HOST1 owns: Movies (Radarr), Tv_Shows (Sonarr), Music (Lidarr)
HOST2 owns: Anime_Movies (his Radarr), Anime_Shows (his Sonarr)
HOST1 runs: Radarr (Movies), Sonarr (Tv_Shows), Lidarr (Music)
HOST2 runs: Radarr (Anime_Movies), Sonarr (Anime_Shows)
Each server mirrors the other's shares continuously via rsync.
All arr databases merged via arr_sync. rsync spreads files additively.
Either server downloads to any share — the other catches up on the next cycle.
```
The rule: never run two arr instances against the same share simultaneously. Different arrs
managing different shares is fine. When HOST2 runs HOST1's arrs during a Tier 4 fallback,
HOST1's Tdarr is not running (HOST1 is down) — no conflict.
When HOST2 runs HOST1's arr containers during a Tier 4 fallback, those arrs already
know the full library — arr_sync kept them in union while both servers were online.
### Auth Stack — Warm on Both Servers
+8 -11
View File
@@ -162,19 +162,16 @@ cleaned by arr_cleanup on all nodes after the next sync cycle.
## ━━━ HOST AWARENESS ━━━
Scripts run on both servers but only operate on the shares and arrs that belong to that
server. `detect_hosts()` aliases all `HOST*_` prefixed vars to their unprefixed names.
Scripts run on both servers via `detect_hosts()`, which aliases all `HOST*_` prefixed vars
to their unprefixed names at runtime. No manual `HOST1`/`HOST2` comparisons exist in any script.
```
HOST1 — source of truth for: HOST2 — source of truth for:
Movies (Radarr) Anime_Movies (his Radarr)
Tv_Shows (Sonarr) Anime_Shows (his Sonarr)
Music (Lidarr)
```
arr_sync.sh keeps all arr databases in bidirectional union — either server can download
to any share. Arr cleanup uses the union model: a file is only an orphan if neither arr
on either server has it indexed. Arr scripts check the aliased URL — if empty (arr not
configured on this host), they exit cleanly with no action.
Permissions and cleaner scripts run on both servers against their own shares. Arr cleanup
scripts check the aliased URL — if empty (arr not configured on this host), they exit
cleanly with no action. No manual `HOST1`/`HOST2` comparisons exist in any script.
Permissions and cleaner scripts run locally against each server's own shares, defined
in `HOST*_MEDIA_PERMISSION_SHARES` and `HOST*_MEDIA_CLEAN_FOLDERS` in host*.conf.
---
+5 -5
View File
@@ -582,9 +582,9 @@ DAILY_MAINTENANCE_SCRIPTS=(
# host1.conf
HOST1_DAILY_SYNC_SHARES=(
"/mnt/user/Movies" # HOST1 source of truth — push to HOST2
"/mnt/user/Tv_Shows" # HOST1 source of truth
"/mnt/user/Music" # HOST1 source of truth
"/mnt/user/Movies" # both servers — arr_sync union, rsync spreads files
"/mnt/user/Tv_Shows" # both servers
"/mnt/user/Music" # both servers
"/mnt/user/Kids_Movies"
"/mnt/user/Kids_Tv_Shows"
"/mnt/user/Sports"
@@ -597,8 +597,8 @@ HOST1_PERSONAL_SHARES=(
# host2.conf
HOST2_DAILY_SYNC_SHARES=(
"/mnt/user/Anime_Shows" # HOST2 source of truth — push to HOST1
"/mnt/user/Anime_Movies" # HOST2 source of truth
"/mnt/user/Anime_Shows" # both servers — arr_sync union, rsync spreads files
"/mnt/user/Anime_Movies" # both servers
)
```
+3 -3
View File
@@ -24,15 +24,15 @@ HOST1 — unRAID-Gmer4Lfe
Hardware: Threadripper 1950X, 128GB RAM, ZFS cache pools
Location: Primary site
Domain: Gmer4Lfe.com
Owns: Movies, Tv_Shows, Music — source of truth
Auth stack — source of truth
Arrs: Movies, Tv_Shows, Music — union with HOST2 via arr_sync
Auth stack — source of truth (HOST1 owned, syncs to HOST2)
Emby — primary media server
HOST2 — unRAID-Jayred365
Hardware: Intel i5 10th gen, 64GB RAM
Location: Remote — different building, different power utility
Domain: Gmer4Lfe.us
Owns: Anime_Shows, Anime_Movies — source of truth
Arrs: Anime_Shows, Anime_Movies — union with HOST1 via arr_sync
His own Emby — for his household
```
+3 -3
View File
@@ -637,9 +637,9 @@ bash rsync.sh /mnt/user/appdata-Failover/Arrs_Stack --status
# Rsync engine
RSYNC_ENABLED=true
DEFAULT_RSYNC_OPTS="-az --no-perms --no-owner --no-group --inplace"
# No --delete in DEFAULT_RSYNC_OPTS — bidirectional media shares spread files only.
# Each server's arrs are source of truth for their content; arr cleanup scripts
# handle deletions. Profiles set PROFILE_RSYNC_OPTS with --delete explicitly.
# No --delete in DEFAULT_RSYNC_OPTS — media share rsync is additive only.
# arr_sync.sh keeps all arr databases in union — either server can download anything.
# arr cleanup handles deletions (orphans only). Profiles use --delete explicitly.
BW_LIMIT=0 # KB/s, 0 = unlimited
RETRY_COUNT=3
SLEEP=60 # seconds between retries