📺 Mediabox
What's in the stack?
Multimedia
- Plex
- Sonarr
- Radarr
- Bazarr
- Jackett
- NZBHydra2
- SABnzbd
- Deluge (built-in dark mode)
- Calibre Web
- Portainer 2.0
- Watchtower
- Organizr
Security
Prerequisites
Setup
- Copy
.env.template
cp .env.template .env
- Replace variables on
.env
with whatever makes sense to you (follow the comments above each property). - It might be a good idea to clone this repo inside the external disk if you plan to use it on different machines/architectures.
Starting
# Main stack + Unprotected Torrenting
docker-compose -f docker-compose.yml -f docker-compose.torrents.yml up -d
# Main stack + VPN Protected Torrenting
docker-compose -f docker-compose.yml -f docker-compose.torrents-on-vpn.yml up -d
# Main stack + VPN Protected Torrenting + Plex HW Transcoding
docker-compose -f docker-compose.yml -f docker-compose.torrents-on-vpn.yml -f docker-compose.plex-hw.yml up -d
# Main stack + VPN Protected Torrenting + Plex HW Transcoding + Custom domain & SSL certificates
docker-compose -f docker-compose.yml -f docker-compose.torrents-on-vpn.yml -f docker-compose.plex-hw.yml -f docker-compose.traefik.yml up -d
# Main stack + VPN Protected Torrenting + Plex HW Transcoding + Custom domain & SSL certificates + Calibre Web
docker-compose -f docker-compose.yml -f docker-compose.torrents-on-vpn.yml -f docker-compose.plex-hw.yml -f docker-compose.traefik.yml -f docker-compose.books.yml up -d
Stopping
Use docker-compose down
adding -f
flag with the same compose files you used for starting the stack.
Updating
Watchtower automatically updates all apps (if docker image update is available) at 4 AM every day.
Custom domain + Let's Encrypt free certificates
In case you own a domain like example.com
and you'd like to configure subdomains pointing to your apps like sonarr.example.com
or plex.example.com
, do the following:
- Modify
.env
:
DOMAIN=example.com
[email protected]
- Forward ports 80 and 443 to your mediabox (you can do that changing your router settings).
- Include
docker-compose.traefik.yml
when starting the stack - Check the logs to verify everything is up and running:
docker logs -f traefik
VPN
With OpenVPN you can use any VPN provider following these steps:
- Download your VPN OpenVPN config files (e.g: NordVPN TCP/UDP config files)
- Download your VPN CA file (e.g: NordVPN CA & TLS key files)
- Run the following (using NordVPN Brazil#65 as example)
# Copy required files
cp ~/Downloads/br65.nordvpn.com.udp.ovpn ${OPENVPN}/vpn.conf
cp ~/Downloads/br65_nordvpn_com_ca.crt ${OPENVPN}/vpn-ca.crt
# Write credentials
cat <<EOT >> ${OPENVPN}/vpn.auth
[email protected]
YourVPNP4ssw0rD
EOT
Sonarr/Radarr << Deluge/SABnzbd
This setup follows best practices mentioned on this article, therefore you'll have to map Sonarr/Radarr volumes to Deluge's/SABnzbd's to be able to use hardlinks and/or perform atomic "move" operations instead of "copy+delete" (which takes longer and requires more space).
Architecture
# My disks layout:
#
# data
# ├── 2tb
# │ └── media
# │ ├── movies
# │ └── tv
# ├── 4tb
# │ └── media
# │ ├── movies
# │ └── tv
# └── ssd
# └── mediabox
# ├── containers
# ├── downloads
# └── repo