Files
Varaverk/Master.conf
T

168 lines
6.0 KiB
Bash

#!/bin/bash
# ----------------------------------------------------------------------------------------------
# ---------------------------- Master Variables for unRAID scripts -----------------------------
# ----------------------------------------------------------------------------------------------
# ----------------------- Host Configuration --------------------
# List the Hostnames of both servers
HOST1="unRAID-Gmer4Lfe"
HOST2="unRAID-Jayred365"
# Assign SSH keys for each host pair (adjust paths as needed) HOST1 from above
# Must have its key added to HOST1_SSH_Key same applies for HOST2
HOST1_SSH_KEY="/root/.ssh/Gmer4Lfe-rsync-key"
HOST2_SSH_KEY="/root/.ssh/Jayred365-rsync-key"
# -------------------------- Logging ----------------------------
ENABLE_LOGGING=true # false = only echo user-facing messages
# ------------------ Git, Pull & Execute Script -----------------
REPO_SSH="git@192.168.50.2:FailedProxy/Unraid_Scripts.git"
TARGET_DIR="/mnt/user/appdata/unraid_scripts"
GITEA_SSH_KEY="/root/.ssh/id_gitea_rsync"
SSH_PORT=221
# -------------------Rsync Script Defaults-----------------------
# These are the fallback values used when no matching profile is found.
# Any share whose directory basename does not match a profile key below
# will use these globals for all rsync behaviour.
BW_LIMIT=12500
# Retry logic
RETRY_COUNT=3
# Sleep between retries (seconds)
SLEEP=300
# Container start/stop/restart before and after rsync
CRITICAL_CONTAINER_NAMES=()
# Containers that need delayed before starting
DELAYED_CONTAINERS=()
# Delay in seconds between starting containers, useful for things like Authelia
CONTAINER_DELAY=5
# Directories to exclude during transfer
EXCLUDE_DIRS=()
# Default global rsync options
DEFAULT_RSYNC_OPTS=(-av --info=progress2 --human-readable --bwlimit="$BW_LIMIT" --delete --inplace --no-whole-file)
# ------------------- Remote Health Checks ----------------------
# Abort if remote rootfs usage is at or above this percentage.
# Protects against rsync writing to rootfs when the remote array is down or drives are missing.
# Recommended: 75 — gives headroom before the server becomes unstable
ROOTFS_WARN=75
# ------------------- Daily Sync Shares -------------------------
# Shares synced once daily by Orchestrators/daily_sync.sh
# Add or remove paths here to manage what gets synced.
# These shares have no profile entry and fall through to DEFAULT_RSYNC_OPTS above.
DAILY_SYNC_SHARES=(
/mnt/user/Anime_Movies-Old
/mnt/user/Anime_Shows-Old
/mnt/user/Anime_Shows
/mnt/user/Books
/mnt/user/Intros
/mnt/user/Kids_Movies
/mnt/user/Kids_Tv_Shows
/mnt/user/Movies
/mnt/user/Music_Videos
/mnt/user/Nextcloud
/mnt/user/stand-up_comedy
/mnt/user/Tv_Shows
)
# ------------------- unRAID essentail scripts ------------------
# unRAID reboot script user warning time (seconds)
REBOOT_SLEEP=300
# unRAID mover stop script timeout (seconds)
MOVER_STOP_TIMEOUT=300
# docker_syslog_filter.sh filter file path
FILTER_FILE="/etc/rsyslog.d/ignore-docker-veth.conf"
# php_fpm_max_children.sh php-fpm config file path
PHP_CONF="/etc/php-fpm.d/www.conf"
# php_fpm_max_children.sh max children value
PHP_MAX_CHILDREN=250
# --------------------- Profile System -------------------------
# Profiles are matched by directory basename (lowercased).
# Example: /mnt/user/appdata-Failover/Arrs_Stack → profile key = arrs_stack
#
# How fallthrough works:
# - If a key exists in a profile array, that value is used
# - If a key is missing, the global default above is used instead
# - Shares in DAILY_SYNC_SHARES have no profile and always use globals
#
# To add a new profile:
# 1. Add a key to each array below with your chosen profile name
# 2. Call rsync.sh with a directory whose basename matches that key
# 3. Any array you omit will fall back to its global default
#
# Note: PROFILE_RSYNC_OPTS does NOT inherit from DEFAULT_RSYNC_OPTS —
# if you define it for a profile you must list all desired options explicitly
# SPACE-SEPARATED STRINGS
declare -A PROFILE_RSYNC_OPTS=(
[arrs_stack]="-av --info=progress2 --human-readable --bwlimit=$BW_LIMIT --delete --inplace"
[critical-data]="-av --human-readable --bwlimit=$BW_LIMIT --delete"
[gmer4lfe]="-av --info=progress2 --bwlimit=$BW_LIMIT"
[important-data]="-av --human-readable --bwlimit=$BW_LIMIT"
[emby]="-av --human-readable --bwlimit=$BW_LIMIT"
)
declare -A PROFILE_BW_LIMIT=(
[arrs_stack]=5000
[critical-data]=9500
[gmer4lfe]=8000
[important-data]=9500
[emby]=8000
)
declare -A PROFILE_RETRY_COUNT=(
[arrs_stack]=3
[critical-data]=3
[gmer4lfe]=3
[important-data]=3
[emby]=3
)
declare -A PROFILE_SLEEP=(
[arrs_stack]=300
[critical-data]=300
[gmer4lfe]=300
[important-data]=300
[emby]=300
)
# SPACE-SEPARATED STRINGS
declare -A PROFILE_CRITICAL_CONTAINER_NAMES=(
[arrs_stack]="Sonarr Lidarr Readarr Radarr Prowlarr Bazarr Pinchflat"
[critical-data]="Mariadb-Authelia Redis-Authelia Lldap-Gmer4Lfe NginxProxyManager Authelia"
[gmer4lfe]="Organizrv2-Gmer4Lfe UptimeKuma-Gmer4Lfe VaultWarden-Gmer4Lfe"
[important-data]="Postgres-NextCloud NextCloud"
[emby]=""
)
# SPACE-SEPARATED STRINGS — containers that need a delay before starting
declare -A PROFILE_DELAYED_CONTAINERS=(
[arrs_stack]=""
[critical-data]="Authelia"
[gmer4lfe]=""
[important-data]="NextCloud"
[emby]=""
)
declare -A PROFILE_CONTAINER_DELAY=(
[arrs_stack]=5
[critical-data]=10
[gmer4lfe]=5
[important-data]=10
[emby]=5
)
# SPACE-SEPARATED STRINGS
declare -A PROFILE_EXCLUDE_DIRS=(
[arrs_stack]="logs *.tmp"
[critical-data]="logs *.tmp"
[gmer4lfe]="logs *.tmp"
[important-data]="logs *.tmp"
[emby]="logs *.tmp"
)
#-----------------------------------------------------------------------------------------------
#---------------------- End Of User Variables, Please adjust above as needed -------------------
#-----------------------------------------------------------------------------------------------