- Modifié
Salut à tous,
Pour les amateurs de simplicité, voici en 2 commandes et 2 fichiers de quoi installer une seedbox complète avec :
- rtorrent/rutorrent : Téléchargement de torrents. Image de @xataz .
- Flood : Interface nodejs pour rtorrent. Image construite sur les sources officielle.
- Pyload : Téléchargements directs. Image de writl.
- Medusa : Gestionnaire de séries TV. Image de linuxserver.
- Watcher : Gestionnaire de films. Image de moi-même.
- Ombi : Gestionnaire de demandes. Image de linuxserver.
- Embi : Streaming de vidéos et de musiques. Image officielle.
**Pré-requis: **
- Linux
- Docker
- docker-compose
1- Fichier de variables:
Créer un fichier ".env" avec le contenu suivant et adapter les variables à votre utilisation:
RESTART_MODE=unless-stopped
TZ=Europe/Paris
DUID=991
DGID=991
TRAEFIK_DASHBOARD_URL=traefik.domain.tld
PATH_APP=/data/apps
PATH_MEDIA=/data/media
PATH_MEDIA_TV=/data/media/Videos/tv
PATH_MEDIA_MOVIES=/data/media/Videos/movies
PATH_DOWNLOADS=/data/incoming
PROXY_NETWORK=traefik_proxy
RTORRENT_FQDN=rtorrent.domain.tld
# Create password with command: htpasswd -m -c temp your_username && cat temp && rm temp
# then, double each "$" ex: username:$$apr1$$ljshdflkjh$$z,nebj and put in on the following var:
RTORRENT_LOGIN="zer:$$apr1$$Gj3CF4pe$$2j.YaFPF1laxXSJOl9uPu1"
FLOOD_FQDN=flood.domain.tld
# Set here a strong password:
FLOOD_SECRET="Hy5qVe50iv7oNmAnZcdwmsUvb"
PYLOAD_FQDN=pyload.domain.tld
EMBI_FQDN=embi.domain.tld
MEDUSA_FQDN=medusa.domain.tld
WATCHER_FQDN=watcher.domain.tld
OMBI_FQDN=ombi.domain.tld
2- Récupérer les sources de Flood:
git clone https://github.com/jfurrow/flood.git flood
3- Fichier compose:
Créer un fichier "docker-compose.yml" avec le contenu suivant:
(Note: pas de modification à faire ici, tout et géré dans le fichier ".env".)
#####################################################
# Seedbox #
# --------- #
# #
# - rTorrent : Telechargement des torrents #
# - Emby : Streaming video/music/photos #
# - Ombi : Requêtes de téléchargements #
# - Medusa : Gestionnaire de séries #
# - Watcher : Gestionnaire de films #
# #
#####################################################
version: '2.4'
services:
###########
# Traefik #
###########
traefik:
image: traefik
cpus: 1
mem_limit: 64m
memswap_limit: 0m
container_name: proxy_traefik
restart: ${RESTART_MODE}
hostname: traefik
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:${TRAEFIK_DASHBOARD_URL}
- traefik.port=8080
- traefik.docker.network=${PROXY_NETWORK}
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${PATH_APP}/traefik/traefik.toml:/traefik.toml:ro
- ${PATH_APP}/letsencrypt/certs:/etc/traefik/acme:rw
ports:
- "80:80"
- "443:443"
networks:
- proxy
############
# rTorrent #
############
rtorrent:
image: xataz/rtorrent-rutorrent
cpus: 2
mem_limit: 512m
memswap_limit: 0m
container_name: sb-dltorrent_rTorrent
restart: ${RESTART_MODE}
hostname: torrent
tty: true
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:8080"]
interval: 30s
timeout: 10s
retries: 3
start_period: 1m
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:${RTORRENT_FQDN}
- traefik.port=8080
- traefik.docker.network=${PROXY_NETWORK}
- traefik.frontend.auth.basic=${RTORRENT_LOGIN}
volumes:
- ${PATH_MEDIA}:/data:rw
- ${PATH_APP}/rtorrent/conf:/config:rw
- /etc/localtime:/etc/localtime:ro
environment:
- UID=${DUID}
- GID=${DGID}
- PORT_RTORRENT=6881
- DHT_RTORRENT=on
networks:
- torrent
- proxy
#########
# Flood #
#########
# git clone https://github.com/jfurrow/flood.git flood
flood:
image: jfurrow/flood
build: ./flood/
cpus: 2
mem_limit: 512m
memswap_limit: 0m
container_name: sb-dltorrent_Flood
restart: ${RESTART_MODE}
hostname: torrent
tty: true
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
interval: 30s
timeout: 10s
retries: 3
start_period: 1m
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:${FLOOD_FQDN}
- traefik.port=3000
- traefik.docker.network=${PROXY_NETWORK}
volumes:
- ${PATH_MEDIA}:/data:rw
- ${PATH_APP}/flood/db:/data/server/db:rw
- /etc/localtime:/etc/localtime:ro
environment:
- UID=${DUID}
- GID=${DGID}
- FLOOD_SECRET=${FLOOD_SECRET}
- RTORRENT_SCGI_HOST=rtorrent
- RTORRENT_SCGI_PORT=5000
- FLOOD_ENABLE_SSL=false
ports:
- "49184:49184"
- "49184:49184/udp"
networks:
- torrent
- proxy
############
# Pyload #
############
pyload:
image: writl/pyload
cpus: 2
mem_limit: 500m
memswap_limit: 0m
container_name: sb-dldirect_Pyload
restart: ${RESTART_MODE}
hostname: pyload
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:8000"]
interval: 30s
timeout: 10s
retries: 3
start_period: 1m
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:${PYLOAD_FQDN}
- traefik.port=8000
- traefik.docker.network=${PROXY_NETWORK}
volumes:
- ${PATH_DOWNLOADS}/:/opt/pyload/Downloads:rw
- ${PATH_APP}/pyload/conf:/opt/pyload/pyload-config:rw
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=${TZ}
- UID=${DUID}
- GID=${DGID}
networks:
- proxy
########
# Emby #
########
emby:
image: emby/embyserver
cpus: 4
mem_limit: 4096m
memswap_limit: 0m
container_name: sb-stream_Emby
restart: ${RESTART_MODE}
hostname: emby
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:8096"]
interval: 30s
timeout: 10s
retries: 3
start_period: 1m
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:${EMBI_FQDN}
- traefik.port=8096
- traefik.docker.network=${PROXY_NETWORK}
volumes:
- ${PATH_APP}/emby/conf:/config:rw
- ${PATH_MEDIA}:/data:rw
- /etc/localtime:/etc/localtime:ro
environment:
- UID=${DUID}
- GID=${DGID}
- TZ=${TZ}
networks:
- proxy
########
# Ombi #
########
ombi:
image: linuxserver/ombi
cpus: 1
mem_limit: 200m
memswap_limit: 0m
container_name: sb-userreq_Ombi
restart: ${RESTART_MODE}
hostname: ombi
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:3579"]
interval: 30s
timeout: 10s
retries: 3
start_period: 1m
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:${OMBI_FQDN}
- traefik.port=3579
- traefik.docker.network=${PROXY_NETWORK}
volumes:
- ${PATH_APP}/ombi/conf:/config:rw
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=${TZ}
- PUID=${DUID}
- PGID=${DGID}
networks:
- proxy
############
# Medusa #
############
medusa:
image: linuxserver/medusa
cpus: 2
mem_limit: 500m
memswap_limit: 0m
container_name: sb-gettv_medusa
restart: ${RESTART_MODE}
hostname: medusa
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:8081"]
interval: 30s
timeout: 10s
retries: 3
start_period: 1m
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:${MEDUSA_FQDN}
- traefik.port=8081
- traefik.docker.network=${PROXY_NETWORK}
volumes:
- ${PATH_MEDIA_TV}/:/tv:rw
- ${PATH_DOWNLOADS}/:/downloads:rw
- ${PATH_APP}/medusa/conf:/config:rw
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=${TZ}
- PUID=${DUID}
- PGID=${DGID}
networks:
- proxy
#############
# Watcher #
#############
watcher:
image: zerpex/watcher3
cpus: 2
mem_limit: 500m
memswap_limit: 0m
container_name: sb-getmovies_Watcher
restart: ${RESTART_MODE}
hostname: watcher
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
interval: 30s
timeout: 10s
retries: 3
start_period: 1m
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:${WATCHER_FQDN}
- traefik.port=80
- traefik.docker.network=${PROXY_NETWORK}
volumes:
- ${PATH_APP}/watcher/conf:/watcher3/userdata:rw
- ${PATH_APP}/watcher/plugins:/watcher3/plugins:rw
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=${TZ}
- UID=${DUID}
- GID=${DGID}
networks:
- proxy
networks:
torrent:
proxy:
external:
name: ${PROXY_NETWORK}
Exécuter la commande docker-compose up -d
, attendre 1 minute ou deux et profitez de votre seedbox
Bonne utilisation,
zer.
Notes:
- Pyload: pour ce connecter, utiliser pyload/pyload.
- rtorrent/rutorrent/flood: il peut paraitre un peu lourd de proposer à la fois rutorrent et flood, mais personnellement, je trouve que ça a du sens. En effet, Flood est toujours un "work in progress" et propose des fonctionnalités limitées par rapport à rutorrent. De plus, l'image proposée par @xataz est complète. D'un autre côté, Flood est nettement plus léché graphiquement et suffit pour une utilisation quotidienne. Proposer les deux permet de faire sa conf, gérer ses plugins et autres via rutorrent, puis d'utiliser flood pour gérer ces torrents au quotidien.