docs: fix root Manual, README, User_Script_Plug-in — boot drive paths, 15min watchdog, scheduler setup replaces User Scripts section

This commit is contained in:
Gmer4Lfe
2026-06-01 19:50:31 -04:00
parent d22b18bf9f
commit 4effb55756
4 changed files with 110 additions and 110 deletions
+47 -52
View File
@@ -30,7 +30,7 @@ Install these via **Apps** (Community Applications) on both servers:
| Plugin | Why |
|--------|-----|
| **Tailscale** | Encrypted VPN between servers — all script traffic travels over it |
| **User Scripts** | Schedules the orchestrators (replaces per-script cron entries) |
| **User Scripts** | Required for "At Startup of Array" hook — array_started.sh entry only |
---
@@ -89,8 +89,8 @@ hostname
### ── Clone on HOST1 ───────────────────────────────────────────────────────────
```bash
git clone <your_repo_url> /mnt/user/appdata/Varaverk
cd /mnt/user/appdata/Varaverk
git clone <your_repo_url> /boot/config/plugins/varaverk
cd /boot/config/plugins/varaverk
```
---
@@ -98,8 +98,8 @@ cd /mnt/user/appdata/Varaverk
### ── Clone on HOST2 ───────────────────────────────────────────────────────────
```bash
git clone <your_repo_url> /mnt/user/appdata/Varaverk
cd /mnt/user/appdata/Varaverk
git clone <your_repo_url> /boot/config/plugins/varaverk
cd /boot/config/plugins/varaverk
```
---
@@ -112,7 +112,7 @@ credentials. Set up sparse checkout so each server only receives its own conf fi
**On HOST1** — exclude host2.conf:
```bash
cd /mnt/user/appdata/Varaverk
cd /boot/config/plugins/varaverk
git sparse-checkout init --no-cone
git sparse-checkout set '/*' '!/Configurations/host2.conf'
git checkout
@@ -120,7 +120,7 @@ git checkout
**On HOST2** — exclude host1.conf:
```bash
cd /mnt/user/appdata/Varaverk
cd /boot/config/plugins/varaverk
git sparse-checkout init --no-cone
git sparse-checkout set '/*' '!/Configurations/host1.conf'
git checkout
@@ -235,7 +235,7 @@ prompted for HOST1's root password once (for the initial key copy). After that,
all SSH is keyless.
```bash
cd /mnt/user/appdata/Varaverk
cd /boot/config/plugins/varaverk
bash Partnership/ssh_setup.sh
```
@@ -249,7 +249,7 @@ When prompted, enter HOST1's root password. The script:
### ── Run on HOST1 ──────────────────────────────────────────────────────────
```bash
cd /mnt/user/appdata/Varaverk
cd /boot/config/plugins/varaverk
bash Partnership/ssh_setup.sh
```
@@ -296,47 +296,42 @@ ssh -o StrictHostKeyChecking=accept-new root@unRAID-Gmer4Lfe "echo ok"
---
## ━━━ STEP 5: ARBITER — USER SCRIPTS SETUP ━━━
## ━━━ STEP 5: SCHEDULER SETUP ━━━
Arbiter (the User Scripts plugin) is the only thing Arbiter runs — never individual
scripts directly. Each entry is an orchestrator that calls everything in its window.
Open **Settings → User Scripts** in the unRAID WebGUI.
**Array start** uses the User Scripts plugin (one entry only). **Everything else** runs
through the Varaverk plugin's built-in scheduler — configure via the Scheduler tab or
`schedule.json`. Individual scripts are never scheduled directly.
---
### ── Required entries (both servers) ────────────────────────────────────────
### ── User Scripts — array start only ─────────────────────────────────────────
Create one User Script entry for each row. Set the schedule in the cron field and
paste the command. Name the entry to match the script name.
Open **Settings → User Scripts**. Create one entry:
| Script | Cron schedule | Command |
|--------|--------------|---------|
| `array_started` | At Array Start | `bash /mnt/user/appdata/Varaverk/Orchestrators/array_started.sh` |
| `watchdog_orchestrator` | `* * * * *` | `bash /mnt/user/appdata/Varaverk/Orchestrators/watchdog_orchestrator.sh` |
| `transcode_management` | `*/7 * * * *` | `bash /mnt/user/appdata/Varaverk/Orchestrators/transcode_management.sh` |
| `critical_sync_maintenance` | `*/30 * * * *` | `bash /mnt/user/appdata/Varaverk/Orchestrators/critical_sync_maintenance.sh` |
| `emby_fallback_sync` | `*/30 * * * *` | `bash /mnt/user/appdata/Varaverk/Rsync/rsync.sh /mnt/user/Media_Server/Emby --profile=emby-fallback` |
| `intermediate_sync_maintenance` | `0 */4 * * *` | `bash /mnt/user/appdata/Varaverk/Orchestrators/intermediate_sync_maintenance.sh` |
| `daily_sync_maintenance` | `0 1 * * *` | `bash /mnt/user/appdata/Varaverk/Orchestrators/daily_sync_maintenance.sh` |
| `weekly_sync_maintenance` | `30 2 * * 0` | `bash /mnt/user/appdata/Varaverk/Orchestrators/weekly_sync_maintenance.sh` |
| `weekly_health_digest` | `0 8 * * *` | `bash /mnt/user/appdata/Varaverk/Monitors/weekly_health_digest.sh` |
| Script | Schedule | Command |
|--------|----------|---------|
| `array_started` | At Array Start | `bash /boot/config/plugins/varaverk/Orchestrators/array_started.sh` |
> `array_started` uses the built-in "At Array Start" schedule option in User Scripts —
> it is not a cron expression.
> `emby_fallback_sync` is the only script with a direct Arbiter entry. It is separate
> from `critical_sync_maintenance` because it needs its own 30-minute slot and Emby
> must stay running during this sync (dirty sync — no container stop).
Set to **Background Task**. This launches everything in ARRAY_START_SCRIPTS.
---
### ── Schedule note ────────────────────────────────────────────────────────────
### ── Varaverk Scheduler — all cron entries ────────────────────────────────────
`transcode_management` and `critical_sync_maintenance` both run every 7 and 30 minutes
respectively. In User Scripts, concurrent runs of the same script are prevented by the
lock system (`acquire_lock`) — if the previous run is still active the new one exits
immediately. No need to stagger them manually.
Configure via the Varaverk plugin Scheduler tab (or edit `schedule.json` directly):
| Script | Cron | Purpose |
|--------|------|---------|
| `transcode_management` | `*/7 * * * *` | Cleanup then manager — order critical |
| `watchdog_orchestrator` | `*/15 * * * *` | resource → docker → system → stability |
| `critical_sync_maintenance` | `*/30 * * * *` | auth + Emby dirty sync + partnership |
| `intermediate_sync_maintenance` | `0 */4 * * *` | arr sync + failed recovery |
| `daily_sync_maintenance` | `0 1 * * *` | full daily maintenance window |
| `weekly_sync_maintenance` | `30 2 * * 0` | clean sync + image updates |
| `monthly_maintenance` | `0 0 15 * *` | ZFS scrub, SMART tests (uptime-gated) |
Concurrent runs are prevented by `acquire_lock` — if the previous run is still active
the new one exits immediately. No need to stagger entries manually.
For the complete schedule and what each orchestrator runs, see
[README-Orchestrators.md](Orchestrators/README-Orchestrators.md).
@@ -354,7 +349,7 @@ will take a while depending on library size.
```bash
# On HOST1 — preview what would sync, check paths and profiles
bash /mnt/user/appdata/Varaverk/Orchestrators/daily_sync_maintenance.sh --dry-run --log
bash /boot/config/plugins/varaverk/Orchestrators/daily_sync_maintenance.sh --dry-run --log
```
Review the output. Check that:
@@ -368,11 +363,11 @@ Review the output. Check that:
```bash
# On HOST1 — run the full daily sync (this includes rsync for all DAILY_SYNC_SHARES)
bash /mnt/user/appdata/Varaverk/Orchestrators/daily_sync_maintenance.sh --log
bash /boot/config/plugins/varaverk/Orchestrators/daily_sync_maintenance.sh --log
```
This will take longer than future nightly runs — it is transferring everything for
the first time. Monitor progress via the User Scripts output or:
the first time. Monitor progress via the Varaverk log viewer or:
```bash
# Watch transfer in real time
@@ -381,7 +376,7 @@ watch -n5 'ls -lh /mnt/user/Movies/ | tail -5'
After it finishes, also run the critical sync to populate auth and Emby state:
```bash
bash /mnt/user/appdata/Varaverk/Orchestrators/critical_sync_maintenance.sh --log
bash /boot/config/plugins/varaverk/Orchestrators/critical_sync_maintenance.sh --log
```
---
@@ -410,7 +405,7 @@ Commit and pull on both servers so both pick up the change.
To start it now without a reboot:
```bash
bash /mnt/user/appdata/Varaverk/Fallback/fallback.sh &
bash /boot/config/plugins/varaverk/Fallback/fallback.sh &
```
---
@@ -437,10 +432,10 @@ simulates an outage using `iptables` — no real downtime, no real data changes.
```bash
# On HOST2 — dry run first (sees the sequence, no container starts)
bash /mnt/user/appdata/Varaverk/Fallback/fallback_test.sh --dry-run --log
bash /boot/config/plugins/varaverk/Fallback/fallback_test.sh --dry-run --log
# When ready — real test (uses iptables to simulate HOST1 unreachable)
bash /mnt/user/appdata/Varaverk/Fallback/fallback_test.sh --log
bash /boot/config/plugins/varaverk/Fallback/fallback_test.sh --log
```
The test runs in phases — blocks HOST1's Tailscale IP, waits for `fallback.sh` to
@@ -478,9 +473,9 @@ HOST2 runs first — it generates its SSH key and waits. The owner completes set
```bash
# On HOST2
bash /mnt/user/appdata/Varaverk/Partnership/partnership_onboard.sh --dry-run --log
bash /boot/config/plugins/varaverk/Partnership/partnership_onboard.sh --dry-run --log
# Review output, then:
bash /mnt/user/appdata/Varaverk/Partnership/partnership_onboard.sh --log
bash /boot/config/plugins/varaverk/Partnership/partnership_onboard.sh --log
```
HOST2's work is done after Step 1 (SSH key setup). The rest happens on HOST1.
@@ -491,9 +486,9 @@ HOST2's work is done after Step 1 (SSH key setup). The rest happens on HOST1.
```bash
# On HOST1
bash /mnt/user/appdata/Varaverk/Partnership/partnership_onboard.sh --dry-run --log
bash /boot/config/plugins/varaverk/Partnership/partnership_onboard.sh --dry-run --log
# Review output — this will deploy auth + arr stacks to HOST2 remotely
bash /mnt/user/appdata/Varaverk/Partnership/partnership_onboard.sh --log
bash /boot/config/plugins/varaverk/Partnership/partnership_onboard.sh --log
```
The owner path deploys containers to HOST2 via SSH, configures WebUI targets, runs
@@ -542,8 +537,8 @@ cat /boot/config/fallback_state.db
Bandwidth monitor records every sync:
```bash
# Latest transfer log
ls -lt /mnt/user/appdata/Varaverk/data/bandwidth_monitor/
cat /mnt/user/appdata/Varaverk/data/bandwidth_monitor/<latest_log>
ls -lt /boot/config/plugins/varaverk/data/bandwidth_monitor/
cat /boot/config/plugins/varaverk/data/bandwidth_monitor/<latest_log>
```
---