configs/server-dockers/docker-compose.yml
server-dockers/docker-compose.ymlRaw
1#version: '3.8'
2
3#
4# More info: https://arnaucube.com/media-setup/
5#
6#
7# Usage
8# -----
9# - All commands from inside the same directory where this file is placed.
10# - Replace the `/mnt/usb` to your custom location, usually an external hard
11# drive.
12#
13# Before running: mount the external hard drive!!
14# > sudo mount /dev/sda /mnt/usb
15#
16# Run:
17# > sudo docker compose up -d
18#
19# Stop:
20# > sudo docker compose stop
21#
22# Remove containers (since the volumes are mapped to local directories, they
23# will persist):
24# > sudo docker compose down
25#
26#
27# Port of each service:
28# - jellyfin: 8096
29# - wallabag: 8098
30# - slskd: 8099
31# - metube: 8100
32# - sonarr: 8101
33# - prowlarr: 8102
34# - bazarr: 8103
35# - radarr: 8104
36# - qui: 8105
37# - qbittorrent: 8080
38# - homepage: 8000
39# - grafana: 3000
40
41services:
42 jellyfin:
43 image: jellyfin/jellyfin
44 container_name: jellyfin
45 ports:
46 - "8096:8096"
47 volumes:
48 - /mnt/usb/configurations/jellyfin:/config
49 - /mnt/usb:/media
50 restart: unless-stopped
51
52 wallabag:
53 image: wallabag/wallabag
54 container_name: wallabag
55 ports:
56 - "8098:80"
57 volumes:
58 - /mnt/usb/configurations/wallabag/data:/var/www/wallabag/data
59 - /mnt/usb/configurations/wallabag/images:/var/www/wallabag/web/assets/images
60 environment:
61 - SYMFONY__ENV__DOMAIN_NAME=http://192.168.1.155:8098
62 restart: unless-stopped
63
64 slskd:
65 image: slskd/slskd
66 container_name: slskd
67 ports:
68 - "8099:5030"
69 - "50300:50300"
70 volumes:
71 - /mnt/usb/configurations/slskd:/app
72 - /mnt/usb/audio/slskd-downloads:/downloads # isolate it in a subdir, since slskd removes arbitrary files on that dir
73 environment:
74 - SLSKD_REMOTE_CONFIGURATION=true
75 restart: unless-stopped
76
77 metube:
78 image: ghcr.io/alexta69/metube
79 container_name: metube
80 ports:
81 - "8100:8081"
82 volumes:
83 - /mnt/usb/audio/from-youtube:/downloads
84 restart: unless-stopped
85
86 sonarr:
87 image: lscr.io/linuxserver/sonarr:latest
88 container_name: sonarr
89 environment:
90 - PUID=1000
91 - PGID=1000
92 - TZ=Europe/Amsterdam
93 volumes:
94 - /mnt/usb/configurations/sonarr:/config
95 - /mnt/usb/torrent-downloads:/downloads
96 - /mnt/usb/shows:/data/shows
97 ports:
98 - 8101:8989
99 restart: unless-stopped
100
101 radarr:
102 image: lscr.io/linuxserver/radarr:latest
103 container_name: radarr
104 environment:
105 - PUID=1000
106 - PGID=1000
107 - TZ=Europe/Amsterdam
108 volumes:
109 - /mnt/usb/configurations/radarr:/config
110 - /mnt/usb/torrent-downloads:/downloads
111 - /mnt/usb/movies:/movies
112 ports:
113 - 8104:7878
114 restart: unless-stopped
115
116 bazarr:
117 image: lscr.io/linuxserver/bazarr:latest
118 container_name: bazarr
119 environment:
120 - PUID=1000
121 - PGID=1000
122 - TZ=Europe/Amsterdam
123 volumes:
124 - /mnt/usb/configurations/bazarr:/config
125 - /mnt/usb/shows:/data/shows
126 - /mnt/usb/movies:/movies
127 ports:
128 - 8103:6767
129 restart: unless-stopped
130
131 prowlarr:
132 container_name: prowlarr
133 image: ghcr.io/hotio/prowlarr
134 ports:
135 - "8102:9696"
136 environment:
137 - PUID=1000
138 - PGID=1000
139 - UMASK=002
140 - TZ=Europe/Amsterdam
141 volumes:
142 - /mnt/usb/configurations/prowlarr:/config
143
144 qbittorrent-nox:
145 image: qbittorrentofficial/qbittorrent-nox:latest
146 container_name: qbittorrent-nox
147 ports:
148 - "8080:8080"
149 - "6881:6881/tcp" # Torrent listening port
150 - "6881:6881/udp"
151 volumes:
152 - /mnt/usb/configurations/qbittorrent:/config
153 - /mnt/usb/torrent-downloads:/downloads
154 environment:
155 - QBT_LEGAL_NOTICE=confirm
156 - WEBUI_PORT=8080
157 restart: unless-stopped
158
159 qui:
160 image: ghcr.io/autobrr/qui:latest
161 container_name: qui
162 restart: unless-stopped
163 ports:
164 - "8105:7476"
165 volumes:
166 - ./qui:/config
167
168 homepage:
169 image: ghcr.io/gethomepage/homepage:latest
170 container_name: homepage
171 environment:
172 HOMEPAGE_ALLOWED_HOSTS: 192.168.1.155:8000 # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
173 sysctls:
174 - net.ipv6.conf.all.disable_ipv6=1
175 ports:
176 - 8000:3000
177 volumes:
178 - /mnt/usb/configurations/homepage:/app/config
179 restart: unless-stopped
180
181 # metrics related:
182 prometheus:
183 image: prom/prometheus:latest
184 container_name: prometheus
185 ports:
186 - "9090:9090"
187 volumes:
188 - ./prometheus.yml:/etc/prometheus/prometheus.yml
189 - prometheus_data:/prometheus
190 networks:
191 - monitoring
192 restart: unless-stopped
193
194 node-exporter:
195 image: prom/node-exporter:latest
196 container_name: node-exporter
197 ports:
198 - "9100:9100"
199 volumes:
200 - /:/host:ro
201 networks:
202 - monitoring
203 restart: unless-stopped
204
205 grafana:
206 image: grafana/grafana:latest
207 container_name: grafana
208 ports:
209 - "3000:3000"
210 environment:
211 - GF_SECURITY_ADMIN_PASSWORD=YOURPASSWORDHERE
212 volumes:
213 - grafana_data:/var/lib/grafana
214 networks:
215 - monitoring
216 depends_on:
217 - prometheus
218 restart: unless-stopped
219
220 # NOTE: better run homeassistant alone in the rpi as OS (not container),
221 # which has support for 'add-ons'.
222 # More info: https://www.home-assistant.io/installation/#about-installation-types
223
224networks:
225 monitoring:
226 driver: bridge
227
228volumes:
229 prometheus_data:
230 driver: local
231 grafana_data:
232 driver: local