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 i an attempt to describe most 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 the full process and setup will be finished one day.
  • 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 bother learning Selenium to monitor a couple of websites for changes.
  • Wishlist: Christmas Community. I was using a WordPress site (this site!) for this, but it was clearly overkill.
  • Monitoring: Glances.
  • 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 1018 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. The CHIP is apparently notorious for failing, in addition to not even arriving to a number of its original backers. Eventually, I’d like to add a wi-fi outlet or switch before the printer so that I can power it on and off on demand, plus it could double as a handy power meter (this has been done and actually works better than expected).
  • VPN: WireGuard.
  • Home automation (todo): openHAB or Home Assistant. I have several “smart” devices that I would like to eventually set up and use with this so that they don’t go through third-party servers.

Hosted elsewhere

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

Hardware

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 a truly staggering 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 120GB SSD (for the operating system and software) and two 320GB 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 became noisy, so I tried fixing it by cleaning and lubricating it. Unfortunately, this did not improve things sufficiently, so I found a new equivalent fan (80mm, PWM, four pins) from Arctic for around 7€ – the server is now absolutely silent. Also, computer 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 cheaper 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 excellent coverage and limited configuration options. More interestingly, I have Pi-hole 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 originally running on a Moto G3 rooted Android phone via Linux-Deploy, and while functional as a backup, it was slow and unreliable.

https://preview.redd.it/1j5wuccgryo31.jpg?width=805&format=pjpg&auto=webp&s=7446f59c3bd2c61508896712527b92b73615c7ff
This picture actually shows an older iteration of my setup with a different router (better configuration options, worse coverage) and no rooted phones. Different UPS, too.

There are also a couple of other switches and routers laying around for an eventual VLAN configuration (for isolating the aforementioned IoT devices), but this is yet to be set up.