{"id":13550441,"url":"https://github.com/klutchell/mediaserver","last_synced_at":"2025-04-06T13:43:40.011Z","repository":{"id":38891531,"uuid":"77395378","full_name":"klutchell/mediaserver","owner":"klutchell","description":"docker-based plex \u0026 usenet media server using custom subdomains with tls","archived":false,"fork":false,"pushed_at":"2024-09-23T14:12:59.000Z","size":1824,"stargazers_count":130,"open_issues_count":3,"forks_count":26,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-04T14:03:43.874Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Makefile","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/klutchell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2016-12-26T16:34:54.000Z","updated_at":"2025-02-09T16:55:30.000Z","dependencies_parsed_at":"2023-10-05T01:49:09.464Z","dependency_job_id":"6933afdb-21d5-4f97-b699-f9a1332740c3","html_url":"https://github.com/klutchell/mediaserver","commit_stats":null,"previous_names":[],"tags_count":638,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fmediaserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fmediaserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fmediaserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klutchell%2Fmediaserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klutchell","download_url":"https://codeload.github.com/klutchell/mediaserver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247492464,"owners_count":20947541,"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":[],"created_at":"2024-08-01T12:01:33.068Z","updated_at":"2025-04-06T13:43:39.980Z","avatar_url":"https://github.com/klutchell.png","language":"Makefile","funding_links":["https://buymeacoffee.com/klutchell"],"categories":["Makefile"],"sub_categories":[],"readme":"# Docker Plex \u0026 Usenet Media Server\n\ndocker-based plex \u0026 usenet media server using custom subdomains over https\n\n## Motivation\n\n- host each service as a subdomain of a personal domain with letsencrypt\n- run public maintained images with no modifications\n- require minimal configuration and setup\n\n## Features\n\n- [Plex](https://plex.tv/) organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices.\n- [NZBGet](https://nzbget.net/) is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.\n- [Sonarr](https://sonarr.tv/) (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.\n- [Radarr](https://radarr.video/) - A fork of Sonarr to work with movies à la Couchpotato.\n- [NZBHydra2](https://github.com/theotherp/nzbhydra2) is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra.\n- [Prowlarr](https://github.com/Prowlarr/Prowlarr) is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps.\n- [Ombi](https://ombi.io/) is a self-hosted web application that automatically gives your shared Plex or Emby users the ability to request content by themselves.\n- [Netdata](https://www.netdata.cloud/) - Troubleshoot slowdowns and anomalies in your infrastructure with thousands of metrics, interactive visualizations, and insightful health alarms.\n- [Duplicati](https://www.duplicati.com/) - Free backup software to store encrypted backups online.\n- [Traefik](https://traefik.io/) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy.\n\n## Requirements\n\n- dedicated server or PC with plenty of storage\n- [docker](https://docs.docker.com/install/linux/docker-ce/debian/) and [docker-compose](https://docs.docker.com/compose/install/#install-compose)\n- (optional) personal domain with configurable sub-domains (eg. plex.example.com)\n\n## Direct Configuration\n\nCopy `env.sample` to `.env` and populate all fields in the `COMMON` section.\n\nMake sure to leave `ACME_EMAIL` blank for direct configuration.\n\n## Secure Configuration\n\nCopy `env.sample` to `.env` and populate all fields in the `COMMON` and `SECURE` sections.\n\nMake sure to set `ACME_EMAIL` for secure configuration.\n\n## Deployment\n\nPull and deploy containers with docker-compose.\n\n```bash\nmake deploy\n```\n\n## Authorization\n\nThere are currently two methods of authentication enabled, and I recommend using them\nboth if the secure configuration is in use. If it's not exposed to the Internet you can\nremove one or both of these middlewares from `docker-compose.secure.yml`.\n\n### ipallowlist\n\nThis is our first layer of security, and probably the most important.\n\nIf you are using mediaserver locally and are not exposing any ports to the Internet, you can skip\nthis section or set `IPALLOWLIST=0.0.0.0/0,::/0` in your `.env` file.\n\nTo avoid unauthorized users from even seeing our login pages, we should set the `IPALLOWLIST` to\nonly IP ranges that we want to explictly allow access.\n\nAccess from any other IP will result in \"403 Forbidden\" giving you some peice of mind!\n\nThis functionality can be enabled/disabled per service in `docker-compose.secure.yml`\nwith the `ipallowlist` middleware.\n\nBy default Plex, Jellyfin, Ombi, and NZBHydra2 will allow all traffic.\n\n### basicauth\n\nThis functionality can be enabled/disabled per service in `docker-compose.secure.yml`\nwith the `basicauth` middleware.\n\nUsers can be added to basic auth in 2 ways. If both methods are used they are merged and the\nhtpasswd file takes priority.\n\n1. Add users in your `.env` file with the `BASICAUTH_USERS` variable.\n\n2. Add users via htpasswd file in the traefik service.\n\nThe first user added requires `htpasswd -c` in order to create the password file.\nSubsequent users should only use `htpasswd` to avoid overwriting the file.\n\n```bash\ndocker-compose exec traefik apk add --no-cache apache2-utils\ndocker-compose exec traefik htpasswd -c /etc/traefik/.htpasswd \u003cuser1\u003e\ndocker-compose exec traefik htpasswd /etc/traefik/.htpasswd \u003cuser2\u003e\n```\n\nBy default only Duplicati and Netdata have basic http auth enabled.\n\nFor the remaining services I suggest enabling the built-in authentication via the app.\nThis avoids the need to add manual exceptions for API access where required and simplifies our proxy rules.\n\nFor Sonarr, Radarr, Prowlar you can enable authentication under Settings-\u003eGeneral-\u003eSecurity.\n\nFor Nzbget the default credentials are `nzbget:tegbzn6789` and can be changed under Settings-\u003eSecurity.\n\nFor NZBHydra2 you can add users under Config-\u003eAuthorization.  \n\n## Author\n\nKyle Harding \u003chttps://klutchell.dev\u003e\n\n[Buy me a beer](https://buymeacoffee.com/klutchell)\n\n## Acknowledgments\n\nI didn't create any of these docker images myself, so credit goes to the\nmaintainers, and the original software creators.\n\n- \u003chttps://hub.docker.com/r/linuxserver/plex/\u003e\n- \u003chttps://hub.docker.com/r/linuxserver/nzbget/\u003e\n- \u003chttps://hub.docker.com/r/linuxserver/sonarr/\u003e\n- \u003chttps://hub.docker.com/r/linuxserver/radarr/\u003e\n- \u003chttps://hub.docker.com/r/linuxserver/prowlarr/\u003e\n- \u003chttps://hub.docker.com/r/linuxserver/nzbhydra2/\u003e\n- \u003chttps://hub.docker.com/r/linuxserver/ombi\u003e\n- \u003chttps://hub.docker.com/r/linuxserver/duplicati/\u003e\n- \u003chttps://hub.docker.com/r/netdata/netdata/\u003e\n- \u003chttps://hub.docker.com/_/traefik/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklutchell%2Fmediaserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklutchell%2Fmediaserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklutchell%2Fmediaserver/lists"}