/htpc-docker-standup

A simple docker-compose based configuration to stand up a new HTPC w/ Plex, Deluge, Sonarr, Radarr and more!

MIT LicenseMIT

HTPC Docker Standup

This is a simple docker-compose configuration to standup a new HTPC. It's based on running on an Ubuntu server, but could easily be adapted for other opertaing systems with Docker support.

It includes the following Services

This project was heavily inspired by the MediaBox project... Many Thanks!

Known Issues

  • Sometimes the Deluge + VPN Container disconnects and can't re-establish a forwarded port connection.
  • Plex can't be assigned Hostname + SSL on Host Network - Nginx Reverse Proxy

Install Instructions

Prerequisites

Server Configuration

  1. Install Ubuntu Server and get it updated - sudo apt update then sudo apt upgrade
  2. If you have existing media on a separate NTFS formatted drive:
  • Mount NTFS Drive w/ Appropriate Permissions, Link 1
  • sudo blkid - Find the block ID of your media drive
  • sudo mkdir /media/Media - make the mount point
  • Add to /etc/fstab: UUID=BC6617A366175D88 /media/Media ntfs-3g uid=1000,gid=1000,dmask=022,fmask=133 0 0
  1. Setup Samba Share (to access media outside of HTPC)
  2. Install Docker
  1. Install Docker Compose
  2. Clone Repo git clone https://github.com/phikai/htpc-docker-standup.git
  3. Copy Sample Environement File cp sample.env .env
  4. Edit .env to match your environment
  5. Run Docker Environment docker-compose up -d
  6. ???
  7. Profit.

Environment File

  • LOCALUSER= - This is the local user of your linux account and account running docker
  • HOSTNAME= - Hostame of the server, can be found by executing hostname from command line
  • IP_ADDRESS= - Local IP Address of the server, should be static
  • PUID= - UID of the local user, can be found by executing id from the command line
  • PGID= - GID of the local user, can be found by executing id from the command line
  • PMSTOKEN= - The claim token for the server to obtain a real server token. If not provided, server is will not be automatically logged in. If server is already logged in, this parameter is ignored. You can obtain a claim token to login your server to your plex account by visiting https://www.plex.tv/claim
  • VPNUNAME= - Your Private Internet Access username from PIA VPN
  • VPNPASS= - Your Private Internet Access password from PIA VPN
  • VPNPROVIDER= - Your VPN provider, name must match a folder specified in ovpn. This defaults to PIA if you copied sample.env.
  • VPN_REMOTE= - The remote server you want to connect to (must support port forwarding), List of Servers
  • CIDR_ADDRESS= - IP/netmask entries which allow access to the server without requiring authorization. We recommend you set this only if you do not sign in your server. For example 192.168.1.0/24,172.16.0.0/16 will allow access to the entire 192.168.1.x range and the 172.16.x.x
  • TZ= - Set the timezone inside the container. For example: Europe/London. The complete list can be found here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
  • PMSTAG= - Which version of Plex Media Server, available options: latest, plexpass and public. You should use public unless you are a Plex Pass account
  • EMAIL= - Email address to be used for Let's Encrypt SSL certificate validation - someone@somewhere.com
  • DOMAIN= - Public domain to use for accessing services via a public domain - server.domain.com
  • WATCHTOWER_EMAIL= - Email address you'd like Watchtower to notify for any notifications - someone@somewhere.com
  • SMTP_FROM= - From address that your SMTP server uses to send email - someone@somewhere.com
  • SMTP_SERVER= - Servername of your SMTP server - smtp.domain.com
  • SMTP_PORT= - Port that your SMTP server uses to connect - 587
  • SMTP_USER= - Username that your SMTP server uses to authenticate
  • SMTP_PASS= - Password for your SMTP user to authenticate

Email/SMTP Service


Tips and Tricks

Potential Script to setup, renew and copy SSL for Plex


If this project has helped you in anyway, and you'd like to say thanks...

Donate Donate with Bitcoin


Disclaimer

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.