Naming the conf file first got answers that sent people to edit host1.conf and mentioned the tab afterwards.
87 KiB
Where every setting lives in the web UI
Generated by Tools/ui_map_build.php — do not edit by hand.
Every setting below can be changed in the browser. Nothing here needs a conf file opened over SSH, and the routes are what to tell someone who asks where a setting is.
Two surfaces show settings, and which one holds a given section depends on what the section is about:
- The Scheduler tab shows the settings belonging to one script. Pick the script, open Config, and its sections appear there.
- The AI tab shows the AI sections together under Settings → Configuration.
Both write through the same guarded path: the change is validated, the conf is backed up, the result is syntax-checked and read back, and a bad write is rolled back.
A setting is edited by finding its row and changing the control described below. The Save button sends only what was actually changed.
When someone asks where a setting is, answer with the route. Every setting here has a control in the browser, so the conf file it lands in is background rather than an instruction — telling someone to edit the file by hand is the wrong answer when a switch exists, and it is also the riskier one. The exception is the list at the very bottom: those settings genuinely have no control, and saying so is the right answer.
Arr Recovery Toggles
Route: Scheduler tab → Arrs Failed Stalled Recovery → Config → Arr Recovery Toggles
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_LIDARR_RECOVERY |
a switch | in this section | HOST1 only — exits cleanly on HOST2 |
HOST1_SONARR_RECOVERY |
a switch | in this section | — |
HOST1_RADARR_RECOVERY |
a switch | in this section | — |
Backup Verify
Route: Scheduler tab → Backup Verify → Config → Backup Verify
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_BACKUP_VERIFY_SHARES |
a list, one entry per line | in this section | Leave empty to use HOST1_DAILY_SYNC_SHARES automatically. |
Certificate Monitor
Reachable from:
- Scheduler tab → Cert Monitor → Config → Certificate Monitor
- Scheduler tab → Weekly Health Digest → Config → Certificate Monitor
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_CERT_MONITOR_DOMAINS |
a list, one entry per line | in this section | — |
Corruption Scan
Route: Scheduler tab → Arr Corruption Scan → Config → Corruption Scan
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_FFPROBE_CONTAINER |
a text box | in this section | — |
HOST1_FFPROBE_BIN |
a text box | in this section | — |
HOST1_FFPROBE_PATH_MAP |
a list, one entry per line | in this section | — |
Critical Sync Shares
Route: Scheduler tab → Critical Sync Maintenance → Config → Critical Sync Shares
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_CRITICAL_SYNC_SHARES |
a list, one entry per line | in this section | Appdata shares synced every 30 minutes. Format: "/path/to/share" or "/path/to/share|profile-name" |
DDNS
Route: Scheduler tab → Fallback → Config → DDNS
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_DDNS_CONTAINERS |
a list, one entry per line | in this section | DDNS containers this host manages. |
Daily Sync Shares
Route: Scheduler tab → Daily Sync Maintenance → Config → Daily Sync Shares
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_DAILY_SYNC_SHARES |
a list, one entry per line | in this section | Media shares this host pushes to all other nodes every night. Uses DEFAULT_RSYNC_OPTS from master.conf — no profile needed. |
Docker Daily Restart
Route: Scheduler tab → Docker Daily Restart → Config → Docker Daily Restart
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_DAILY_RESTART_CONTAINERS |
a list, one entry per line | in this section | — |
Docker Network Connect
Route: Scheduler tab → Docker Network Connect → Config → Docker Network Connect
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_NETWORK_CONNECT_CONTAINERS |
a list, one entry per line | in this section | — |
HOST1_NETWORK_CONNECT_NETWORKS |
a list, one entry per line | in this section | — |
Docker Watchdog
Route: Scheduler tab → Docker Watchdog → Config → Docker Watchdog
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_WATCHDOG_CONTAINERS |
a list, one entry per line | in this section | Memory hard limits in MB — immediate restart if exceeded. 20GB=20480 16GB=16384 8GB=8192 4GB=4096 2GB=2048 1GB=1024 |
HOST1_WATCHDOG_CONTAINER_URLS |
a list, one entry per line | in this section | HTTP health check URLs — checked every cycle. |
HOST1_WATCHDOG_CONTAINER_API_CHECKS |
a list, one entry per line | in this section | API-level health checks — catches HTTP-200-but-internally-frozen containers (DB lock, deadlocked thread, etc.) that a basic HTTP check above would miss. Pick an endpoint that forces a real DB round-trip — a lightweight status endpoint may stay 200 even while the rest of the app is locked up. Format: ["ContainerName"]="url|APIKey" |
HOST1_WATCHDOG_REQUIRED_CONTAINERS |
a list, one entry per line | in this section | Required containers — must always be running. |
HOST1_WATCHDOG_SCAN_IGNORE |
a list, one entry per line | in this section | Containers to skip in Tier 2 global scan. |
HOST1_WATCHDOG_DEPENDENCIES |
a list, one entry per line | in this section | Dependency ordering — skip restarting a container if its dependency is also down. |
HOST1_WATCHDOG_APPDATA_SIZES |
a list, one entry per line | in this section | Per-container appdata growth suppress ceilings in MB. |
Docker Weekly Restart
Route: Scheduler tab → Docker Weekly Restart → Config → Docker Weekly Restart
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_WEEKLY_RESTART_CONTAINERS |
a list, one entry per line | in this section | — |
Downloaders
Reachable from:
- Scheduler tab → Downloaders Reset → Config → Downloaders
- Scheduler tab → Resource Watchdog → Config → Downloaders
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_SLSKD_URL |
a text box | in this section | — |
HOST1_SLSKD_API_KEY |
a masked box with a Show button | in this section | — |
HOST1_SLSKD_FAILED_IMPORTS_DIR |
a text box | in this section | — |
HOST1_SABNZBD_URL |
a text box | in this section | — |
HOST1_SABNZBD_API_KEY |
a masked box with a Show button | in this section | — |
HOST1_QBIT_URL |
a text box | in this section | — |
HOST1_QBIT_USERNAME |
a text box | in this section | — |
HOST1_QBIT_PASSWORD |
a masked box with a Show button | in this section | — |
Emby
Reachable from:
- Scheduler tab → Emby Session Report → Config → Emby
- Scheduler tab → Server Reboot → Config → Emby
- Scheduler tab → Playback Aware Lidarr Discovery → Config → Emby
- Scheduler tab → Playback Aware Radarr Discovery → Config → Emby
- Scheduler tab → Playback Aware Sonarr Discovery → Config → Emby
- Scheduler tab → Emby To Lidarr Sync → Config → Emby
- Scheduler tab → Emby To Radarr Sync → Config → Emby
- Scheduler tab → Emby To Sonarr Sync → Config → Emby
- Scheduler tab → Emby Database Repair → Config → Emby
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_EMBY_CONTAINER |
a text box | in this section | — |
HOST1_EMBY_URL |
a text box | in this section | — |
HOST1_EMBY_API_KEY |
a masked box with a Show button | in this section | — |
Intermediate Sync Shares
Route: Scheduler tab → Intermediate Sync Maintenance → Config → Intermediate Sync Shares
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_INTERMEDIATE_SYNC_SHARES |
a list, one entry per line | in this section | Shares synced every 4 hours. Leave empty to skip mid-day rsync. |
Internet Loss
Route: Scheduler tab → Fallback → Config → Internet Loss
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
FALLBACK_HOST1_STOP_ON_NO_NET |
a list, one entry per line | in this section | Containers stopped immediately when internet is lost. |
Lidarr
Reachable from:
- Scheduler tab → Lidarr Cleanup → Config → Lidarr
- Scheduler tab → Lidarr Missing Art → Config → Lidarr
- Scheduler tab → Lidarr Release Fixer → Config → Lidarr
- Scheduler tab → Lidarr Duplicate Artist Cleanup → Config → Lidarr
- Scheduler tab → Playback Aware Lidarr Discovery → Config → Lidarr
- Scheduler tab → Emby To Lidarr Sync → Config → Lidarr
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_LIDARR_URL |
a text box | in this section | — |
HOST1_LIDARR_API_KEY |
a masked box with a Show button | in this section | — |
HOST1_LIDARR_MUSIC_ROOT |
a text box | in this section | — |
HOST1_FANART_API_KEY |
a masked box with a Show button | in this section | — |
HOST1_LASTFM_API_KEY |
a masked box with a Show button | in this section | — |
HOST1_LIDARR_PATH_MAP |
a list, one entry per line | in this section | — |
Media Cleaner
Route: Scheduler tab → Media Cleaner → Config → Media Cleaner
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_ANIME_CLEAN_FOLDERS |
a list, one entry per line | in this section | — |
HOST1_MEDIA_CLEAN_FOLDERS |
a list, one entry per line | in this section | — |
Media Permissions
Reachable from:
- Scheduler tab → Media Shares Permissions → Config → Media Permissions
- Scheduler tab → Bulk Permissions Repair → Config → Media Permissions
- Scheduler tab → Trailer Folder Migration → Config → Media Permissions
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_MEDIA_PERMISSION_SHARES |
a list, one entry per line | in this section | — |
Network Watchdog
Route: Scheduler tab → Network Watchdog → Config → Network Watchdog
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_NETWORK_WATCHDOG_DDNS_DOMAIN |
a text box | in this section | — |
HOST1_NETWORK_WATCHDOG_DDNS_CONTAINER |
a text box | in this section | — |
HOST1_NETWORK_WATCHDOG_NPM_URL |
a text box | in this section | — |
Notifications
No single page shows this section. Individual settings below carry their own route.
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_DISCORD_WEBHOOK |
a text box | Settings tab | Discord webhook — leave blank to disable. |
Ollama
Reachable from:
- Scheduler tab → Ai Index → Config → Ollama
- Scheduler tab → Ai Query → Config → Ollama
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_OLLAMA_URL |
a text box | in this section | e.g. http://localhost:11434 — empty if no local Ollama |
HOST1_OLLAMA_GPU_UUID |
a text box | in this section | pins Ollama to one card on multi-GPU hosts |
HOST1_OLLAMA_MODEL |
a text box | in this section | generation — must fully offload; see README-AI.md |
PARTNERSHIP
Route: Partnership tab → Array Settings → PARTNERSHIP
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_PARTNERSHIP_AUTH_WEBUIS |
a list, one entry per line | in this section | Auth containers reconfigured on onboard/offboard. Format: "ContainerName|WebUIPort" |
HOST1_PARTNERSHIP_AUTH_STACK |
a list, one entry per line | in this section | XML templates pushed to mirror during onboard — auth stack. Dependencies (databases) must come before apps that depend on them. |
HOST1_PARTNERSHIP_ARR_STACK |
a list, one entry per line | in this section | XML templates pushed to mirror during onboard — arr stack. |
HOST1_PARTNERSHIP_SERVICES_STACK |
a list, one entry per line | in this section | XML templates pushed to mirror during onboard — other services (not auth, not arr). |
HOST1_PARTNERSHIP_MIRROR_BACKUPS |
a list, one entry per line | in this section | Paths the partner should collect during the grace window after offboard. |
HOST1_PARTNERSHIP_OWN_CONTAINERS |
a list, one entry per line | in this section | Containers parked on this server when partnership is active. |
HOST1_PARTNERSHIP_REPLACE_CONTAINERS |
a list, one entry per line | in this section | Containers stopped on THIS server before deploying the mirror's stack on onboard. |
HOST1_PARTNERSHIP_ARR_REPLACE_CONTAINERS |
a list, one entry per line | in this section | Arr containers stopped on this server when mirror's arr stack is deployed. |
HOST1_PARTNERSHIP_PROVISION_EMBY_ADMIN |
a switch | in this section | owner controls whether Emby is shared |
HOST1_PARTNERSHIP_EMBY_PORT |
a number box | in this section | — |
HOST1_PARTNERSHIP_EMBY_ADMIN_USER |
a text box | in this section | this server's desired Emby username |
HOST1_PARTNERSHIP_EMBY_ADMIN_PASS |
a masked box with a Show button | in this section | this server's desired Emby password |
Radarr
Reachable from:
- Scheduler tab → Radarr Cleanup → Config → Radarr
- Scheduler tab → Radarr Classification Scan → Config → Radarr
- Scheduler tab → Playback Aware Radarr Discovery → Config → Radarr
- Scheduler tab → Radarr Tmdb Removed → Config → Radarr
- Scheduler tab → Emby To Radarr Sync → Config → Radarr
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_RADARR_URL |
a text box | in this section | — |
HOST1_RADARR_API_KEY |
a masked box with a Show button | in this section | — |
HOST1_TMDB_API_KEY |
a masked box with a Show button | in this section | — |
HOST1_RADARR_MOVIES_ROOT |
a text box | in this section | — |
HOST1_RADARR_GENERAL_ROOT |
a text box | in this section | rootFolderPath literal for the general root — target for reverse-kids-leak moves |
HOST1_RADARR_KIDS_ROOT |
a text box | in this section | rootFolderPath literal, as reported by Radarr API |
HOST1_RADARR_ANIME_ROOT |
a text box | in this section | — |
HOST1_RADARR_DOWNLOAD_DIR |
a text box | in this section | — |
HOST1_RADARR_DOWNLOAD_CONTAINER_DIR |
a text box | in this section | — |
HOST1_RADARR_PATH_MAP |
a list, one entry per line | in this section | — |
SMART Health
Route: Scheduler tab → Smart Health → Config → SMART Health
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_SMART_IGNORE_DRIVES |
a list, one entry per line | in this section | — |
SYSTEM WATCHDOG
Route: Scheduler tab → Watchdog Orchestrator → Config → SYSTEM WATCHDOG
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_SYS_WATCHDOG_NIC |
a text box | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_DOCKER_DAEMON |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_ROOTFS |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_KERNEL_OOPS |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_FD |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_BOOT |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_OOM |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_RAM |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_LOG |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_ARC |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_CPU_TEMP |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_LOAD |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_ZOMBIES |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_CONTAINERS |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_TMP |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_MDSTAT |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_NETWORK |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_SSHD |
a switch | in this section | — |
HOST1_SYS_WATCHDOG_CHECK_RUNAWAY |
a switch | in this section | — |
Sonarr
Reachable from:
- Scheduler tab → Sonarr Cleanup → Config → Sonarr
- Scheduler tab → Sonarr Classification Scan → Config → Sonarr
- Scheduler tab → Playback Aware Sonarr Discovery → Config → Sonarr
- Scheduler tab → Sonarr Tvdb Removed → Config → Sonarr
- Scheduler tab → Emby To Sonarr Sync → Config → Sonarr
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_SONARR_URL |
a text box | in this section | — |
HOST1_SONARR_API_KEY |
a masked box with a Show button | in this section | — |
HOST1_SONARR_TV_ROOT |
a text box | in this section | — |
HOST1_SONARR_GENERAL_ROOT |
a text box | in this section | rootFolderPath literal for the general root — target for reverse-kids-leak moves |
HOST1_SONARR_KIDS_ROOT |
a text box | in this section | rootFolderPath literal, as reported by Sonarr API |
HOST1_SONARR_ANIME_ROOT |
a text box | in this section | — |
HOST1_SONARR_DOWNLOAD_DIR |
a text box | in this section | — |
HOST1_SONARR_DOWNLOAD_CONTAINER_DIR |
a text box | in this section | — |
HOST1_SONARR_PATH_MAP |
a list, one entry per line | in this section | — |
Storage mode
No single page shows this section. Individual settings below carry their own route.
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_STORAGE_MODE_INTERNAL |
a switch | Settings tab | Controls where Varaverk stores scripts, conf, and state files. true = internal NVMe/SSD — /boot/config/plugins/varaverk (write-safe, git-direct) false = USB flash boot — /mnt/user/appdata/Varaverk (preserves flash lifetime) Auto-detected from boot device transport on first setup. To change: Settings → Storage → Migrate. |
Weekly Sync Shares
Route: Scheduler tab → Weekly Sync Maintenance → Config → Weekly Sync Shares
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_WEEKLY_SYNC_SHARES |
a list, one entry per line | in this section | Appdata shares synced during the weekly maintenance window. Profiles (emby, critical-data) drive container stops — define in master.conf. |
ZFS Report
Route: Scheduler tab → Zfs Memory Snapshot → Config → ZFS Report
Saved into host1.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
HOST1_ZFS_REPORT_IGNORE_POOLS |
a list, one entry per line | in this section | — |
AI Conf Write Access
Route: AI tab → Settings → Configuration → AI Conf Write Access
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_CONF_WRITE_ENABLED |
a switch | in this section | Separate switch from AI_ENABLED, off by default, and an explicit key whitelist. Never paths, never credentials, never a container name. An empty whitelist means no writes regardless of the toggle. |
AI_CONF_WRITE_KEYS |
a list, one entry per line | in this section | — |
AI Feature Toggles
Reachable from:
- Scheduler tab → Ai Token Sync → Config → AI Feature Toggles
- AI tab → Settings → Configuration → AI Feature Toggles
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_ASSIST_REPORTS |
a switch | in this section | tier 1 — digest / coffee report narration |
AI_ASSIST_WATCHDOG |
a switch | in this section | tier 2 — context on a flagged condition |
AI_ASSIST_DISCOVERY |
a switch | in this section | tier 2 — discovery / classification judgement calls |
AI_ASSIST_CLEANUP |
a switch | in this section | tier 2 — orphan and stuck-import triage |
AI_ASSIST_ONBOARD |
a switch | in this section | tier 3 — onboarding / settings assistance |
AI Learned Memory
Route: AI tab → Settings → Configuration → AI Learned Memory
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_MEMORY_LEARN_ENABLED |
a switch | in this section | Costs nothing while off: the instruction that asks for a candidate is only added to the prompt when this is true, so a disabled feature is genuinely absent rather than merely ignored. |
AI_MEMORY_LEARN_AUTO_ACCEPT |
a switch | in this section | Writes accepted candidates without asking. Cannot outrank its parent — with proposing off this does nothing. Leave it false until the proposals have proven good for a while. |
AI Master Switch
Reachable from:
- Scheduler tab → Ai Index → Config → AI Master Switch
- Scheduler tab → Ai Query → Config → AI Master Switch
- Scheduler tab → Ai Repair Sweep → Config → AI Master Switch
- AI tab → Settings → Configuration → AI Master Switch
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_ENABLED |
a switch | Settings tab | Fail-closed: anything other than the literal "true" means off. |
AI_CONNECT_TIMEOUT |
a number box, in seconds | in this section | seconds — probe when resolving which node has Ollama |
AI_REQUEST_TIMEOUT |
a number box, in seconds | in this section | seconds — must clear a cold model load |
AI_RESOLVE_CACHE_TTL |
a number box, in seconds | in this section | seconds — don't re-probe the mesh every invocation |
AI_MAX_RETRIES |
a number box | in this section | AI is enhancement; do not retry hard |
AI Memory
Route: AI tab → Settings → Configuration → AI Memory
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_MEMORY_ASSISTED_FILE |
a text box | in this section | AI_MEMORY_FILE is the pre-split name and is still honoured: while the assisted file does not exist, the legacy path is read instead, so an upgrade loses nothing. |
AI_MEMORY_LEARNED_FILE |
a text box | in this section | — |
AI_MEMORY_FILE |
a text box | in this section | — |
AI_MEMORY_ASSISTED_PROFILES |
a text box | in this section | Which profiles each slot is given. "*" is all of them. Narrowing is how a General Chat question about bash syntax stops carrying this machine's PCIe topology and disk serials. |
AI_MEMORY_LEARNED_PROFILES |
a text box | in this section | — |
AI_MEMORY_MAX_CHARS |
a number box | in this section | ~1000 tokens — truncated with a notice if exceeded |
AI_MEMORY_LEARNED_MAX_CHARS |
a number box | in this section | A ceiling on the learned slot alone, well under the total. A store that grows on its own would otherwise end up occupying the whole budget, and the operator's own memory is what would get truncated away — the exact inversion of which one matters. |
AI Repair
Reachable from:
- Scheduler tab → Ai Repair Sweep → Config → AI Repair
- AI tab → Settings → Configuration → AI Repair
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_REPAIR_ENABLED |
a switch | in this section | AI_REPAIR_AUTOFIX_ENABLED is what allows a value to be written unattended, and only ever a value a probe has answered on. Never a toggle: whether something should be switched on is a decision about intent, and a probe cannot prove intent the way it can prove a port answers. |
AI_REPAIR_AUTOFIX_ENABLED |
a switch | in this section | — |
AI Repair Findings
Reachable from:
- Scheduler tab → Ai Repair Sweep → Config → AI Repair Findings
- AI tab → Settings → Configuration → AI Repair Findings
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_FINDING_RETAIN_DAYS |
a number box | in this section | Misconfigurations found in this installation, as opposed to defects in Varaverk — those go to ai_bugs. A finding is open until the configuration is right, and closes itself when the probe that proved the fault starts passing. Closed ones are kept for a while, because "this happened before and here is what fixed it" is worth more than the disk. Open findings are never pruned: an unresolved probl… |
AI_PROBE_TIMEOUT |
a number box, in seconds | in this section | Seconds a single probe may take. Nothing is written to conf that has not answered a probe, so this is the budget for proving a candidate — kept short because a sweep may try several, and an address worth switching to answers quickly or is not worth switching to. |
AI_REPAIR_NOTIFY_ENABLED |
a switch | in this section | On by default, unlike the two switches above. Those gate reading and writing, which are things to be trusted first. This gates telling someone, which is the reason for having looked. |
AI Repair: what it reads
Route: AI tab → Settings → Configuration → AI Repair: what it reads
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_REPAIR_SYSLOG_ENABLED |
a switch | in this section | Both are bounded by time (since the last pass) and by a line cap, so a flood costs one pass. Tools/ai_log_check.sh replays this host's real logs against the patterns — run it after changing any of them. |
AI_REPAIR_SYSLOG_MAX_LINES |
a number box | in this section | — |
AI_REPAIR_CONTAINER_LOGS_ENABLED |
a switch | in this section | — |
AI_REPAIR_CONTAINER_LOG_LINES |
a number box | in this section | — |
AI Retrieval Index
Reachable from:
- Scheduler tab → Ai Index → Config → AI Retrieval Index
- Scheduler tab → Ai Query → Config → AI Retrieval Index
- AI tab → Settings → Configuration → AI Retrieval Index
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_INDEX_DB |
a text box | in this section | Only git-tracked files are ever indexed. Configurations/, State_Files/ and data/ are gitignored, which is what makes it structurally impossible for a credential to reach the index: the files holding them were never in the repo. Do not "improve" this to a filesystem walk — an embedded secret cannot be rotated out of a vector. |
AI_INDEX_BATCH |
a number box | in this section | chunks per embed request |
AI_INDEX_ON_PULL |
a switch | in this section | re-index after a git pull that changed tracked files |
AI_SEARCH_K |
a number box | in this section | chunks retrieved per query |
AI_SEARCH_PER_FILE |
a number box | in this section | cap per file so one document cannot fill the context |
AI Stored Conversations
Route: AI tab → Settings → Configuration → AI Stored Conversations
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_CHAT_HISTORY_MAX |
a number box, in conversations, 1–50 | in this section | conversations kept — clamped to 1-50 |
AI Token Accounting
Route: AI tab → Settings → Configuration → AI Token Accounting
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_TOKEN_DB |
a text box | in this section | Retention is by row count rather than age: pruning is considered only when the file passes a size threshold, so an ordinary turn costs one stat() and an append. |
AI_TOKEN_RETAIN_ROWS |
a number box | in this section | oldest rows dropped past this — years of ordinary use |
AI_TOKEN_SYNC_ENABLED |
a switch | in this section | AI/ai_token_sync.sh pulls each partner's ledger into the tmpfs cache the tab reads, so the fleet total is a fleet total. Same trick conf_sync.sh uses for partner confs, minus the push: nothing here is needed by anyone else, so the reader fetches its own data and controls its own freshness. An unreachable partner is a quiet skip, not a warning — a partner is expected to be down for long stretche… |
AI Web Search
Route: AI tab → Settings → Configuration → AI Web Search
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
AI_WEB_SEARCH_ENABLED |
a switch | in this section | Provider: degoog | searxng | brave | tavily degoog self-hosted, no key — set HOST*_DEGOOG_URL. Aggregates several engines and returns them merged. The default, and the only one verified against a live service here searxng self-hosted, no key, no third party — set HOST*_SEARXNG_URL, and enable format: [json] in its own settings.yml, which the default image ships with off brave HOST*_WEB_SEARC… |
AI_WEB_SEARCH_PROVIDER |
a text box | in this section | — |
AI_WEB_SEARCH_RESULTS |
a number box | in this section | — |
AI_WEB_SEARCH_TIMEOUT |
a number box | in this section | — |
Arr Cleanup
Reachable from:
- Scheduler tab → Radarr Cleanup → Config → Arr Cleanup
- Scheduler tab → Lidarr Cleanup → Config → Arr Cleanup
- Scheduler tab → Sonarr Cleanup → Config → Arr Cleanup
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
SONARR_VERSION_MAJOR |
a number box | in this section | API versions — update MAJOR version here when script is updated for a new arr version: Sonarr v4 → /api/v3/series → /api/v3/episodefile?seriesId=X Radarr v6 → /api/v3/movie → /api/v3/moviefile?movieId=X Lidarr v3 → /api/v1/artist → /api/v1/trackFile?artistId=X |
RADARR_VERSION_MAJOR |
a number box | in this section | — |
LIDARR_VERSION_MAJOR |
a number box | in this section | — |
ARR_KIDS_PROFILE_NAME |
a text box | in this section | arr_profile_enforcer.sh — quality profile names by root folder type Root folder paths containing "kids" or "anime" → ARR_KIDS_PROFILE_NAME All other root folders → ARR_*_DEFAULT_PROFILE |
ARR_SONARR_DEFAULT_PROFILE |
a text box | in this section | — |
ARR_RADARR_DEFAULT_PROFILE |
a text box | in this section | — |
LIDARR_RELEASE_FIXER_ENABLED |
a switch | in this section | set false to disable without removing from job list |
LIDARR_LOCK_WARN_AGE |
a number box | in this section | 1hr — large libraries take time, not stuck |
LIDARR_ORPHAN_AGE |
a number box, in days | in this section | days — files must be older than this before eligible for deletion |
LIDARR_MAX_DELETE_GB |
a number box | in this section | require --i-know-what-im-doing if deletion exceeds this |
LIDARR_MIN_TRACKED_PCT |
a number box | in this section | abort if tracked count drops below this % of last run |
LIDARR_TRACKED_COUNT_FILE |
a text box | in this section | — |
LIDARR_IMPORT_SCAN_TIMEOUT |
a number box, in seconds | in this section | seconds to wait for pre-flight import scan |
LIDARR_CACHE_FILE |
a text box | in this section | Lidarr tracked-data cache — shared by lidarr_cleanup.sh, lidarr_duplicate_artist_cleanup.sh, lidarr_missing_art.sh, lidarr_release_fixer.sh, and arr_cache_prefill.sh. See lidarr_get_tracked_data() in common.sh for the fresh/stale/rescan-active branching logic. |
LIDARR_RESCAN_DURATION_DB |
a text box | in this section | — |
LIDARR_CACHE_MAX_AGE_DAYS |
a number box | in this section | force a live refresh (or rescan-aware wait) past this age |
ARR_PREFILL_WAIT_MINUTES |
a number box | in this section | array-start prefill: how long to retry reaching each arr |
LIDARR_EXTENSIONS |
a list, one entry per line | in this section | — |
LIDARR_PROTECTED_PATTERNS |
a list, one entry per line | in this section | — |
LIDARR_ART_MIN_SIZE |
a number box | in this section | bytes — reject downloads smaller than this |
LIDARR_ART_MAX_PARALLEL |
a number box | in this section | concurrent background download jobs |
LIDARR_ART_RETRIES |
a number box | in this section | download retry attempts per image |
LIDARR_ART_SLEEP_BETWEEN |
a text box | in this section | seconds between fanart.tv API calls |
LIDARR_ART_RECHECK_DAYS |
a number box, in days | in this section | days before re-querying art that upstream didn't have |
LIDARR_ART_MISS_CACHE |
a text box | in this section | negative cache — art upstream has never had |
LIDARR_DISCOVERY_THRESHOLD |
a number box | in this section | score to accept candidate (0-100) |
LIDARR_DISCOVERY_LOOKBACK_DAYS |
a number box | in this section | Emby play history window in days |
LIDARR_DISCOVERY_MIN_PLAYS |
a number box | in this section | min plays in window before evaluating an artist |
LIDARR_DISCOVERY_USER_CAP_PCT |
a number box | in this section | max % any single user can contribute to play score (prevents one listener dominating) |
LIDARR_DISCOVERY_MAX_ADDS |
a number box | in this section | max artists to add per run — quality over bulk |
LIDARR_DISCOVERY_REJECT_COOLDOWN |
a number box, in days | in this section | days before re-evaluating a rejected artist |
LIDARR_DISCOVERY_HISTORY |
a text box | in this section | — |
SONARR_DISCOVERY_THRESHOLD |
a number box | in this section | score to accept candidate (0-100) |
SONARR_DISCOVERY_LOOKBACK_DAYS |
a number box | in this section | Emby episode play history window in days (shorter than movies — TV watched more frequently) |
SONARR_DISCOVERY_MAX_SEEDS |
a number box | in this section | max seed series from Stage 1 |
SONARR_DISCOVERY_MAX_ADDS |
a number box | in this section | max shows to add per run — TV is a larger commitment than movies |
SONARR_DISCOVERY_MIN_VOTE_COUNT |
a number box | in this section | min TMDB votes (TV has fewer votes than movies at same popularity) |
SONARR_DISCOVERY_MIN_RATING |
a number box | in this section | min TMDB vote_average × 10 (65 = 6.5/10) |
SONARR_DISCOVERY_REJECT_COOLDOWN |
a number box, in days | in this section | days before re-evaluating a rejected show |
SONARR_DISCOVERY_USER_EPISODE_CAP |
a number box | in this section | max episodes any one user contributes to seed volume score |
SONARR_DISCOVERY_MONITOR_MODE |
a dropdown (all, future, first, latest, none) | in this section | Sonarr monitor mode on add: all | future | first | latest | none |
SONARR_DISCOVERY_HISTORY |
a text box | in this section | — |
RADARR_DISCOVERY_THRESHOLD |
a number box | in this section | score to accept candidate (0-100) — lower than Lidarr since diverse seeds rarely overlap |
RADARR_DISCOVERY_LOOKBACK_DAYS |
a number box | in this section | Emby watch history window in days (movies rewatched less often) |
RADARR_DISCOVERY_MAX_SEEDS |
a number box | in this section | max seed movies from Stage 1 |
RADARR_DISCOVERY_MAX_ADDS |
a number box | in this section | max movies to add per run |
RADARR_DISCOVERY_MIN_VOTE_COUNT |
a number box | in this section | min TMDB votes to be considered a candidate |
RADARR_DISCOVERY_MIN_RATING |
a number box | in this section | min TMDB vote_average × 10 (60 = 6.0/10) |
RADARR_DISCOVERY_REJECT_COOLDOWN |
a number box, in days | in this section | days before re-evaluating a rejected movie |
RADARR_DISCOVERY_SEED_LIBRARIES |
a list, one entry per line | in this section | — |
RADARR_DISCOVERY_HISTORY |
a text box | in this section | — |
SONARR_EMBY_LIBRARIES |
a list, one entry per line | in this section | Emby → arr sync library allowlists Only these Emby library names will be considered by the sync tools. Names must match exactly as shown in Emby > Dashboard > Libraries. |
RADARR_EMBY_LIBRARIES |
a list, one entry per line | in this section | — |
SONARR_ORPHAN_AGE |
a number box, in days | in this section | days — files must be older than this before eligible for deletion |
SONARR_MAX_DELETE_GB |
a number box | in this section | require --i-know-what-im-doing if deletion exceeds this |
SONARR_MIN_TRACKED_PCT |
a number box | in this section | abort if tracked count drops below this % of last run |
SONARR_TRACKED_COUNT_FILE |
a text box | in this section | — |
SONARR_IMPORT_SCAN_TIMEOUT |
a number box, in seconds | in this section | seconds to wait for pre-flight import scan |
SONARR_MOVE_POLL_TIMEOUT |
a number box, in seconds | in this section | seconds to wait for a single async MoveSeries command to |
CORRUPTION_SCAN_STATE_FILE |
a text box | in this section | clean-file skip-cache |
CORRUPTION_SCAN_STRIKES_FILE |
a text box | in this section | consecutive corrupt-detection counts, keyed by host path |
CORRUPTION_SCAN_STRIKE_LIMIT |
a number box, in consecutive | in this section | consecutive corrupt detections (across separate scan runs) |
SONARR_EXTENSIONS |
a list, one entry per line | in this section | — |
SONARR_PROTECTED_PATTERNS |
a list, one entry per line | in this section | — |
RADARR_ORPHAN_AGE |
a number box, in days | in this section | days — files must be older than this before eligible for deletion |
RADARR_MAX_DELETE_GB |
a number box | in this section | require --i-know-what-im-doing if deletion exceeds this |
RADARR_MIN_TRACKED_PCT |
a number box | in this section | abort if tracked count drops below this % of last run |
RADARR_TRACKED_COUNT_FILE |
a text box | in this section | — |
RADARR_IMPORT_SCAN_TIMEOUT |
a number box, in seconds | in this section | seconds to wait for pre-flight import scan |
RADARR_MOVE_POLL_TIMEOUT |
a number box, in seconds | in this section | seconds to wait for a single async MoveMovie command to |
RADARR_EXTENSIONS |
a list, one entry per line | in this section | — |
RADARR_PROTECTED_PATTERNS |
a list, one entry per line | in this section | — |
RADARR_DROPPED_ADD_EXCLUSION |
a switch | in this section | add removed movies to import exclusion list |
SONARR_DROPPED_ADD_EXCLUSION |
a switch | in this section | add removed series to import exclusion list |
Arr Content Classification (radarr/sonarr_classification_scan.sh)
Reachable from:
- Scheduler tab → Radarr Classification Scan → Config → Arr Content Classification (radarr/sonarr_classification_scan.sh)
- Scheduler tab → Sonarr Classification Scan → Config → Arr Content Classification (radarr/sonarr_classification_scan.sh)
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
RADARR_ANIME_STUDIOS |
a list, one entry per line | in this section | — |
RADARR_KIDS_STUDIOS |
a list, one entry per line | in this section | — |
RADARR_JUNK_MIN_VOTES |
a number box | in this section | — |
SONARR_ANIME_NETWORKS |
a list, one entry per line | in this section | — |
SONARR_KIDS_NETWORKS |
a list, one entry per line | in this section | — |
Arr Failed/Stalled Recovery
Route: Scheduler tab → Arrs Failed Stalled Recovery → Config → Arr Failed/Stalled Recovery
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
ARR_IMPORT_RECOVERY_AGE |
a number box, in hours | Arrs tab | hours — skip items newer than this |
ARR_RECOVERY_MAX_ATTEMPTS |
a number box, in consecutive | in this section | consecutive failures before an item is flagged chronic |
ARR_SMART_IMPORT_ENABLED |
a switch | in this section | importBlocked items: try importing a clean same-language |
ARR_SMART_IMPORT_PREFERRED_LANGUAGE |
a text box | in this section | only treated as a match/upgrade if the |
Arr Full Library Rescan
Route: Scheduler tab → Arr Full Rescan → Config → Arr Full Library Rescan
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
ARR_FULL_RESCAN_TIMEOUT |
a number box, in seconds | in this section | seconds per arr — a full-library walk, not a single release |
Array Start
Route: Scheduler tab → Array Started → Config → Array Start
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
ARRAY_START_SCRIPTS |
a list, one entry per line | in this section | Scripts launched by array_started.sh when the array comes online. Launched in order — each as a background process. One-shot scripts (ramdisk, syslog, fpm, inotify, network) run and exit naturally. Continuous scripts (failover) run until array stops. Watchdogs (resource_watchdog, docker_watchdog, system_watchdog) are cronned via watchdog_orchestrator.sh — NOT launched here. |
Array Stop
Route: Scheduler tab → Array Stopping → Config → Array Stop
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
ARRAY_STOP_SCRIPTS |
a list, one entry per line | in this section | Scripts run by array_stopping.sh for a planned shutdown — stops everything cleanly in order. Run sequentially (foreground) — each must complete before the next starts. Order matters: user scripts first (prevents new ops), then data movement, then containers. |
Backup Verify
Route: Scheduler tab → Backup Verify → Config → Backup Verify
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
BACKUP_VERIFY_SAMPLE |
a number box | in this section | random files to check per share |
BACKUP_VERIFY_MIN_SIZE |
a text box | in this section | minimum file size to include in sample |
Bandwidth Monitor
Route: Scheduler tab → Bandwidth Monitor → Config → Bandwidth Monitor
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
BANDWIDTH_LOG |
a text box | in this section | Called automatically by rsync.sh after each sync — one bounded write per run. Tracks transfer size, duration and profile per sync for weekly summary reporting. |
BANDWIDTH_LOG_RETENTION |
a number box, in days | in this section | days before old entries purged |
BANDWIDTH_WARN_GB |
a number box | Rsync tab | flag syncs larger than this in weekly report |
ARR_CLEANUP_STATS |
a text box | in this section | lidarr/sonarr/radarr orphan stats |
ARR_RECOVERY_STATS |
a text box | in this section | blocklist + re-search stats |
ARR_RECOVERY_FAILURE_COUNTS |
a text box | in this section | per-item chronic-failure tracking |
Certificate Monitor
Reachable from:
- Scheduler tab → Cert Monitor → Config → Certificate Monitor
- Scheduler tab → Weekly Health Digest → Config → Certificate Monitor
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
CERT_WARN_DAYS |
a number box | in this section | warn when cert expires within this many days |
CERT_CRIT_DAYS |
a number box | in this section | critical alert within this many days |
CERT_TIMEOUT |
a number box, in seconds | in this section | seconds per domain before giving up |
Clear Logs
Route: Scheduler tab → Clear Logs → Config → Clear Logs
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
LOG_FILES |
a list, one entry per line | in this section | Size threshold approach — only clear if log exceeds threshold. Avoids destroying useful recent diagnostic context when logs are small. LOG_MIN_SIZE_MB: skip clearing if log is under this size (not worth clearing) LOG_DOCKER_MAX_MB: clear a container log only if it exceeds this size Docker logs grow fastest on active containers (Emby, SABnzbd, Sonarr) 100MB per container × 30 containers = 3GB be… |
LOG_MIN_SIZE_MB |
a number box | in this section | skip system log if under this size (already small) |
LOG_DOCKER_MAX_MB |
a number box | in this section | clear Docker container log only if over this size (MB) |
Critical Sync Maintenance
Route: Scheduler tab → Critical Sync Maintenance → Config → Critical Sync Maintenance
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
CRITICAL_MAINTENANCE_SCRIPTS |
a list, one entry per line | in this section | critical_sync_maintenance.sh runs every 30 minutes. Order: CRITICAL_MAINTENANCE_SCRIPTS (jobs) → CRITICAL_SYNC_SHARES (rsync) → partnership --check partnership --check always runs last regardless of rsync gate. Comment out entries to disable without removing. |
Daily Sync Maintenance
Route: Scheduler tab → Daily Sync Maintenance → Config → Daily Sync Maintenance
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
DAILY_MAINTENANCE_SCRIPTS |
a list, one entry per line | in this section | daily_sync_maintenance.sh runs media share sync first, then iterates DAILY_MAINTENANCE_SCRIPTS for all jobs. Schedule: 0 1 * * * (1am daily) |
DAILY_CONTAINER_UPDATES |
a switch | in this section | Pull latest images for DAILY_RESTART_CONTAINERS before the daily restart. Containers keep running during pull — no extra downtime. Set false to skip updates while still running the daily restart. |
Docker Watchdog
Route: Scheduler tab → Docker Watchdog → Config → Docker Watchdog
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
WATCHDOG_STATE_FILE |
a text box | in this section | Strike state file — /tmp resets on reboot (correct — no stale strikes after reboot) |
SOFT_CPU_THRESHOLD |
a number box | in this section | warn at this % of total system CPU |
HARD_CPU_THRESHOLD |
a number box | in this section | strike at this % of total system CPU |
CPU_FAIL_LIMIT |
a number box, in consecutive | in this section | consecutive hard CPU strikes before container restart |
SOFT_MEM_THRESHOLD |
a number box | in this section | Memory soft threshold — warn when container reaches this % of its hard limit |
RESP_FAIL_LIMIT |
a number box, in consecutive | in this section | consecutive failed checks before restart |
CURL_TIMEOUT |
a number box, in seconds | in this section | seconds per check before timeout |
WATCHDOG_SCAN_ALL |
a switch | in this section | false = only WATCHDOG_CONTAINERS + required containers |
WATCHDOG_RESTART_UNHEALTHY |
a switch | in this section | Individual Tier 2 check toggles |
WATCHDOG_RESTART_DEAD |
a switch | in this section | — |
WATCHDOG_RESTART_CRASHED |
a switch | in this section | — |
WATCHDOG_NOTIFY_OOM |
a switch | in this section | — |
WATCHDOG_NOTIFY_CRASHLOOP |
a switch | in this section | — |
WATCHDOG_CRASH_LIMIT |
a number box | in this section | RestartCount above this = critical crash loop |
WATCHDOG_REQUIRED_STRIKE_LIMIT |
a number box | in this section | Required-container strikes — consecutive down-checks before docker_watchdog.sh attempts a restart |
WATCHDOG_STARTUP_GRACE |
a number box, in seconds | in this section | seconds after boot before watchdog acts on failures |
WATCHDOG_CONTAINER_RESTART_LIMIT |
a number box | in this section | Restart loop protection — prevents watchdog from endlessly restarting a broken container |
WATCHDOG_CONTAINER_RESTART_WINDOW |
a number box | in this section | rolling window in hours |
WATCHDOG_CONTAINER_RESTART_LOG |
a text box | in this section | — |
WATCHDOG_BATCH_NOTIFY |
a switch | in this section | Notification batching — one summary per cycle instead of one ping per event |
WATCHDOG_DAEMON_TIMEOUT |
a number box, in seconds | in this section | seconds — timeout for all docker commands |
WATCHDOG_DAEMON_STRIKE_LIMIT |
a number box, in consecutive | in this section | consecutive failed checks before restart attempt |
WATCHDOG_DAEMON_RESTART_WAIT |
a number box, in seconds | in this section | seconds to wait after restart before verifying |
WATCHDOG_CHECK_APPDATA |
a switch | in this section | HOST*_WATCHDOG_APPDATA_SIZES (in host*.conf) suppresses growth warnings for a container until its dir exceeds the configured ceiling. Only needed when a container legitimately has large stable data and you want to guarantee it never triggers a false alarm. |
WATCHDOG_APPDATA_PATHS |
a list, one entry per line | in this section | — |
WATCHDOG_APPDATA_GROWTH_GB |
a number box | in this section | flag containers growing more than this per cycle |
WATCHDOG_APPDATA_LOG_MAX_GB |
a number box | in this section | flag *.log files exceeding this size (absolute) |
WATCHDOG_APPDATA_TRUNCATE_LOGS |
a switch | in this section | set true to auto-truncate oversized *.log files on action cycle |
WATCHDOG_APPDATA_STRIKE_LIMIT |
a number box | in this section | cycles before action fires (matches existing watchdog pattern) |
WATCHDOG_APPDATA_GROWTH_FILE |
a text box | in this section | — |
STORAGE_WATCHDOG_STATE_FILE |
a text box | in this section | — |
Download Orphan Cleaner (arr_download_orphan_cleaner.sh)
Route: Scheduler tab → Arr Download Orphan Cleaner → Config → Download Orphan Cleaner (arr_download_orphan_cleaner.sh)
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
DOWNLOAD_ORPHAN_CLEANER_ENABLED |
a switch | in this section | Weekly sweep of the SABnzbd Completed folders Sonarr/Radarr import from — deletes junk and parse-verified already-in-library leftovers the arr queue no longer references, triggers import scans for anything the library is actually missing. Built 2026-07-26 after 755G of orphaned completed downloads (accumulating since 2022) filled HOST1's cache pool to 89%. Per-host dirs: HOST*_SONARR_DOWNLOAD_D… |
DOWNLOAD_ORPHAN_AGE |
a number box, in days | in this section | days — entries younger than this may be mid-import, never touched |
DOWNLOAD_ORPHAN_MIN_VIDEO_MB |
a number box | in this section | no video file above this = junk (par2 debris, samples, dead archives) |
DOWNLOAD_ORPHAN_MAX_DELETE_GB |
a number box | in this section | abort delete pass over this — a partial queue fetch would classify |
Downloaders Reset
Route: Scheduler tab → Downloaders Reset → Config → Downloaders Reset
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
DOWNLOADER_RETENTION_DAYS |
a number box, in days | in this section | days — purge history older than this |
QBIT_FAILSAFE_MIN_DAYS |
a number box, in days | in this section | days — minimum age before failsafe deletion |
QBIT_FAILSAFE_MIN_RATIO |
a number box | in this section | 0 = age only, no ratio requirement |
Emby Session Report
Route: Scheduler tab → Emby Session Report → Config → Emby Session Report
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
EMBY_REPORT_DAYS |
a number box, in days | in this section | days to include in the report period |
EMBY_REPORT_TOP_N |
a number box | in this section | number of top content items to show |
FALLBACK
No single page shows this section. Individual settings below carry their own route.
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
EXTERNAL_IP |
a text box | — | — |
FALLBACK_CHECK_INTERVAL |
a number box, in seconds | Fallback tab | seconds between fallback state checks |
FALLBACK_HANDBACK_STRIKES |
a number box, in consecutive | Fallback tab | consecutive healthy checks before initiating handback (3×30s = 90s) |
FALLBACK_STATE_FILE |
a text box | — | — |
FALLBACK_ENABLED |
a switch | Fallback tab | HOST2 back online |
FALLBACK_PARTNERSHIP_SUSPEND_AFTER |
a number box, in minutes | Fallback tab | minutes without active partnership before suspending |
Failover Test
Route: Scheduler tab → Fallback Test → Config → Failover Test
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
FALLBACK_TEST_BLOCK_WAIT |
a number box, in seconds | in this section | seconds to wait after blocking connectivity |
FALLBACK_TEST_HANDBACK_WAIT |
a number box, in seconds | in this section | seconds to wait before initiating handback |
Health Digest
Route: Scheduler tab → Weekly Health Digest → Config → Health Digest
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
DIGEST_PROFILE |
a dropdown (always, smart, weekly) | in this section | always | smart | weekly |
DIGEST_DAY |
a text box | in this section | — |
DIGEST_SMART_ON_WATCHDOG |
a switch | in this section | send if any watchdog strikes are active |
DIGEST_SMART_ON_FALLBACK |
a switch | in this section | send if fallback state is not NORMAL |
DIGEST_SMART_ON_CERT_WARN |
a switch | in this section | send if any cert is under CERT_WARN_DAYS |
DIGEST_SMART_ON_BANDWIDTH |
a switch | in this section | send if any transfer exceeded BANDWIDTH_WARN_GB |
Intermediate Sync Maintenance
Route: Scheduler tab → Intermediate Sync Maintenance → Config → Intermediate Sync Maintenance
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
INTERMEDIATE_MAINTENANCE_SCRIPTS |
a list, one entry per line | in this section | — |
LOGGING
No single page shows this section. Individual settings below carry their own route.
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
ENABLE_LOGGING |
a switch | Settings tab | Controls verbose [LOG] output across all scripts. true = show detailed [LOG] lines — useful for debugging or first-time setup false = show only user-facing output — cleaner for scheduled runs |
Media Cleaner
Route: Scheduler tab → Media Cleaner → Config → Media Cleaner
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
ANIME_FILE_PATTERNS |
a list, one entry per line | in this section | — |
MEDIA_FILE_PATTERNS |
a list, one entry per line | in this section | — |
Media Permissions
Reachable from:
- Scheduler tab → Media Shares Permissions → Config → Media Permissions
- Scheduler tab → Bulk Permissions Repair → Config → Media Permissions
- Scheduler tab → Trailer Folder Migration → Config → Media Permissions
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
PERMISSIONS_DIR_MODE |
a text box | in this section | directories — traverse + list, no world-write |
PERMISSIONS_FILE_MODE |
a text box | in this section | files — group read/write, no execute |
PERMISSIONS_OWNER |
a text box | in this section | — |
Monthly Maintenance
Route: Scheduler tab → Monthly Maintenance → Config → Monthly Maintenance
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
MONTHLY_MAINTENANCE_SCRIPTS |
a list, one entry per line | in this section | monthly_maintenance.sh fires only when BOTH gates pass: 1. Server uptime >= MONTHLY_UPTIME_THRESHOLD_DAYS days 2. Last run was >= MONTHLY_RUN_INTERVAL_DAYS days ago (or never run) Cron: 0 0 15 * * (15th of the month, midnight — script self-gates, so a spare run is safe) NOT in WATCHDOG_ORCHESTRATOR_SCRIPTS — has its own cron entry. Add scripts that require a long-stable settled system — scrubs,… |
MONTHLY_UPTIME_THRESHOLD_DAYS |
a number box | in this section | minimum uptime in days before maintenance fires |
MONTHLY_RUN_INTERVAL_DAYS |
a number box | in this section | minimum days since last run before running again |
MONTHLY_LAST_RUN_FILE |
a text box | in this section | — |
Mover
Route: Scheduler tab → Mover Stop → Config → Mover
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
MOVER_STOP_TIMEOUT |
a number box, in seconds | in this section | Seconds to wait before mover_stop.sh sends SIGTERM to the mover process. Gives mover time to finish current file transfer before being interrupted. |
NOTIFICATIONS
No single page shows this section. Individual settings below carry their own route.
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
NOTIFY_UNRAID |
a switch | Settings tab | unRAID native notification system — integrates with the bell icon in the WebGUI. normal = job completed successfully / warning = something failed or needs attention |
WEBHOOK_PORT |
a number box | — | Upgrade webhook — standalone PHP listener that receives OnUpgrade events from Sonarr/Radarr/Lidarr and immediately pushes the upgraded file to all mesh nodes. Bypasses Unraid nginx auth — the secret in the URL is the only gate. Run Tools/webhook_setup.sh once to register the connection in each arr. WEBHOOK_PORT 0 disables the listener. |
WEBHOOK_SECRET |
a masked box with a Show button | — | auto-generated on first start if empty |
Network Watchdog
Route: Scheduler tab → Network Watchdog → Config → Network Watchdog
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
NETWORK_WATCHDOG_ENABLED |
a switch | in this section | Services-layer connectivity — internet reachability, DDNS sync, Tailscale, NPM proxy. Host-specific values (domain, container, NPM URL) live in host*.conf. |
NETWORK_WATCHDOG_INTERNET_URL |
a text box | in this section | — |
NETWORK_WATCHDOG_INTERNET_TIMEOUT |
a number box | in this section | — |
NETWORK_WATCHDOG_CHECK_TAILSCALE |
a switch | in this section | — |
NETWORK_WATCHDOG_NPM_TIMEOUT |
a number box | in this section | — |
NETWORK_WATCHDOG_NPM_STRIKE_LIMIT |
a number box | in this section | — |
NETWORK_WATCHDOG_NPM_STATE_FILE |
a text box | in this section | — |
OOM Bypass Settings
Route: Scheduler tab → Stability Watchdog → Config → OOM Bypass Settings
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
SYS_WATCHDOG_OOM_LIMIT |
a number box | in this section | OOM kills in one cycle to trigger bypass |
PARTNERSHIP
Route: Partnership tab → Array Settings → PARTNERSHIP
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
PARTNERSHIP_ENABLED |
a switch | Fallback tab | — |
PARTNERSHIP_OWNER_HOST |
a text box | in this section | "HOST1" or "HOST2" — flips on --transfer |
PARTNERSHIP_GRACE_HOURS |
a number box, in hours | in this section | hours after offboard before Tailscale removal |
PARTNERSHIP_OFFLINE_THRESHOLD |
a number box, in days | in this section | days either server unreachable before auto-offboard |
PARTNERSHIP_BLOCKLIST_FILE |
a text box | in this section | Partnership and setup state files — all in STATE_DIR per the project requirement. Scripts use these variables; do not hardcode /boot/config paths in scripts. |
VARAVERK_SETUP_FILE |
a text box | in this section | — |
PARTNERSHIP_REMOVE_TAILSCALE |
a switch | in this section | remove mirror from Tailscale tailnet on offboard |
TAILSCALE_API_KEY |
a masked box with a Show button | in this section | tskey-api-... |
TAILSCALE_TAILNET |
a text box | in this section | your tailnet name (e.g. yourname.github) |
PARTNERSHIP_TRANSFER_CONFIRM |
a text box | in this section | Transfer safety. |
PARTNERSHIP_TRANSFER_STRIKES |
a number box, in consecutive | in this section | consecutive health checks required |
PARTNERSHIP_TRANSFER_MAX_ATTEMPTS |
a number box | in this section | max health check attempts before giving up |
PARTNERSHIP_ONBOARD_VERIFY |
a switch | in this section | verify WebUI reachable after reconfiguration |
PARTNERSHIP_ONBOARD_NOTIFY |
a switch | in this section | notify both servers on completion |
PARTNERSHIP_SYNC_INTERVAL |
a number box, in minutes | in this section | minutes — informational, actual schedule in cron |
SSH_MAX_STRIKES |
a number box, in consecutive | in this section | consecutive SSH auth failures before critical notify |
SSH_STRIKE_RESET_HRS |
a number box, in hours | in this section | hours since last failure before strike counter resets |
PARTNERSHIP_FOLDERVIEW3 |
a switch | in this section | create/remove FolderView3 folder on onboard/offboard |
PARTNERSHIP_FOLDERVIEW3_URL |
a text box | in this section | CA plugin URL — leave empty to skip auto-install |
PHP-FPM
Route: Scheduler tab → Php Fpm Max Children → Config → PHP-FPM
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
PHP_CONF |
a text box | in this section | Higher max_children allows more concurrent PHP requests to the unRAID WebGUI. Default is very low — increasing it prevents WebGUI slowdowns under load. 250 is safe for servers with 32GB+ RAM. |
PHP_MAX_CHILDREN |
a number box | in this section | — |
Play State Sync
Route: Scheduler tab → Play State Sync → Config → Play State Sync
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
PLAY_SYNC_ENABLED |
a switch | in this section | — |
PLAY_SYNC_REMOTE |
a switch | in this section | sync across hosts via Tailscale |
PLAY_SYNC_TYPES |
a text box | in this section | Audio excluded — music library too large; favorites handled separately |
PLAY_SYNC_FAV_TYPES |
a text box | in this section | union sync — never unmarks; Audio tracks future |
PLAY_SYNC_PROBE |
a switch | in this section | hash fetched state, skip per-item comparison when nothing changed |
PLAY_SYNC_PROBE_MAX_AGE_HOURS |
a number box | in this section | force a full comparison when the fingerprint is older than this |
Play State Sync — Handback
Reachable from:
- Scheduler tab → Play State Sync → Config → Play State Sync — Handback
- Scheduler tab → Fallback → Config → Play State Sync — Handback
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
PLAY_SYNC_HANDBACK_RETRIES |
a number box, in attempts | in this section | attempts before giving up and proceeding to DNS cutover |
PLAY_SYNC_HANDBACK_RETRY_DELAY |
a number box, in seconds | in this section | seconds between retry attempts |
Pressure Thresholds
Route: Scheduler tab → Resource Watchdog → Config → Pressure Thresholds
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
RW_RAM_SOFT_GB |
a number box | in this section | throttle start — reduce background load |
RW_RAM_MEDIUM_GB |
a number box | in this section | pause background containers |
RW_RAM_HARD_GB |
a number box | in this section | stop optional containers (was SYS_WATCHDOG_MEM_SHUTDOWN_GB) |
RW_RAM_RECOVER_GB |
a number box | in this section | RAM must reach this before restoring hard-stopped containers |
RW_LOAD_SOFT_MULTIPLIER |
a text box | in this section | soft pressure: 2× cores sustained |
RW_LOAD_MEDIUM_MULTIPLIER |
a text box | in this section | medium pressure: 3× cores sustained |
RW_RECOVER_CYCLES |
a number box, in consecutive | in this section | Consecutive runs at lower pressure before de-escalating |
RAM Reboot Threshold
Route: Scheduler tab → Stability Watchdog → Config → RAM Reboot Threshold
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
SYS_WATCHDOG_MEM_GB |
a number box | in this section | strike system → reboot |
Reboot
Route: Scheduler tab → Server Reboot → Config → Reboot
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
REBOOT_SLEEP |
a number box, in seconds | in this section | Seconds of warning broadcast to logged-in users before server_reboot.sh reboots. Gives users time to save work — 300s = 5 minutes. |
REBOOT_VM_WAIT |
a number box, in seconds | in this section | Seconds to wait for graceful VM shutdown (ACPI signal via virsh) before libvirt stops it anyway — reboot takes priority. |
Rsync Defaults
Route: Scheduler tab → Rsync → Config → Rsync Defaults
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
BW_LIMIT |
a number box, in kb | Rsync tab | KB/s — 12500 ≈ 100Mbit |
RETRY_COUNT |
a number box | Rsync tab | retry attempts before giving up |
SLEEP |
a number box, in seconds | Rsync tab | seconds between retry attempts |
RSYNC_MAX_RUNTIME_HOURS |
a number box | in this section | cap per transfer attempt — pauses and resumes next scheduled run |
CRITICAL_CONTAINER_NAMES |
a list, one entry per line | in this section | — |
DELAYED_CONTAINERS |
a list, one entry per line | in this section | — |
CONTAINER_DELAY |
a number box, in seconds | in this section | seconds before starting delayed containers |
RESTART_VERIFY_WAIT |
a number box, in seconds | in this section | seconds to wait after restart before checking container is running |
EXCLUDE_DIRS |
a list, one entry per line | in this section | — |
DEFAULT_RSYNC_OPTS |
a list, one entry per line | in this section | --inplace writes directly to destination — delta against existing file, better for large media --partial keep partial file on interrupted transfer so next run resumes, not re-transfers --timeout kill stalled transfers instead of hanging indefinitely --numeric-ids use UIDs/GIDs numerically — prevents ownership mismatches between servers --delete intentionally omitted — the per-arr cleanups (lida… |
Rsync Enable/Disable
Route: Scheduler tab → Rsync → Config → Rsync Enable/Disable
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
RSYNC_ENABLED |
a switch | in this section | Tier 1 — global gate, overrides everything below |
CRITICAL_RSYNC_ENABLED |
a switch | in this section | Tier 2 — critical_sync_maintenance.sh rsync section |
INTERMEDIATE_RSYNC_ENABLED |
a switch | in this section | Tier 2 — intermediate_sync_maintenance.sh rsync section |
DAILY_RSYNC_ENABLED |
a switch | in this section | Tier 2 — daily_sync_maintenance.sh rsync section |
WEEKLY_RSYNC_ENABLED |
a switch | in this section | Tier 2 — weekly_sync_maintenance.sh rsync section |
MONTHLY_RSYNC_ENABLED |
a switch | in this section | Tier 2 — monthly_maintenance.sh rsync section |
FALLBACK_RSYNC_ENABLED |
a switch | Fallback tab | Tier 2 — fallback.sh writeback jobs on handback |
Rsync Merge Auto-Promote
Route: Scheduler tab → Rsync → Config → Rsync Merge Auto-Promote
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
RSYNC_MERGE_ENABLED |
a switch | in this section | When enabled, rsync.sh pre-scans the remote before syncing and promotes to merge mode (pull-then-push) if ≥75% of remote top-level entries exist locally. Named profiles are always excluded from auto-promote regardless of this toggle. |
Rsync Profile System
Route: Scheduler tab → Rsync → Config → Rsync Profile System
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
PROFILE_RSYNC_OPTS |
a list, one entry per line | in this section | — |
PROFILE_BW_LIMIT |
a list, one entry per line | in this section | Per-profile bandwidth limits in KB/s |
PROFILE_SLEEP |
a list, one entry per line | in this section | Seconds between retry attempts — only non-default profiles listed (default SLEEP applies otherwise) |
PROFILE_CRITICAL_CONTAINER_NAMES |
a list, one entry per line | in this section | Containers stopped on BOTH LOCAL and REMOTE before rsync. Local stops first — flushes databases cleanly. Remote stops next — prevents writes. Only running containers get restarted — stopped containers stay stopped. SPACE-SEPARATED STRINGS — converted to array at runtime |
PROFILE_DELAYED_CONTAINERS |
a list, one entry per line | in this section | Containers needing a delay after rsync before starting. SPACE-SEPARATED STRINGS — converted to array at runtime |
PROFILE_CONTAINER_DELAY |
a list, one entry per line | in this section | Seconds before starting delayed containers — only non-default profiles listed (default CONTAINER_DELAY applies otherwise) |
PROFILE_EXCLUDE_DIRS |
a list, one entry per line | in this section | Directories excluded from rsync per profile. SPACE-SEPARATED STRINGS — converted to array at runtime |
PROFILE_REMOTE_RESTART_CONTAINERS |
a list, one entry per line | in this section | Remote restart after dirty sync — restart these on remote IF they were running before sync. Same logic as stop/start — was stopped = stays stopped, was running = gets restarted. Used by dirty sync profiles (critical-fallback) so remote picks up changes. SPACE-SEPARATED STRINGS — converted to array at runtime |
SABnzbd Throttle
Route: Scheduler tab → Resource Watchdog → Config → SABnzbd Throttle
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
RW_SABNZBD_ENABLED |
a switch | in this section | Speed values: "50M" = 50 MB/s, "0" = unlimited |
RW_SABNZBD_SPEED_SOFT |
a text box | in this section | — |
RW_SABNZBD_SPEED_MEDIUM |
a text box | in this section | — |
SMART Health
Route: Scheduler tab → Smart Health → Config → SMART Health
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
SMART_TEMP_WARN |
a number box | in this section | fallback — Celsius warn threshold |
SMART_TEMP_CRIT |
a number box | in this section | fallback — Celsius critical threshold |
Strike and Reboot Loop Settings
Route: Scheduler tab → Stability Watchdog → Config → Strike and Reboot Loop Settings
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
SYS_WATCHDOG_STRIKE_LIMIT |
a number box, in consecutive | in this section | consecutive failures before reboot trigger |
SYS_WATCHDOG_REBOOT_LIMIT |
a number box | in this section | Reboot loop protection — if system keeps rebooting something is seriously wrong. After REBOOT_LIMIT reboots in REBOOT_WINDOW_HRS → shutdown instead of reboot. |
SYS_WATCHDOG_REBOOT_WINDOW_HRS |
a number box | in this section | — |
Sunday Morning Coffee Report
Route: Scheduler tab → Sunday Morning Coffee Report → Config → Sunday Morning Coffee Report
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
COFFEE_REPORT_SCRIPTS |
a list, one entry per line | in this section | Orchestrator that runs all Sunday monitor scripts in sequence. Schedule: 0 7 * * 0 (Sunday 7am — after weekly_sync_maintenance.sh finishes at ~3am) Each script runs independently and notifies on its own findings. |
Syslog Filter
Route: Scheduler tab → Docker Syslog Filter → Config → Syslog Filter
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
FILTER_FILE |
a text box | in this section | Path for the rsyslog filter file that suppresses Docker veth interface noise. Docker creates a new veth interface for each container — generates hundreds of log lines per hour that have no diagnostic value. Filter removes them at source. |
System Tuning Monitor
Route: Scheduler tab → System Tuning Monitor → Config → System Tuning Monitor
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
INOTIFY_WARN_PCT |
a number box | in this section | warn if inotify instances exceed this % of limit |
PHP_FPM_WARN_PCT |
a number box | in this section | warn if php-fpm workers exceed this % of max_children |
TUNING_MONITOR_LOG |
a text box | in this section | — |
TUNING_LOG_RETENTION |
a number box, in days | in this section | days before old entries are purged |
System Watchdog
Route: Scheduler tab → Watchdog Orchestrator → Config → System Watchdog
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
SYSTEM_WATCHDOG_SCRIPTS |
a list, one entry per line | in this section | system_watchdog.sh runs SYSTEM_WATCHDOG_SCRIPTS sequentially each cycle. Called by watchdog_orchestrator.sh — not scheduled directly. |
Transcode Management
Route: Scheduler tab → Transcode Management → Config → Transcode Management
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
TRANSCODE_MANAGEMENT_SCRIPTS |
a list, one entry per line | in this section | transcode_management.sh runs TRANSCODE_MANAGEMENT_SCRIPTS in order each cron cycle. Schedule: */7 * * * * (every 7 minutes) Order matters — cleanup first so the manager measures real current ramdisk usage, not usage inflated by stale segment files from ended sessions. |
Transcode Manager
Reachable from:
- Scheduler tab → Transcode Management → Config → Transcode Manager
- Scheduler tab → Transcode Manager → Config → Transcode Manager
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
RAMDISK_PATH |
a text box | in this section | tmpfs mount point — created at array start by ramdisk_setup.sh. Must exist before Emby starts so the symlink resolves correctly. |
TRANSCODE_LINK |
a text box | in this section | Symlink that Emby points at — this path NEVER changes regardless of ramdisk/SSD state. Emby resolves the symlink once per session at start — symlink flips are transparent. Must match the container path configured in Emby's Extra Parameters. |
RAMDISK_SSD_MIN_GB |
a number box | in this section | Minimum free GB on SSD before allowing flip from ramdisk to SSD. |
TRANSCODE_MAX_AGE |
a number box, in minutes | in this section | minutes — HLS segment age before cleanup eligibility |
TRANSCODE_ORPHAN_AGE |
a number box, in minutes | in this section | minutes — files with no matching active session |
TRANSCODE_FLIP_WARN |
a number box | in this section | notify if symlink flips this many times in one hour |
TRANSCODE_OWNER |
a text box | in this section | — |
TRANSCODE_CHMOD |
a text box | in this section | — |
TRANSCODE_MANAGER_MODE |
a text box | in this section | Operating mode — controls symlink direction behaviour. smart — auto-flips between ramdisk and SSD based on thresholds (default) ramdisk — always uses ramdisk, warns if RAMDISK_WARN_GB exceeded but holds ssd — always uses SSD, never flips to ramdisk |
TRANSCODE_STATE_FILE |
a text box | in this section | Daily statistics log — read by weekly_health_digest.sh for transcode summary. |
TRANSCODE_DAILY_LOG |
a text box | in this section | — |
TRANSCODE_LOG_RETENTION |
a number box, in days | in this section | days before old entries purged |
TRANSCODE_CHECK_EMBY |
a switch | in this section | — |
Watchdog Orchestrator
Route: Scheduler tab → Watchdog Orchestrator → Config → Watchdog Orchestrator
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
WATCHDOG_ORCHESTRATOR_SCRIPTS |
a list, one entry per line | in this section | watchdog_orchestrator.sh runs WATCHDOG_ORCHESTRATOR_SCRIPTS in order each cron cycle. Schedule: */15 * * * * (every 15 minutes) NOT in ARRAY_START_SCRIPTS — has its own cron entry. Order matters — resource first (frees pressure), docker second (heals with freed resources), system third (storage + webgui component health), stability last (last line of defense). |
WebGUI Watchdog
Route: Scheduler tab → Webgui Watchdog → Config → WebGUI Watchdog
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
WEBGUI_URL |
a text box | in this section | Monitors unRAID WebGUI responsiveness — escalates through nginx restart → emhttp restart. Separate from docker_watchdog — this monitors the unRAID UI itself, not containers. |
WEBGUI_TIMEOUT |
a number box, in seconds | in this section | seconds before curl gives up on WebGUI check |
WEBGUI_NGINX_WAIT |
a number box, in seconds | in this section | seconds after nginx restart before rechecking |
WEBGUI_PHP_WAIT |
a number box, in seconds | in this section | seconds after php-fpm restart before rechecking |
WEBGUI_EMHTTP_WAIT |
a number box, in seconds | in this section | seconds after emhttp restart before rechecking |
Weekly Sync Maintenance
Route: Scheduler tab → Weekly Sync Maintenance → Config → Weekly Sync Maintenance
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
WEEKLY_MAINTENANCE_SCRIPTS |
a list, one entry per line | in this section | weekly_sync_maintenance.sh stops containers both sides → pulls updates → syncs WEEKLY_SYNC_SHARES → restarts → then iterates WEEKLY_MAINTENANCE_SCRIPTS. Schedule: 30 2 * * 0 (Sunday 2:30am) |
WEEKLY_CONTAINER_UPDATES |
a switch | in this section | Pull updates for WEEKLY_RESTART_CONTAINERS before docker_weekly_restart.sh runs. Set false to skip — docker_weekly_restart.sh still runs regardless. |
MONTHLY_REMAINING_UPDATES |
a switch | in this section | Pull updates for all running containers NOT in daily/weekly managed lists. Ensures every deployed container receives at least one image pull per month. Set false to skip. |
DOCKER_UPDATE_REBUILT_DAILY_FILE |
a text box | in this section | docker_update.sh rebuilds (stop+recreate onto new image) any container whose image changed, in every mode. For daily/weekly, that rebuild is immediately followed by the restart script's own unconditional pass — a container that just got rebuilt would be stopped and started again right after for no reason. docker_update.sh records which containers it rebuilt to these files; docker_daily_restart.… |
DOCKER_UPDATE_REBUILT_WEEKLY_FILE |
a text box | in this section | — |
DOCKER_UPDATE_REBUILT_STALE_HOURS |
a number box | in this section | — |
WEEKLY_SYNC_UPDATES |
a switch | in this section | pull container updates locally during weekly window |
WEEKLY_SYNC_UPDATES_REMOTE |
a switch | in this section | pull container updates on remote via SSH |
ZFS Memory Snapshot
Route: Scheduler tab → Zfs Memory Snapshot → Config → ZFS Memory Snapshot
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
ZFS_REPORT_LOG |
a text box | in this section | Weekly ZFS pool health and memory diagnostic report — informational only. |
ZFS_REPORT_ARC_WARN_PCT |
a number box | in this section | warn if ARC using more than this % of its max |
ZFS_REPORT_ARC_FREE_WARN_GB |
a number box | in this section | warn if ARC headroom (max - current) drops below this GB |
ZFS_REPORT_AVAIL_WARN_GB |
a number box | in this section | warn if less than this GB available on ZFS pool |
ZFS_REPORT_DOCKER_TOP |
a number box | in this section | how many top Docker containers to show by memory |
inotify Tuning
Route: Scheduler tab → Inotify Tuning → Config → inotify Tuning
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
INOTIFY_MAX_INSTANCES |
a number box | in this section | default: 128 — max inotify instances per user |
INOTIFY_MAX_WATCHES |
a number box | in this section | default: 8192 — SHARED budget across ALL users/containers |
INOTIFY_MAX_QUEUED_EVENTS |
a number box | in this section | default: 16384 — max events queued before dropping |
qBittorrent Throttle
Route: Scheduler tab → Resource Watchdog → Config → qBittorrent Throttle
Saved into master.conf, which does not need to be opened by hand.
| Setting | Control | Where | What it does |
|---|---|---|---|
RW_QBIT_ENABLED |
a switch | in this section | KB/s — 0 = unlimited |
RW_QBIT_DL_SOFT |
a number box | in this section | 50 MB/s |
RW_QBIT_DL_MEDIUM |
a number box | in this section | 10 MB/s |
Settings with no route through the UI
These sections are not rendered by any page, so they can only be changed by editing the conf file. If one of these is asked about, say so plainly rather than inventing a route — mapping it into the Scheduler is a code change, not a setting.
- Authelia (
host1.conf) —HOST1_AUTHELIA_CONFIG,HOST1_AUTHELIA_CONTAINER - Fallback Tiers — What HOST1 Wants Covered When Down (
host1.conf) —FALLBACK_HOST1_TIER1,FALLBACK_HOST1_TIER2,FALLBACK_HOST1_TIER3,FALLBACK_HOST1_TIER4 - Gitea (
host1.conf) —HOST1_GITEA_API_TOKEN - Identity (
host1.conf) —HOST1_SSH_KEY,HOST1_STORAGE_PATH,HOST1_OWNER,HOST1_OWNER_EMAIL - Jellyfin (
host1.conf) —HOST1_JELLYFIN_CONTAINER,HOST1_JELLYFIN_URL,HOST1_JELLYFIN_API_KEY - Monthly Sync Shares (
host1.conf) —HOST1_MONTHLY_SYNC_SHARES - NginxProxyManager (
host1.conf) —HOST1_NPM_URL,HOST1_NPM_USER,HOST1_NPM_PASS - PCIe AER Quiet (
host1.conf) —HOST1_PCIE_QUIET_DEVICES - Personal Shares (
host1.conf) —HOST1_PERSONAL_SHARES - RESOURCE MANAGER (
host1.conf) —HOST1_RW_PAUSE_CONTAINERS,HOST1_RW_STOP_CONTAINERS - Rsync Writeback (
host1.conf) —HOST1_TIER1_WRITEBACK_DELAY,FALLBACK_HOST1_WRITEBACK_TIER1,FALLBACK_HOST1_WRITEBACK_TIER2,FALLBACK_HOST1_WRITEBACK_TIER3,FALLBACK_HOST1_WRITEBACK_TIER4 - TRANSCODES (
host1.conf) —HOST1_RAMDISK_SIZE,HOST1_RAMDISK_WARN_GB,HOST1_RAMDISK_LOW_GB,HOST1_TRANSCODE_SSD,HOST1_TRANSCODE_SERVERS - Tier Delays — HOST1 Outage Timers (
host1.conf) —HOST1_TIER2_DELAY,HOST1_TIER3_DELAY,HOST1_TIER4_DELAY - Unraid API (
host1.conf) —HOST1_UNRAID_API_KEY - Web search (
host1.conf) —HOST1_DEGOOG_URL,HOST1_SEARXNG_URL,HOST1_WEB_SEARCH_API_KEY,HOST1_OLLAMA_EMBED_MODEL - lldap (
host1.conf) —HOST1_LLDAP_URL,HOST1_LLDAP_USER,HOST1_LLDAP_PASS - Abort Toggles (
master.conf) —SYS_WATCHDOG_ABORT_ON_ZFS_UNHEALTHY,SYS_WATCHDOG_ABORT_ON_PARITY,SYS_WATCHDOG_ABORT_ON_MOVER - Arr Sync (
master.conf) —ARR_SYNC_ENABLED,ARR_SYNC_BLOCKLIST,ARR_SYNC_CONNECT_TIMEOUT,ARR_SYNC_API_TIMEOUT,DOCKER_APPDATA_BASE,ARR_SYNC_LIDARR_PORT,ARR_SYNC_SONARR_PORT,ARR_SYNC_RADARR_PORT - Cache Roots (
master.conf) —VV_CACHE_ROOT,VV_CACHE_DIR,CONF_RAM_CACHE_DIR,ARR_CACHE_DIR,AI_TOKEN_CACHE_DIR,AI_JOB_DIR,DOCKER_JOB_DIR - Conf Backups (
master.conf) —CONF_BACKUP_RETAIN - Conf Sync (
master.conf) —CONF_SYNC_ENABLED - Critical Containers (
master.conf) —RW_CRITICAL_CONTAINERS - Download Webhook (
master.conf) —DOWNLOAD_WEBHOOK_ENABLED - GIT / REPO (
master.conf) —GITEA_CONTAINER,GITEA_REPO_PATH,GITEA_DOMAIN,TARGET_DIR,GITEA_SSH_KEY,SSH_PORT,GITEA_HTTP_PORT - HOST IDENTITIES (
master.conf) —HOST1,HOST2 - PCIe AER Quiet (
master.conf) —PCIE_QUIET_ENABLED - PER-HOST CONTAINER LISTS (
master.conf) —RW_ENABLED,RW_STATE_FILE - Remote Docker Daemon (
master.conf) —REMOTE_DOCKER_STRIKE_LIMIT - Remote Health Checks (
master.conf) —ROOTFS_WARN - SHARED HOST CONFIGURATION (
master.conf) —DATA_DIR,DB_DIR,STATE_DIR,AI_DATA_DIR,CACHE_BACKUP_DIR,LOG_ARCHIVE_DIR,BACKUP_DIR,CONF_BACKUP_DIR,PERSISTENT_CONF_CACHE,ARR_CACHE_BACKUP_DIR - State Files (
master.conf) —SYS_WATCHDOG_STATE_FILE,DOCKER_WATCHDOG_FAILED_FILE,DOCKER_WATCHDOG_INTENTIONAL_FILE,SYS_WATCHDOG_REBOOT_LOG,SYS_WATCHDOG_OOM_FILE - Thresholds (
master.conf) —SYS_WATCHDOG_ROOTFS_PCT,SYS_WATCHDOG_ROOTFS_CRITICAL_PCT,SYS_WATCHDOG_LOG_PCT,SYS_WATCHDOG_TMP_PCT,SYS_WATCHDOG_TMP_CRITICAL_PCT,SYS_WATCHDOG_ARC_PINNED_PCT,SYS_WATCHDOG_ARC_RELEASE_PCT,SYS_WATCHDOG_LOAD_MULTIPLIER,SYS_WATCHDOG_ZOMBIE_LIMIT,SYS_WATCHDOG_CPU_TEMP_MAX,SYS_WATCHDOG_FD_CRITICAL_PCT,SYS_WATCHDOG_RUNAWAY_CPU_PCT,SYS_WATCHDOG_RUNAWAY_STRIKES,SYS_WATCHDOG_MDSTAT_ERROR_LIMIT - Version Parity (
master.conf) —UNRAID_VERSION_MISMATCH_ACTION