I picked up a Dell T5600 Precision Workstation to use for home automation / virtualization, but hadn't really done anything with it. Today I decided to make it run my Plex Server, some services and some minor home automation like lights, and all this will run within containers.
Dell T5600 Precision Workstation - Ubuntu Server 20.04 LTS
First I needed to upgrade the boot drive from a 500gb hard drive (spinning rust), to an SSD. I had a spare 500gb SSD laying around so I decided to use that. I also needed at least one other hard drive to use for storage. I decided to go with 2 WD Red NAS hard drives. I picked up a 12tb and 14tb on Amazon during a flash sale. The size difference didn't really matter to me since I wasn't going to be running them in Raid. I upgraded the ram to 128gb, got the ram for pretty cheap on eBay. The final specs are: dual Xeon E5-2670 8 Core processors, for a total of 16 cores / 32 threads. 128 gb of ram, 500gb SSD boot drive and 26tb of storage.
For the OS I decided to go with Ubuntu Server 20.04 LTS. I don't need a desktop environment on this since it's just going to run services in the background. If and when I need to connect to it I will simply ssh into the machine. From there I installed docker and docker-compose. I could have gone with podman but I'm just currently more familiar with docker.
For my reverse proxy I decided to use Traefik due to it's automatic HTTPS via Let's Encrypt. From there I just use a basic docker compose file. You can find a docker-compose / Traefik v2 example here (Rasbperry Pi Version).
The docker-compose file lists 4 containers: Tautulli, Plex, NetData and Home API.
- Tautulli is a web app to monitor, view analytics, and receive notifications about your Plex Media Server.
- Plex is a global streaming media service and a client–server media player platform.
- Netdata is an open source tool designed to collect real-time metrics, such as CPU usage, disk activity, bandwidth usage, website visits, etc., and then display them in live, easy-to-interpret charts
- Home API is a custom REST API I made to control my Philips Hue Lights, by using the Philips Hue API. You can view it here. Currently it can only control Philips Hue Lights but as necessity grows and time permits I will keep adding to it.
I use Tautulli to send notifications (webhooks) to my Home API which then turns on, turns off or dims the lights according to the Plex triggers set. For example turning off the lights when the video starts playing. Turning on the lights when the video stops playing, or pauses. The Home API uses the Philips Hue API to control the lights. This could also be accomplished by using a service like IFTT, they have integrations for everything. I just wanted to keep it all in my network.
Thanks to containers, I can bring down, bring up, destroy and rebuild this stack whenever I want and the data is persistant and stored in docker volumes on bare metal.