arnaucube
arnaucube/configsPublic Self-hosted repository
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