{"id":13548086,"url":"https://github.com/cristianmiranda/mediabox","last_synced_at":"2026-01-29T13:21:13.388Z","repository":{"id":51723838,"uuid":"284354943","full_name":"cristianmiranda/mediabox","owner":"cristianmiranda","description":"🐳 Docker based MEDIABOX 📺 ","archived":false,"fork":false,"pushed_at":"2024-02-11T14:14:02.000Z","size":90,"stargazers_count":143,"open_issues_count":0,"forks_count":21,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-03T16:38:06.985Z","etag":null,"topics":["bazarr","calibre","deluge","docker","htpc","jackett","letsencrypt","mediabox","nzbhydra2","openvpn","organizr","plex","portainer","radarr","sabnzbd","sonarr","torrent","traefik-v2","usenet","watchtower"],"latest_commit_sha":null,"homepage":"https://git.io/mediabox","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cristianmiranda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-08-01T23:20:34.000Z","updated_at":"2024-10-22T17:37:47.000Z","dependencies_parsed_at":"2024-02-11T15:27:08.329Z","dependency_job_id":"7cacb147-d0d5-4c0f-94b7-764546b43439","html_url":"https://github.com/cristianmiranda/mediabox","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristianmiranda%2Fmediabox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristianmiranda%2Fmediabox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristianmiranda%2Fmediabox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristianmiranda%2Fmediabox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cristianmiranda","download_url":"https://codeload.github.com/cristianmiranda/mediabox/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246888085,"owners_count":20850195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bazarr","calibre","deluge","docker","htpc","jackett","letsencrypt","mediabox","nzbhydra2","openvpn","organizr","plex","portainer","radarr","sabnzbd","sonarr","torrent","traefik-v2","usenet","watchtower"],"created_at":"2024-08-01T12:01:05.510Z","updated_at":"2026-01-29T13:21:13.376Z","avatar_url":"https://github.com/cristianmiranda.png","language":"CSS","funding_links":[],"categories":["CSS"],"sub_categories":[],"readme":"# :tv: Mediabox\n\n![](https://github.com/cristianmiranda/mediabox/workflows/Multimedia%20Stack%20Deployment/badge.svg)\n\n![](https://i.imgur.com/UZklu5w.jpg)\n\n## What's in the stack?\n\n### Multimedia\n* [Plex](https://www.plex.tv/)\n* [Sonarr](https://sonarr.tv/)\n* [Radarr](https://radarr.video/)\n* [Bazarr](https://www.bazarr.media/)\n* [Prowlarr](https://prowlarr.com/)\n* [SABnzbd](https://sabnzbd.org/)\n* [Deluge](https://deluge-torrent.org/) (built-in dark mode)\n* [Calibre Web](https://github.com/janeczku/calibre-web)\n* [Portainer 2.0](https://www.portainer.io/)\n* [Watchtower](https://github.com/containrrr/watchtower)\n* [Organizr](https://github.com/causefx/Organizr)\n\n### Security\n* [OpenVPN](https://github.com/dperson/openvpn-client)\n* [Traefik](https://containo.us/traefik/)\n* [Let's Encrypt Automatic SSL certificates](https://letsencrypt.org/)\n## Prerequisites\n* [Docker](https://www.docker.com/)\n* [Docker-Compose](https://docs.docker.com/compose/)\n\n## Setup\n1. Copy `.env.template`\n```bash\ncp .env.template .env\n```\n2. Replace variables on `.env` with whatever makes sense to you (follow the comments above each property).\n3. It might be a good idea to clone this repo inside the external disk if you plan to use it on different machines/architectures.\n\n## Starting\n```bash\n# Main stack + Unprotected Torrenting\ndocker-compose -f docker-compose.yml -f docker-compose.torrents.yml up -d\n\n# Main stack + VPN Protected Torrenting\ndocker-compose -f docker-compose.yml -f docker-compose.torrents-on-vpn.yml up -d\n\n# Main stack + VPN Protected Torrenting + Plex HW Transcoding\ndocker-compose -f docker-compose.yml -f docker-compose.torrents-on-vpn.yml -f docker-compose.plex-hw.yml up -d\n\n# Main stack + VPN Protected Torrenting + Plex HW Transcoding + Custom domain \u0026 SSL certificates\ndocker-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\n\n# Main stack + VPN Protected Torrenting + Plex HW Transcoding + Custom domain \u0026 SSL certificates + Calibre Web\ndocker-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\n```\n\n## Stopping\nUse `docker-compose down` adding `-f` flag with the same compose files you used for starting the stack.\n\n## Updating\nWatchtower automatically updates all apps (if docker image update is available) at 4 AM every day.\n\n## Custom domain + Let's Encrypt free certificates\nIn 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:\n1. Modify `.env`:\n```bash\nDOMAIN=example.com\nSSL_ACME_EMAIL=you@mail.com\n```\n2. Forward ports 80 and 443 to your mediabox (you can do that changing your router settings).\n3. Include `docker-compose.traefik.yml` when starting the stack\n4. Check the logs to verify everything is up and running: `docker logs -f traefik`\n\n## VPN\nWith OpenVPN you can use any VPN provider following these steps:\n\n1. Download your VPN OpenVPN config files (e.g: [NordVPN TCP/UDP config files](https://nordvpn.com/ovpn/))\n2. Download your VPN CA file (e.g: [NordVPN CA \u0026 TLS key files](https://downloads.nordcdn.com/configs/archives/certificates/servers.zip))\n3. Run the following (using NordVPN Brazil#65 as example)\n```bash\n# Copy required files\ncp ~/Downloads/br65.nordvpn.com.udp.ovpn ${OPENVPN}/vpn.conf\ncp ~/Downloads/br65_nordvpn_com_ca.crt ${OPENVPN}/vpn-ca.crt\n\n# Write credentials\ncat \u003c\u003cEOT \u003e\u003e ${OPENVPN}/vpn.auth\nyou@mail.com\nYourVPNP4ssw0rD\nEOT\n```\n\n## Claiming Plex Server\nIf you have a custom DNS server (like Pi-hole) you might want to add these to your `/etc/hosts` file:\n\nSee more @ https://forums.plex.tv/t/cannot-access-plex-tv-only-on-specific-pc/668567/25\n\n```conf\n99.81.153.144 my.plexapp.com 3 # added by VPN ByPASS\n99.81.164.127 SAME AS ABOVE\n108.128.10.254 SAME AS ABOVE\n104.20.12.29 plexapp.com 1\n104.20.13.29 plexapp.com 1\n99.80.231.223 plex.tv\n99.81.213.165 plex.tv\n99.80.242.242 plex.tv\n45.33.73.250 pubsub.plex.tv\n172.104.211.98 pubsub.plex.tv\n```\n\n## Sonarr/Radarr \u003c\u003c Deluge/SABnzbd\nThis setup follows best practices mentioned on [this article](https://wiki.servarr.com/Docker_Guide#The_Best_Docker_Setup), 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).\n\n![](https://i.imgur.com/AHOQVXh.png)\n\n## Architecture\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://imgur.com/nsEsoKw.png\" /\u003e\n\u003c/p\u003e\n\n```bash\n# My disks layout:\n#\n# data\n# ├── 2tb\n# │   └── media\n# │       ├── movies\n# │       └── tv\n# ├── 4tb\n# │   └── media\n# │       ├── movies\n# │       └── tv\n# └── ssd\n#     └── mediabox\n#         ├── containers\n#         ├── downloads\n#         └── repo\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristianmiranda%2Fmediabox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcristianmiranda%2Fmediabox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristianmiranda%2Fmediabox/lists"}