Since my first post on my self hosting setup, things have changed quite a bit. I thought I’d take the time to write up a few of those changes, having recently got much more interested in how I can improve my setup further. This has been stimulated at least in part by seeing some awesome setups browsing /r/homelab. There will be photos of the new setup at the bottom of this post.
So What’s Changed?
Well the first thing was that I moved house. This was a protracted move, with 4 months spent living at my parents place before moving into our new home. Due to space and other constraints I didn’t want to run the servers when living with them. Instead, I settled for playing around with a couple of Raspberry Pis in the mean time. One of these was a new Pi 3 bought specifically for the purpose of becoming a Kodi box. It does this quite nicely thanks to OSMC. The other was a Pi 2 which just had a testing setup of Home Assistant on for me to play around with.
Since moving into the new house, I’ve been building my self hosting setup back up. I think I’ve now surpassed level as I was at previously. Since everything had been offline for 4 months, I decided to make a clean break of things. After a back up I formatted the system drive of the main server and installed Ubuntu Server. This was with a view to running my services in LXD containers. This was made possible by the aforementioned Pi 3 becoming the main TV frontend, along with a Chromecast for Netflix duties. That meant the server could go fully headless for the first time and be relocated to the garage, where it can be attached to a noisy UPS.
What am I Running?
Currently, I’m running several containers on the server. These include:
- A Home Assistant/Mosquitto/Node-RED container
- A music server container running Mopidy+Snapcast for (eventually) multi-room audio
- A Tvheadend container to replace Mythtv (not that I was unhappy with it, I just thought I’d try something new)
- An Emby container for serving other media to Kodi (in future I’d like to add a second RPi/Kodi instance)
- A CheckMK container to replace the previous built from source Nagios server
- A couple of others for early stage testing of new projects
In addition to separating the main server from the media frontend I also invested in a new firewall box before moving into the new house. This was primarily due to the new house having a fibre connection. The USB Ethernet device on the old netbook I was using therefore became a bottleneck on Internet speed. I picked up one of those dual Ethernet Haswell based mini-computers from AliExpress.
This was originally running pfSense natively on the hardware. However, in order to try and get a little more out of the new hardware I’ve since swapped this out for a Proxmox host which runs pfSense in a VM (more on this in a future post). This runs really nicely and I’ve noticed that the case doesn’t get anywhere near as hot as it did running pfSense natively.Â Potentially this is confirmation bias on my part! The average air temperature has changed somewhat due to it getting towards winter.
I’m also running another VM on this system, which is hosting a testing install of Nextcloud. I haven’t transferred this to ‘production’ yet, mainly due to lack of time to get back to it. I’m pretty happy with it and will probably re-deploy it into an LXC container (Proxmox uses straight LXC not LXD) in order to reduce the memory footprint. I should have gone for more RAM in that box!. The main winner on the Proxmox install has been the ease with which I can do complex networking as required for the virtualised firewall and my VLAN setup. This is mainly due to the integration with OpenVSwitch, which I like a lot.
A Proper Switch
Having had the foresight to install Ethernet throughout our new home, I’ve needed to invest in a proper switch since we moved in. For a while I made do with piggy backing together my two wireless access points which provided 5 ports each. With this arrangement I was able to cover all the basics of my network. However, I wasn’t able to make every Ethernet jack in the house live and had no room for expansion.
I recently bought a TP-Link TL-SG1024DE 24 port switch. Whilst not the best switch in the world it is pretty good value for money and will serve my needs for the foreseeable future. Configuration of the VLANs is a little clunky, compared to the OpenWRT configuration interface I was using previously. However, everything works once it’s all configured. The great thing is I’ve been able to connect every port in the house as well as all my other gear and still have a ton of ports left over. The only feature I am missing in this switch is SNMP for monitoring, but I’m reasonably confident of being able to scrape the web interface at some point. Overall this switch is great for self hosting, where perhaps you don’t need those advanced features.
Based on my positive experience with Proxmox, I’ll probably migrate the main server to that at some point in the future. I’ve really enjoyed using LXD on Ubuntu, but Proxmox just seems better suited to my needs. The one feature I will miss from Ubuntu Server as a host is the kernel livepatching, which is really cool. The main thing holding me back from this at the moment is having to migrate all the existing LXD containers to LXC as there doesn’t seem to be a clean way to do this. This means the migration will have to wait until I can get all the services deployable via Ansible, which I’m working on.
As promised here are the photos of my self hosting setup. I’m using some standard garage shelving as a rack stand in. This works pretty well as I don’t have any rack mount gear except the new switch: