Home server notes

About

I’ve been using Linux for both fun and profit for most of my life, and some people might say that I’m “good with computers,” but I have no formal training. Professionally, I am neither a dedicated programmer nor a system administrator – just a generalist with shallow understanding in a number of disciplines, so take anything that you find here with a grain of salt. This page is an attempt to describe the current state of my home server and network setup.


Services

Some of the services currently running on this box:

Web services

  • “Escaping” G**gle Photos: Immich. Previously: LibrePhotos + Resilio Sync for semi-automated backups of pictures from iPhone and a web gallery. And before that: PhotoPrism for about a year and also briefly tried Photoview.
  • Notetaking: Switched to Joplin. Previously used TiddlyWiki for dynamic notes and MDwiki for static docs, but didn’t really “use” them that much. I was previously using Benotes, and before that – G**gle Keep. To be fair, I prefer taking notes in an actual notebook.
  • Site change monitoring: ChangeDetection.io. Cause I really don’t want to learn Selenium in order to monitor a couple of vendors’ websites for BIOS updates.
  • Wishlist: Christmas Community. I was using a WordPress blog (this site!) for this, but it was clearly overkill.
  • Monitoring: Glances.
  • Bookmarks: Shiori.
  • Home page/directory: Dashy. Previously SUI.
  • Everything running behind nginx as a reverse proxy/web server and DuckDNS for dynamic DNS.
  • Portainer for better easier container management.
  • Scrutiny for simple storage statistics and monitoring.
  • Plex (I’d prefer a more OSS option, but I actually use the Plex PS4 app) – I finally got around to moving this from my laptop to the server, which makes a lot more sense.

Other

  • This server is also serving as a networked printing server for an ancient HP LaserJet that I inherited with this place. It works, now 99% of the time, thanks to CUPS and foo2zjs. Before setting up this machine, I was using a CHIP single-board computer for this purpose, of which I had two, but eventually both failed. I have also added a “smart” plug to turn it on and off on demand (can also double as a power meter when necessary).
  • VPN: WireGuard.
  • Storage: NFS. Previously used Samba but it no longer makes sense.
  • Home automation: Home Assistant. Several “smart” devices (as well as the printer setup described above) are now accessible from a single “hub”.
  • Pi-hole and Unbound. Those were previously hosted on separate devices (read more below).

Hosted elsewhere

  • On a shared hosting server (for no particular reason, other than I have it):

Hardware

Clockwise from top left: Logitech subwoofer, HP LaserJet, some UPS, switch, router, external HDD, HP EliteDesk, and a retired ThinkPad T430 laying around – plus less than perfect cabling and some dog hair.

This server was originally a second-hand HP EliteDesk 705 G2 SFF “business desktop” which I got because of its small footprint and relatively low power usage. It was also very cheap – IIRC, I got it for around 80€ in 2019.

However, in November 2022 I upgraded it to a slightly beefier Intel-based HP ProDesk 600 G2 PC which has virtually the same dimensions and appearance, so the picture above is still accurate. The AMD CPU in the EliteDesk is actually more recent, but the 6th generation i5 is still a better processor, plus the ProDesk comes with much faster DDR4 memory.

EliteDesk (in use 2019 – 2022)ProDesk (in use since 2022)
CPUAMD A8-8650B 4 cores 3.20GHzIntel i5-6500 4 cores 3.20GHz
RAM8 GB DDR3 (2×4)16 GB DDR4 (2×8)
Storage120 GB SSD + 2x 320GB HDDs in software RAID1180 GB SSD + 2x 2TB HDDs in Btrfs RAID1
Total price120€195€
Power usage when idle22 W / 0.54 kW per day19 W / 0.45 kW per day
A table – in 2022 (or later)!

Power usage

After getting a wireless “smart” plug for Christmas, I’ve measured the EliteDesk’s power usage and it averages at around 22 W when idle – this comes at 0.54 kW per day. This is at least three times the consumption of a modern Raspberry Pi with a couple of USB disks, but it’s still pretty good for a desktop computer-turned-server (and of course much more powerful, whether that’s necessary or not). For comparison, a 2020 Ryzen notebook computer draws about 28 W when charging and in use. 2023 update: the ProDesk is even better at around 19 W when idle.

The printer connected to the server draws 4 W in stand-by mode, just as described in its reference manual – the wireless plug that I use cannot even detect this value in real time, but the daily usage adds up. Originally, I feared that this would be much higher, so my plan was to use the wireless plug to start and stop the printer on demand. However, even if I forget it for a few days, it won’t add much to the power bill, plus its usage spikes in the first few seconds after I power it on – suggesting that depending on usage, in some cases it will be more efficient to just leave it on.


Server stack

A fairly recent snapshot of most machines described on this page.

The server is running Ubuntu Server because it seemed like the easy way to go. Ironically, I immediately hit a major issue with the Ethernet card due to a kernel bug when first starting out (2019), and because of how updates are released in Ubuntu (and my own laziness), I gave up and left the project for a year and a half. When I came back to it, a dist-upgrade solved that problem overnight. Most of the services are running in Docker containers – I had zero experience with containerization going in, but I have learnt to appreciate it.


Network

My home network is behind a basic home router with great coverage and mediocre configuration options. I have Pi-hole and Unbound running in a Docker container on the main server, and a second backup on an original Model B Raspberry Pi (2012).

Both the main and the backup Pi-hole “servers” were previously running on some slightly exotic devices – an Eee PC 900A (2008) and a Moto G3 (2015) rooted Android phone via Linux-Deploy, respectively. Sadly, the Eee PC’s storage failed in early 2023 and since it uses a somewhat obscure format, it just didn’t make sense to keep resurrecting it. As for the Moto G3, while it technically did work as a backup, it was very slow and unreliable.

Clockwise from top left: Ruby Pocket Reference, current notebook PC, some UPS, Raspberry Pi, some cam, router, Eee PC with a Tim Berners-Lee-style “server” sticker via Dana Sibera all on a modified IKEA nightstand – and again, some dog hair.