/
/
/
This repo is destined for my server automations and setup.
1---
2# Storage Servers Group Variables
3# Applied to all servers in the storage_servers group
4
5# ==============================================================================
6# STORAGE DEFAULTS
7# ==============================================================================
8storage_enabled: true
9backup_enabled: true
10
11# ==============================================================================
12# RAID CONFIGURATION
13# ==============================================================================
14storage_raid_arrays:
15 - name: "md0"
16 device: "/dev/md0"
17 mount_point: "/mnt/rstorage"
18 filesystem: "ext4"
19
20# ==============================================================================
21# COMMON STORAGE CONFIGURATION
22# ==============================================================================
23# Standard storage paths
24storage_base_path: "/mnt/rstorage"
25storage_docker_dir: "/docker"
26
27# User/Group defaults (ansible:users for group sharing)
28storage_uid: 1000
29storage_gid: 100
30
31# ==============================================================================
32# DEFAULT SERVICE ENABLEMENT
33# ==============================================================================
34# Enable all services by default (disable in host_vars if not needed)
35jellyfin_enabled: true
36arr_stack_enabled: true
37arr_vpn_enabled: true
38calibre_enabled: true
39restic_backup_server_enabled: true
40nextcloud_enabled: true
41gdu_enabled: true
42
43# Individual Arr services
44sonarr_enabled: true
45radarr_enabled: true
46prowlarr_enabled: true
47lazylibrarian_enabled: true
48bazarr_enabled: true
49jellyseer_enabled: true
50flaresolverr_enabled: true
51qbittorrent_enabled: true
52gluetun_enabled: "{{ arr_vpn_enabled }}"
53
54# ==============================================================================
55# PERFORMANCE DEFAULTS
56# ==============================================================================
57# Conservative defaults - override based on hardware capacity
58default_memory_limit: "2g"
59default_cpu_limit: "2"
60
61# Jellyfin gets more resources (media transcoding intensive)
62jellyfin_memory_limit: "4g"
63jellyfin_cpu_limit: "4"
64
65# Arr stack typically lightweight
66arr_memory_limit: "1g"
67arr_cpu_limit: "1"
68
69# ==============================================================================
70# NETWORK CONFIGURATION
71# ==============================================================================
72storage_docker_network: "storage-network"
73
74# Health check settings
75health_check_enabled: true
76health_check_interval: "30s"
77health_check_timeout: "10s"
78health_check_retries: 3
79
80# ==============================================================================
81# BACKUP CONFIGURATION
82# ==============================================================================
83# System-level backup settings
84backup_retention_days: 90
85backup_schedule: "0 2 * * *" # 2 AM daily
86backup_path: "{{ storage_base_path }}/system-backups"
87
88# Service configuration backup
89backup_jellyfin_config: true
90backup_arr_configs: true
91backup_calibre_library: true
92
93# ==============================================================================
94# VPN DEFAULTS
95# ==============================================================================
96# Default VPN settings (credentials must be in vault)
97vpn_server_countries: "Netherlands,Switzerland"
98vpn_server_regions: "Europe"
99
100# ==============================================================================
101# SECURITY SETTINGS
102# ==============================================================================
103# System optimization for storage servers
104system_swappiness: 1 # Minimize swap usage
105
106# ==============================================================================
107# PORT ASSIGNMENTS
108# ==============================================================================
109# Standard ports - change in host_vars if conflicts exist
110jellyfin_host_port: 8096
111
112sonarr_host_port: 8989
113radarr_host_port: 7878
114prowlarr_host_port: 9696
115lazylibrarian_host_port: 5299
116
117restic_backup_host_port: 8000
118nextcloud_host_port: 8443
119gdu_host_port: 8098
120
121# ==============================================================================
122# DIRECTORY STRUCTURE
123# ==============================================================================
124# These will be created automatically
125media_directories:
126 - "{{ storage_base_path }}/media"
127 - "{{ storage_base_path }}/media/movies"
128 - "{{ storage_base_path }}/media/shows"
129 - "{{ storage_base_path }}/media/books"
130 - "{{ storage_base_path }}/downloads"
131 - "{{ storage_base_path }}/backups"
132
133 # D&D session agent. Kept out of media/music on purpose: that path is
134 # indexed by Navidrome and untagged ambience would fill the library with
135 # "Unknown Artist" entries.
136 - "{{ storage_base_path }}/media/dnd"
137 - "{{ storage_base_path }}/media/dnd/ambience" # atmosphere beds
138 - "{{ storage_base_path }}/media/dnd/effects" # one-shot sound effects
139 - "{{ storage_base_path }}/media/dnd/themes" # session open/close
140 # Raw per-speaker audio. The live pipeline needs tuning against real
141 # sessions, and speaker separation within the shared table track can only
142 # happen afterwards - without this, none of that is recoverable.
143 - "{{ storage_base_path }}/media/dnd/recordings"
144 - "{{ storage_base_path }}/media/dnd/transcripts"
145 - "{{ storage_base_path }}/media/dnd/battlemaps" # snapshots from Frigate
146 - "{{ storage_base_path }}/media/dnd/artwork" # generated artwork
147 # The campaign knowledge base. characters/ is canon and hand-written; the
148 # agent reads it and never writes it.
149 - "{{ storage_base_path }}/media/dnd/campaign"
150 - "{{ storage_base_path }}/media/dnd/campaign/characters"
151 - "{{ storage_base_path }}/media/dnd/campaign/sessions"
152 - "{{ storage_base_path }}/media/dnd/campaign/world"
153
154# ==============================================================================
155# USAGE NOTES
156# ==============================================================================
157# This file provides sensible defaults for all storage servers.
158#
159# To customize individual servers:
160# 1. Copy host_vars/storage.yml.example to host_vars/[hostname].yml
161# 2. Override any settings specific to that server
162# 3. Configure vault variables for VPN and authentication
163#
164# To deploy storage services:
165# ansible-playbook -i inventory/hosts storage.yml --limit storage_servers
166#
167# Or use the main playbook:
168# ansible-playbook -i inventory/hosts site.yml --limit storage_servers --tags "core,storage"
169