/
/
/
Ansible role that provisions my storage server.
1---
2# Storage Services Role Defaults
3# Comprehensive media automation and backup configuration
4
5# ==============================================================================
6# GENERAL SETTINGS
7# ==============================================================================
8storage_enabled: true
9storage_docker_dir: "/docker"
10storage_base_path: "/mnt/rstorage"
11storage_user: "{{ ansible_user }}"
12storage_group: "{{ ansible_user }}"
13storage_uid: 1000
14storage_gid: 1000
15
16# Timezone configuration
17storage_timezone: "America/New_York"
18
19# Docker network for storage services
20storage_docker_network: "storage-network"
21
22# ==============================================================================
23# SERVICE CONFIGURATIONS
24# ==============================================================================
25
26# Jellyfin Media Server
27jellyfin_enabled: true
28jellyfin_port: 8096
29jellyfin_host_port: 8096
30jellyfin_data_dir: "{{ storage_docker_dir }}/jellyfin"
31jellyfin_config_dir: "{{ jellyfin_data_dir }}/config"
32jellyfin_cache_dir: "{{ jellyfin_data_dir }}/cache"
33jellyfin_media_dir: "{{ storage_base_path }}/media"
34
35# Arr Stack Configuration
36arr_stack_enabled: true
37arr_vpn_enabled: true
38arr_downloads_dir: "{{ storage_base_path }}/downloads"
39arr_config_dir: "{{ storage_docker_dir }}/arr-stack"
40
41# Sonarr (TV Shows)
42sonarr_enabled: true
43sonarr_port: 8989
44sonarr_host_port: 8989
45sonarr_config_dir: "{{ arr_config_dir }}/sonarr"
46sonarr_tv_dir: "{{ storage_base_path }}/media/tv"
47
48# Radarr (Movies)
49radarr_enabled: true
50radarr_port: 7878
51radarr_host_port: 7878
52radarr_config_dir: "{{ arr_config_dir }}/radarr"
53radarr_movies_dir: "{{ storage_base_path }}/media/movies"
54
55# Prowlarr (Indexers)
56prowlarr_enabled: true
57prowlarr_port: 9696
58prowlarr_host_port: 9696
59prowlarr_config_dir: "{{ arr_config_dir }}/prowlarr"
60
61# Readarr (Books)
62readarr_enabled: true
63readarr_port: 8787
64readarr_host_port: 8787
65readarr_config_dir: "{{ arr_config_dir }}/readarr"
66readarr_books_dir: "{{ storage_base_path }}/media/books"
67
68# Gluetun VPN for Arr Stack
69gluetun_enabled: "{{ arr_vpn_enabled }}"
70gluetun_config_dir: "{{ arr_config_dir }}/gluetun"
71
72# VPN Provider Settings (from vault)
73vpn_service_provider: "{{ vault_storage.vpn_service_provider | default('') }}"
74vpn_server_countries: "Netherlands,Switzerland"
75vpn_server_regions: "Europe"
76
77# Calibre Stack Configuration
78calibre_enabled: true
79calibre_config_dir: "{{ storage_docker_dir }}/calibre"
80calibre_library_dir: "{{ storage_base_path }}/media/books"
81
82# Calibre Server
83calibre_server_enabled: true
84calibre_server_port: 8083
85calibre_server_host_port: 8083
86calibre_server_config_dir: "{{ calibre_config_dir }}/server"
87
88# Calibre-Web
89calibre_web_enabled: true
90calibre_web_port: 8084
91calibre_web_host_port: 8084
92calibre_web_config_dir: "{{ calibre_config_dir }}/web"
93
94# ==============================================================================
95# RESTIC BACKUP SERVER CONFIGURATION
96# ==============================================================================
97restic_backup_server_enabled: true
98restic_backup_port: 8000
99restic_backup_host_port: 8000
100restic_backup_config_dir: "{{ storage_docker_dir }}/restic-server"
101restic_backup_data_dir: "{{ storage_base_path }}/backups"
102restic_backup_htpasswd_file: "{{ restic_backup_config_dir }}/.htpasswd"
103
104# Restic server authentication (from vault)
105restic_backup_username: "{{ vault_storage.restic_backup_username | default('') }}"
106restic_backup_password: "{{ vault_storage.restic_backup_password | default('') }}"
107
108# ==============================================================================
109# VOLUME MOUNTS AND PATHS
110# ==============================================================================
111
112# Common media directories
113media_directories:
114 - "{{ storage_base_path }}/media"
115 - "{{ storage_base_path }}/media/movies"
116 - "{{ storage_base_path }}/media/tv"
117 - "{{ storage_base_path }}/media/books"
118 - "{{ storage_base_path }}/media/audiobooks"
119 - "{{ storage_base_path }}/media/music"
120 - "{{ storage_base_path }}/downloads"
121 - "{{ storage_base_path }}/downloads/complete"
122 - "{{ storage_base_path }}/downloads/incomplete"
123 - "{{ storage_base_path }}/backups"
124
125# Docker configuration directories
126docker_config_directories:
127 - "{{ storage_docker_dir }}"
128 - "{{ jellyfin_data_dir }}"
129 - "{{ jellyfin_config_dir }}"
130 - "{{ jellyfin_cache_dir }}"
131 - "{{ arr_config_dir }}"
132 - "{{ sonarr_config_dir }}"
133 - "{{ radarr_config_dir }}"
134 - "{{ prowlarr_config_dir }}"
135 - "{{ readarr_config_dir }}"
136 - "{{ gluetun_config_dir }}"
137 - "{{ calibre_config_dir }}"
138 - "{{ calibre_server_config_dir }}"
139 - "{{ calibre_web_config_dir }}"
140 - "{{ restic_backup_config_dir }}"
141
142# ==============================================================================
143# SECURITY AND ACCESS SETTINGS
144# ==============================================================================
145
146# User credentials (from vault)
147jellyfin_admin_username: "{{ vault_storage.jellyfin_admin_username | default('') }}"
148jellyfin_admin_password: "{{ vault_storage.jellyfin_admin_password | default('') }}"
149calibre_web_admin_username: "{{ vault_storage.calibre_web_admin_username | default('') }}"
150calibre_web_admin_password: "{{ vault_storage.calibre_web_admin_password | default('') }}"
151
152# ==============================================================================
153# PERFORMANCE TUNING
154# ==============================================================================
155
156# Docker resource limits (can be overridden per service)
157default_memory_limit: "2g"
158default_cpu_limit: "2"
159
160# Jellyfin specific limits (media transcoding intensive)
161jellyfin_memory_limit: "4g"
162jellyfin_cpu_limit: "4"
163
164# Arr stack limits (moderate usage)
165arr_memory_limit: "1g"
166arr_cpu_limit: "1"
167
168# ==============================================================================
169# MONITORING AND HEALTH CHECKS
170# ==============================================================================
171health_check_enabled: true
172health_check_interval: "30s"
173health_check_timeout: "10s"
174health_check_retries: 3
175
176# ==============================================================================
177# BACKUP CONFIGURATION
178# ==============================================================================
179backup_jellyfin_config: true
180backup_arr_configs: true
181backup_calibre_library: true
182backup_retention_days: 30
183backup_schedule: "0 3 * * *" # 3 AM daily