storage

Ansible role that provisions my storage server.

4.7 KBJ2
arr-stack-compose.yml.j2
4.7 KB213 lines • plaintext
1# Arr Stack with Gluetun VPN Docker Compose Configuration
2# Generated by Ansible - DO NOT EDIT MANUALLY
3
4
5services:
6  gluetun:
7    image: {{ gluetun_image }}:{{ gluetun_version }}
8    container_name: gluetun
9    restart: unless-stopped
10    
11    # VPN Configuration
12    env_file:
13      - .env
14    
15    # Capabilities for VPN
16    cap_add:
17      - NET_ADMIN
18    
19    # Port Mapping for all Arr services
20    ports:
21      - "{{ sonarr_host_port }}:{{ sonarr_port }}"
22      - "{{ radarr_host_port }}:{{ radarr_port }}"
23      - "{{ prowlarr_host_port }}:{{ prowlarr_port }}"
24      - "{{ lazylibrarian_host_port }}:{{ lazylibrarian_port }}"
25      - "{{ jellyseer_host_port }}:{{ jellyseer_port }}"
26      - "{{ flaresolverr_host_port }}:{{ flaresolverr_port }}"
27      - "{{ qbittorrent_host_port }}:{{ qbittorrent_port }}"
28    
29    # Volume Mounts
30    volumes:
31      - {{ gluetun_config_dir }}:/gluetun
32    
33    # Network (isolated arr network)
34    networks:
35      - {{ arr_docker_network }}
36    
37    # Health Check
38    healthcheck:
39      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://www.google.com"]
40      interval: 30s
41      timeout: 10s
42      retries: 3
43      start_period: 60s
44
45{% if sonarr_enabled %}
46  sonarr:
47    image: {{ sonarr_image }}:{{ sonarr_version }}
48    container_name: sonarr
49    restart: unless-stopped
50    depends_on:
51      gluetun:
52        condition: service_healthy
53    
54    # Environment Configuration
55    env_file:
56      - .env
57    
58    # Use Gluetun network stack
59    network_mode: "service:gluetun"
60    
61    # Volume Mounts
62    volumes:
63      - {{ sonarr_config_dir }}:/config
64      - {{ sonarr_tv_dir }}:/tv
65      - {{ arr_downloads_dir }}:/downloads
66    
67{% endif %}
68
69{% if radarr_enabled %}
70  radarr:
71    image: {{ radarr_image }}:{{ radarr_version }}
72    container_name: radarr
73    restart: unless-stopped
74    depends_on:
75      gluetun:
76        condition: service_healthy
77    
78    # Environment Configuration
79    env_file:
80      - .env
81    
82    # Use Gluetun network stack
83    network_mode: "service:gluetun"
84    
85    # Volume Mounts
86    volumes:
87      - {{ radarr_config_dir }}:/config
88      - {{ radarr_movies_dir }}:/movies
89      - {{ arr_downloads_dir }}:/downloads
90    
91{% endif %}
92
93{% if prowlarr_enabled %}
94  prowlarr:
95    image: {{ prowlarr_image }}:{{ prowlarr_version }}
96    container_name: prowlarr
97    restart: unless-stopped
98    depends_on:
99      gluetun:
100        condition: service_healthy
101    
102    # Environment Configuration
103    env_file:
104      - .env
105    
106    # Use Gluetun network stack
107    network_mode: "service:gluetun"
108    
109    # Volume Mounts
110    volumes:
111      - {{ prowlarr_config_dir }}:/config
112
113{% endif %}
114
115{% if lazylibrarian_enabled %}
116  lazylibrarian:
117    image: linuxserver/lazylibrarian:latest
118    container_name: lazylibrarian
119    restart: unless-stopped
120    depends_on:
121      gluetun:
122        condition: service_healthy
123    
124    # Environment Configuration
125    env_file:
126      - .env
127    
128    # Use Gluetun network stack
129    network_mode: "service:gluetun"
130    
131    # Volume Mounts
132    volumes:
133      - {{ lazylibrarian_config_dir }}:/config
134      - {{ lazylibrarian_books_dir }}:/books
135      - {{ arr_downloads_dir }}:/downloads
136    
137{% endif %}
138
139{% if jellyseer_enabled %}
140  jellyseer:
141    image: {{ jellyseer_image }}:{{ jellyseer_version }}
142    container_name: jellyseer
143    restart: unless-stopped
144    
145    # Dependencies
146    depends_on:
147      gluetun:
148        condition: service_healthy
149    
150    # Environment Configuration
151    env_file:
152      - .env
153    
154    # Use Gluetun network stack
155    network_mode: "service:gluetun"
156    
157    # Volume Mounts
158    volumes:
159      - {{ jellyseer_config_dir }}:/config
160    
161{% endif %}
162
163{% if flaresolverr_enabled %}
164  flaresolverr:
165    image: {{ flaresolverr_image }}:{{ flaresolverr_version }}
166    container_name: flaresolverr
167    restart: unless-stopped
168    depends_on:
169      gluetun:
170        condition: service_healthy
171    
172    # Environment Configuration
173    env_file:
174      - .env
175    
176    # Use Gluetun network stack
177    network_mode: "service:gluetun"
178    
179    # Volume Mounts
180    volumes:
181      - {{ flaresolverr_config_dir }}:/app/config
182
183{% endif %}
184
185{% if qbittorrent_enabled %}
186  qbittorrent:
187    image: {{ qbittorrent_image }}:{{ qbittorrent_version }}
188    container_name: qbittorrent
189    restart: unless-stopped
190    depends_on:
191      gluetun:
192        condition: service_healthy
193    
194    # Environment Configuration
195    env_file:
196      - .env
197    
198    # Use Gluetun network stack
199    network_mode: "service:gluetun"
200    
201    # Volume Mounts
202    volumes:
203      - {{ qbittorrent_config_dir }}:/config
204      - {{ qbittorrent_downloads_dir }}:/downloads
205    
206{% endif %}
207
208networks:
209  {{ storage_docker_network }}:
210    external: true
211  {{ arr_docker_network }}:
212    external: true
213