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# - qbittorrent: 8080
34# - homepage: 8000
35# - grafana: 3000
36
37services:
38 jellyfin:
39 image: jellyfin/jellyfin
40 container_name: jellyfin
41 ports:
42 - "8096:8096"
43 volumes:
44 - /mnt/usb/configurations/jellyfin:/config
45 - /mnt/usb:/media
46 restart: unless-stopped
47
48 emby:
49 image: emby/embyserver # in rpi: emby/embyserver_arm64v8
50 container_name: emby
51 ports:
52 - "8097:8096"
53 volumes:
54 - /mnt/usb/configurations/emby:/config
55 - /mnt/usb:/media
56 restart: unless-stopped
57
58 wallabag:
59 image: wallabag/wallabag
60 container_name: wallabag
61 ports:
62 - "8098:80"
63 volumes:
64 - /mnt/usb/configurations/wallabag/data:/var/www/wallabag/data
65 - /mnt/usb/configurations/wallabag/images:/var/www/wallabag/web/assets/images
66 environment:
67 - SYMFONY__ENV__DOMAIN_NAME=http://192.168.1.155:8098
68 restart: unless-stopped
69
70 slskd:
71 image: slskd/slskd
72 container_name: slskd
73 ports:
74 - "8099:5030"
75 - "50300:50300"
76 volumes:
77 - /mnt/usb/configurations/slskd:/app
78 - /mnt/usb/audio/slskd-downloads:/downloads # isolate it in a subdir, since slskd removes arbitrary files on that dir
79 environment:
80 - SLSKD_REMOTE_CONFIGURATION=true
81 restart: unless-stopped
82
83 metube:
84 image: ghcr.io/alexta69/metube
85 container_name: metube
86 ports:
87 - "8100:8081"
88 volumes:
89 - /mnt/usb/audio/from-youtube:/downloads
90 restart: unless-stopped
91
92 qbittorrent-nox:
93 image: qbittorrentofficial/qbittorrent-nox:latest
94 container_name: qbittorrent-nox
95 ports:
96 - "8080:8080"
97 - "6881:6881/tcp" # Torrent listening port
98 - "6881:6881/udp"
99 volumes:
100 - /mnt/usb/configurations/qbittorrent:/config
101 - /mnt/usb:/downloads
102 environment:
103 - QBT_LEGAL_NOTICE=confirm
104 - WEBUI_PORT=8080
105 restart: unless-stopped
106
107 homepage:
108 image: ghcr.io/gethomepage/homepage:latest
109 container_name: homepage
110 environment:
111 HOMEPAGE_ALLOWED_HOSTS: 192.168.1.155:8000 # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
112 sysctls:
113 - net.ipv6.conf.all.disable_ipv6=1
114 ports:
115 - 8000:3000
116 volumes:
117 - /mnt/usb/configurations/homepage:/app/config
118 restart: unless-stopped
119
120 # metrics related:
121 prometheus:
122 image: prom/prometheus:latest
123 container_name: prometheus
124 ports:
125 - "9090:9090"
126 volumes:
127 - ./prometheus.yml:/etc/prometheus/prometheus.yml
128 - prometheus_data:/prometheus
129 networks:
130 - monitoring
131 restart: unless-stopped
132
133 node-exporter:
134 image: prom/node-exporter:latest
135 container_name: node-exporter
136 ports:
137 - "9100:9100"
138 volumes:
139 - /:/host:ro
140 networks:
141 - monitoring
142 restart: unless-stopped
143
144 grafana:
145 image: grafana/grafana:latest
146 container_name: grafana
147 ports:
148 - "3000:3000"
149 environment:
150 - GF_SECURITY_ADMIN_PASSWORD=YOUR_PASSWORD_HERE
151 volumes:
152 - grafana_data:/var/lib/grafana
153 networks:
154 - monitoring
155 depends_on:
156 - prometheus
157 restart: unless-stopped
158
159networks:
160 monitoring:
161 driver: bridge
162
163volumes:
164 prometheus_data:
165 driver: local
166 grafana_data:
167 driver: local