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.
Some of the services currently running on this box:
- “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
bettereasier 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.
- 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).
- On a shared hosting server (for no particular reason, other than I have it):
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)|
|CPU||AMD A8-8650B 4 cores 3.20GHz||Intel i5-6500 4 cores 3.20GHz|
|RAM||8 GB DDR3 (2×4)||16 GB DDR4 (2×8)|
|Storage||120 GB SSD + 2x 320GB HDDs in software RAID1||180 GB SSD + 2x 2TB HDDs in Btrfs RAID1|
|Power usage when idle||22 W / 0.54 kW per day||19 W / 0.45 kW per day|
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.
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.
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.