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” Google Photos: PhotoPrism + Resilio Sync for semi-automated backups of pictures from iPhone and a web gallery. A write-up on this setup is finally available.
  • Notetaking: TiddlyWiki for dynamic notes and MDwiki for static docs. I was previously using Benotes, and before that – Google Keep.
  • 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 site (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.

Other

  • This server is also serving as a networked printing server for an ancient HP LaserJet that I inherited with this place. It works, sometimes, thanks to CUPS, Samba 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.
  • Home automation: Home Assistant. Several “smart” devices (and the printer setup described above) are now accessible from a single “hub”.

Hosted elsewhere

  • On a shared hosting server (for no particular reason):
  • On my laptop (for reasons – although it can certainly go to the server, but this would involve changing habits, which is harder):

Hardware

Clockwise from top left: Logitech subwoofer, HP LaserJet, some UPS, switch, router, external HDD, HP EliteDesk, and a ThinkPad T430 (not in use) – plus less than perfect cabling and a lot of dog hair.

This server is a second-hand HP EliteDesk 705 G2 SFF “business desktop” computer which I got because of its very small footprint and relatively low power usage. It was also very cheap – IIRC, I got it for around 80€ in 2019. It is powered by a four-core AMD A8-8650B processor, roughly the equivalent of a fourth generation Intel i5; it originally came with 4GB of DDR3 RAM and a 100GB HDD with an impressive number of powered-on hours. I have since added a second 4GB memory stick (also second-hand, mostly for the dual-channel mode). As for storage, I have re-purposed one SSD (for the operating system and software) and two HDDs in RAID 1, all taken from old laptops, since I have not owned or used other desktop computers in well over a decade. Recently, the CPU fan got loud, so I tried fixing it by cleaning and lubricating it. Unfortunately, this did not improve things, so I found a new equivalent fan (80mm, PWM, four pins) for around 7€ – the server is now absolutely silent. Also, PC fans come with 10 year warranties now?

Power usage

After getting a wireless “smart” plug for Christmas, I’ve measured the server’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 (and of course much more powerful, whether that’s necessary or not) for a desktop computer-turned-server. For comparison, a 2020 Ryzen notebook computer draws about 28 W when charging and in use. 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

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. More interestingly, I have Pi-hole and Pi.Alert running on two older, slightly exotic devices – an Eee PC 900A (2008) and an original Model B Raspberry Pi (2012) in a modified IKEA nightstand by the couch.

The second Pi-hole server was previously running on a Moto G3 rooted Android phone via Linux-Deploy, and while functional as a backup, it was 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.