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# - emby: 8097
30# - wallabag: 8098
31# - slskd: 8099
32# - metube: 8100
33# - sonarr: 8101
34# - prowlarr: 8102
35# - bazarr: 8103
36# - radarr: 8104
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 emby:
53 image: emby/embyserver # in rpi: emby/embyserver_arm64v8
54 container_name: emby
55 ports:
56 - "8097:8096"
57 volumes:
58 - /mnt/usb/configurations/emby:/config
59 - /mnt/usb:/media
60 restart: unless-stopped
61
62 wallabag:
63 image: wallabag/wallabag
64 container_name: wallabag
65 ports:
66 - "8098:80"
67 volumes:
68 - /mnt/usb/configurations/wallabag/data:/var/www/wallabag/data
69 - /mnt/usb/configurations/wallabag/images:/var/www/wallabag/web/assets/images
70 environment:
71 - SYMFONY__ENV__DOMAIN_NAME=http://192.168.1.155:8098
72 restart: unless-stopped
73
74 slskd:
75 image: slskd/slskd
76 container_name: slskd
77 ports:
78 - "8099:5030"
79 - "50300:50300"
80 volumes:
81 - /mnt/usb/configurations/slskd:/app
82 - /mnt/usb/audio/slskd-downloads:/downloads # isolate it in a subdir, since slskd removes arbitrary files on that dir
83 environment:
84 - SLSKD_REMOTE_CONFIGURATION=true
85 restart: unless-stopped
86
87 metube:
88 image: ghcr.io/alexta69/metube
89 container_name: metube
90 ports:
91 - "8100:8081"
92 volumes:
93 - /mnt/usb/audio/from-youtube:/downloads
94 restart: unless-stopped
95
96 sonarr:
97 image: lscr.io/linuxserver/sonarr:latest
98 container_name: sonarr
99 environment:
100 - PUID=1000
101 - PGID=1000
102 - TZ=Europe/Amsterdam
103 volumes:
104 - /mnt/usb/configurations/sonarr:/config
105 - /mnt/usb/torrent-downloads:/downloads
106 - /mnt/usb/shows:/data/shows
107 ports:
108 - 8101:8989
109 restart: unless-stopped
110
111 radarr:
112 image: lscr.io/linuxserver/radarr:latest
113 container_name: radarr
114 environment:
115 - PUID=1000
116 - PGID=1000
117 - TZ=Europe/Amsterdam
118 volumes:
119 - /mnt/usb/configurations/radarr:/config
120 - /mnt/usb/torrent-downloads:/downloads
121 - /mnt/usb/movies:/movies
122 ports:
123 - 8104:7878
124 restart: unless-stopped
125
126 bazarr:
127 image: lscr.io/linuxserver/bazarr:latest
128 container_name: bazarr
129 environment:
130 - PUID=1000
131 - PGID=1000
132 - TZ=Europe/Amsterdam
133 volumes:
134 - /mnt/usb/configurations/bazarr:/config
135 - /mnt/usb/shows:/data/shows
136 - /mnt/usb/movies:/movies
137 ports:
138 - 8103:6767
139 restart: unless-stopped
140
141 prowlarr:
142 container_name: prowlarr
143 image: ghcr.io/hotio/prowlarr
144 ports:
145 - "8102:9696"
146 environment:
147 - PUID=1000
148 - PGID=1000
149 - UMASK=002
150 - TZ=Europe/Amsterdam
151 volumes:
152 - /mnt/usb/configurations/prowlarr:/config
153
154 qbittorrent-nox:
155 image: qbittorrentofficial/qbittorrent-nox:latest
156 container_name: qbittorrent-nox
157 ports:
158 - "8080:8080"
159 - "6881:6881/tcp" # Torrent listening port
160 - "6881:6881/udp"
161 volumes:
162 - /mnt/usb/configurations/qbittorrent:/config
163 - /mnt/usb/torrent-downloads:/downloads
164 environment:
165 - QBT_LEGAL_NOTICE=confirm
166 - WEBUI_PORT=8080
167 restart: unless-stopped
168
169 homepage:
170 image: ghcr.io/gethomepage/homepage:latest
171 container_name: homepage
172 environment:
173 HOMEPAGE_ALLOWED_HOSTS: 192.168.1.155:8000 # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
174 sysctls:
175 - net.ipv6.conf.all.disable_ipv6=1
176 ports:
177 - 8000:3000
178 volumes:
179 - /mnt/usb/configurations/homepage:/app/config
180 restart: unless-stopped
181
182 # metrics related:
183 prometheus:
184 image: prom/prometheus:latest
185 container_name: prometheus
186 ports:
187 - "9090:9090"
188 volumes:
189 - ./prometheus.yml:/etc/prometheus/prometheus.yml
190 - prometheus_data:/prometheus
191 networks:
192 - monitoring
193 restart: unless-stopped
194
195 node-exporter:
196 image: prom/node-exporter:latest
197 container_name: node-exporter
198 ports:
199 - "9100:9100"
200 volumes:
201 - /:/host:ro
202 networks:
203 - monitoring
204 restart: unless-stopped
205
206 grafana:
207 image: grafana/grafana:latest
208 container_name: grafana
209 ports:
210 - "3000:3000"
211 environment:
212 - GF_SECURITY_ADMIN_PASSWORD=YOURPASSWORDHERE
213 volumes:
214 - grafana_data:/var/lib/grafana
215 networks:
216 - monitoring
217 depends_on:
218 - prometheus
219 restart: unless-stopped
220
221 # NOTE: better run homeassistant alone in the rpi as OS (not container),
222 # which has support for 'add-ons'.
223 # More info: https://www.home-assistant.io/installation/#about-installation-types
224
225
226networks:
227 monitoring:
228 driver: bridge
229
230volumes:
231 prometheus_data:
232 driver: local
233 grafana_data:
234 driver: local