/
/
/
Ansible role that provisions my storage server.
1=========================================================
2STORAGE SERVICES ACCESS SUMMARY
3=========================================================
4Generated: {{ ansible_date_time.iso8601 }}
5Server: {{ inventory_hostname }} ({{ ansible_default_ipv4.address }})
6Storage Path: {{ storage_base_path }}
7Docker Path: {{ storage_docker_dir }}
8
9=========================================================
10SERVICE ACCESS URLS
11=========================================================
12
13{% if jellyfin_enabled %}
14JELLYFIN MEDIA SERVER
15URL: http://{{ ansible_default_ipv4.address }}:{{ jellyfin_host_port }}
16Config: {{ jellyfin_config_dir }}
17Media: {{ jellyfin_media_dir }}
18
19{% endif %}
20{% if arr_stack_enabled %}
21MEDIA AUTOMATION (ARR STACK)
22{% if sonarr_enabled %}
23Sonarr (TV Shows): http://{{ ansible_default_ipv4.address }}:{{ sonarr_host_port }}
24{% endif %}
25{% if radarr_enabled %}
26Radarr (Movies): http://{{ ansible_default_ipv4.address }}:{{ radarr_host_port }}
27{% endif %}
28{% if prowlarr_enabled %}
29Prowlarr (Indexers): http://{{ ansible_default_ipv4.address }}:{{ prowlarr_host_port }}
30{% endif %}
31{% if lazylibrarian_enabled %}
32LazyLibrarian (Books): http://{{ ansible_default_ipv4.address }}:{{ lazylibrarian_host_port }}
33{% endif %}
34{% if lidarr_enabled %}
35Lidarr (Music): http://{{ ansible_default_ipv4.address }}:{{ lidarr_host_port }}
36{% endif %}
37{% if bazarr_enabled %}
38Bazarr (Subtitles): http://{{ ansible_default_ipv4.address }}:{{ bazarr_host_port }}
39{% endif %}
40{% if jellyseer_enabled %}
41Jellyseer (Requests): http://{{ ansible_default_ipv4.address }}:{{ jellyseer_host_port }}
42{% endif %}
43{% if flaresolverr_enabled %}
44Flaresolverr (Cloudflare): http://{{ ansible_default_ipv4.address }}:{{ flaresolverr_host_port }}
45{% endif %}
46{% if qbittorrent_enabled %}
47qBittorrent: http://{{ ansible_default_ipv4.address }}:{{ qbittorrent_host_port }}
48{% endif %}
49{% if cleanuparr_enabled %}
50Cleanuparr: http://{{ ansible_default_ipv4.address }}:{{ cleanuparr_host_port }}
51{% endif %}
52
53VPN Status: {{ 'Enabled (Gluetun)' if gluetun_enabled else 'Disabled' }}
54Downloads: {{ arr_downloads_dir }}
55Config: {{ arr_config_dir }}
56
57{% endif %}
58{% if calibre_enabled %}
59EBOOK MANAGEMENT
60{% if calibre_server_enabled %}
61Calibre Server: http://{{ ansible_default_ipv4.address }}:{{ calibre_desktop_gui_host_port }}
62{% endif %}
63{% if calibre_web_enabled %}
64Calibre-Web: http://{{ ansible_default_ipv4.address }}:{{ calibre_web_host_port }}
65{% endif %}
66Library: {{ calibre_library_dir }}
67Config: {{ calibre_config_dir }}
68
69{% endif %}
70{% if navidrome_enabled %}
71NAVIDROME
72URL: http://{{ ansible_default_ipv4.address }}:{{ navidrome_host_port }}
73Config: {{ navidrome_config_dir }}
74Music: {{ navidrome_music_dir }}
75
76{% endif %}
77{% if gdu_enabled %}
78GDU DISK USAGE ANALYZER
79URL: http://{{ gdu_web_hostname }}:{{ gdu_host_port }}
80Scanning: {{ gdu_scan_dir }} (read-only, deletion disabled)
81Rescan: cd {{ gdu_config_dir }} && docker compose restart
82Config: {{ gdu_config_dir }}
83
84{% endif %}
85{% if nextcloud_enabled %}
86NEXTCLOUD
87URL: http://{{ ansible_default_ipv4.address }}:{{ nextcloud_host_port }}
88Config: {{ nextcloud_config_dir }}
89Data: {{ nextcloud_data_dir }}
90
91{% endif %}
92{% if restic_backup_server_enabled %}
93BACKUP SERVER
94Restic Server: http://{{ ansible_default_ipv4.address }}:{{ restic_backup_host_port }}
95Repository Path: {{ restic_backup_data_dir }}
96Config: {{ restic_backup_config_dir }}
97
98{% endif %}
99=========================================================
100DIRECTORY STRUCTURE
101=========================================================
102
103Storage Base: {{ storage_base_path }}
104|- media/
105| |- movies/ # Movie files for Radarr/Jellyfin
106| |- shows/ # TV show files for Sonarr/Jellyfin
107| |- books/ # Ebook library for LazyLibrarian/Calibre
108| |- music/ # Music library for Lidarr/Navidrome
109|- downloads/ # Download client destination
110|- backups/ # Restic backup repository data
111{% if nextcloud_enabled %}
112|- nextcloud/ # Nextcloud user data
113{% endif %}
114
115Docker Configs: {{ storage_docker_dir }}
116|- jellyfin/ # Jellyfin configuration
117|- media-automation/ # All Arr services + Gluetun VPN
118|- calibre/ # Calibre Server + Web configs
119|- navidrome/ # Navidrome configuration
120{% if gdu_enabled %}
121|- gdu/ # gdu disk usage web UI
122{% endif %}
123{% if nextcloud_enabled %}
124|- nextcloud/ # Nextcloud + MariaDB + Redis
125{% endif %}
126|- restic-server/ # Backup server configuration
127
128=========================================================
129MAINTENANCE COMMANDS
130=========================================================
131
132Service Logs:
133cd {{ jellyfin_data_dir }} && docker compose logs -f
134cd {{ arr_config_dir }} && docker compose logs -f
135cd {{ calibre_config_dir }} && docker compose logs -f
136cd {{ navidrome_config_dir }} && docker compose logs -f
137{% if gdu_enabled %}
138cd {{ gdu_config_dir }} && docker compose logs -f
139{% endif %}
140{% if nextcloud_enabled %}
141cd {{ nextcloud_config_dir }} && docker compose logs -f
142{% endif %}
143cd {{ restic_backup_config_dir }} && docker compose logs -f
144
145Resource Monitoring:
146docker stats
147df -h {{ storage_base_path }}
148cat /proc/mdstat
149
150=========================================================
151