PSA: Project has moved to GitLab. This repo will remain on Github as a mirror.
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!
sudo apt updatethen
sudo apt upgrade
sudo blkid- Find the block ID of your media drive
sudo mkdir /media/Media- make the mount point
UUID=BC6617A366175D88 /media/Media ntfs-3g uid=1000,gid=1000,dmask=022,fmask=133 0 0
dockergroup. See Post-installation steps for Linux
git clone https://gitlab.com/phikai/htpc-docker-standup.git
cp sample.env .env
.envto match your environment
docker-compose up -d
LOCALUSER=- This is the local user of your linux account and account running docker
HOSTNAME=- Hostame of the server, can be found by executing
hostnamefrom command line
IP_ADDRESS=- Local IP Address of the server, should be static
PUID=- UID of the local user, can be found by executing
idfrom the command line
PGID=- GID of the local user, can be found by executing
idfrom 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 VPN username from PIA or TorGuard
VPNPASS=- Your VPN password from PIA or TorGuard
VPNPROVIDER=- Your VPN provider, name must match a folder specified in
ovpn. This defaults to
piaif you copied
VPN_REMOTE=- The remote server you want to connect to (must support port forwarding)
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/16will allow access to the entire
192.168.1.xrange and the
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:
public. You should use
latestunless you have special requirements or are a Plex Pass subscriber.
EMAIL=- Email address to be used for Let's Encrypt SSL certificate validation -
DOMAIN=- Public domain to use for accessing services via a public domain -
WATCHTOWER_EMAIL=- Email address you'd like Watchtower to notify for any notifications -
SMTP_FROM=- From address that your SMTP server uses to send email -
SMTP_SERVER=- Servername of your SMTP server -
SMTP_PORT=- Port that your SMTP server uses to connect -
SMTP_USER=- Username that your SMTP server uses to authenticate
SMTP_PASS=- Password for your SMTP user to authenticate
SPEEDTEST_INTERVAL=- Number of seconds between tests to the Speedtest.net services
TRAEFIK_AUTH=- Basic Auth for the Traefik Admin htpasswd Generator
STACK_NAME=- This is used to specify the appropriate network Traefik should use. See #13 for details.
If this project has helped you in anyway, and you'd like to say thanks...
You can also gift a Plex Pass subscription as a great way to show your appreciation.
AFFILIATE DISCLOSURE: You can also support this project by purchasing a VPN Subscription via one of the links in this README.
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.