Skip to content

cristianmiranda/mediabox

master
Switch branches/tags
Code

πŸ“Ί Mediabox

What's in the stack?

Multimedia

Security

Prerequisites

Setup

  1. Copy .env.template
cp .env.template .env
  1. Replace variables on .env with whatever makes sense to you (follow the comments above each property).
  2. 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:

  1. Modify .env:
DOMAIN=example.com
SSL_ACME_EMAIL=you@mail.com
  1. Forward ports 80 and 443 to your mediabox (you can do that changing your router settings).
  2. Include docker-compose.traefik.yml when starting the stack
  3. 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:

  1. Download your VPN OpenVPN config files (e.g: NordVPN TCP/UDP config files)
  2. Download your VPN CA file (e.g: NordVPN CA & TLS key files)
  3. 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
you@mail.com
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