My first home server

September 14, 2022

When I voluntarily and temporarily got off the job market in mid late january - mid february this year, one of the objectives I had was to learn as much as possible in my time off. I now still have not returned to the market, but my time off has been used (in my humble opinion) rather effectively. One of the things I’ve been wanting to tinker with for the longest time is servers, specifically home servers and self-hosted applications.

My return to linux in late 2020 plus my strong interest in data privacy has made me increasingly interested in self-hosting services at home to break free from the shackles of closed source, proprietary services, as well as be able to automate simple tasks using simple scripts that require the always-on availability of a server to function effectively.


Article index


The machines

Bottom is NUC-1, top is NUC-2. Aren't they cute???

Both machines are Intel NUCs, hence the image at the top of the article. These are formidable little machines and I find them quite aesthetically pleasing as well, a perfect little squared box with rounded corners. These also have relatively low power consumption and are reasonably quiet.

NUC-1 for self-hosted applications

Initially, I got a barebones Intel NUC NUC7CJYHN with a 2 GHz intel Celeron J4005 off of Amazon Spain and populated it with the following hardware:

NUC-2 for an ethereum full node (or validator, someday)

This second NUC I bought used off of a seller on Wallapop who initially advertised it as having an i7-10510U but apparently (legitimately) didn’t notice it was actually an i5-10210U. This was handled very well by the seller by giving me a meaningful discount on the item, as I noticed after receiving it. Maybe the dude was trying to scam me, but it seemed unlikely given how he handled it when I contacted him regarding the processor.

Anyway, I populated this NUC with much stronger specifications as I intended to run an Ethereum full node and these were the recommended specifications in most guides:


NUC-1: Main server

The first machine I have been using for a very simple docker-based, self-hosted application machine. In particular, mostly as a Nextcloud server. Though I have a few little other applications, tasks and scripts running regularly here.

Setting up the machine to run such docker-based applications was surprisingly easy, though it’s a lot to take in at first if you’ve never tinkered with networking or servers. There’s quite a lot of things you have to have a reasonably acceptable understanding of when setting these up. I do not consider myself anything more than a noob that managed to get it running.

The setup

I used a fairly easy to use and set up builder for docker-compose called IOTstack aimed to be used on a raspberry pi. It’s rather easy to set up and they also have an extremely helpful discord community which have gotten me out of trouble a few times.

The server is intended to be accessed through a Wireguard tunnel. Although it is perfectly possible to expose services on the web, I would rather simplify things and just use the Wireguard tunnel whenever I’m not home.

Not exposing services to the web has some benefits:

It connects fast and lets me manage the servers from anywhere, though given how common the local IP is in most households, I decided to change parts of my home router local IP to avoid clashing connections.

Services it has replaced


NUC-2: Ethereum node and pihole server

The second server runs an Ethereum full node, currently I’m using the two majority clients at the time of writing this (prysm+geth) as the node is not being used as a validator. I use this node to query blockchain data, to submit transactions or to just tinker with it. This one was a fun project to make, I might write about it in the future once I understand the CL and EL clients in depth.

I also run a pi-hole server with an unbound recursive DNS resolver for local home ad, telemetry and malicious domain blocking. Quite a useful privacy tool that also makes browsing at home much more comforting than outside of it. Also an incredibly interesting learning experiment that has taught me a lot about networking and challenged lots of notions I had about concepts that I thought I understood but didn’t really understand.


Conclusion

If you can and want to, run a home server, it’s kinda fun, pretty useful and feels like a very organized and fun way to keep control of my data while also learning a thing or two.

I might update this article with anything new I install in it or any other services I replace with self-hosted applications.


Image sources

Only adding sources for externally obtained images, in order:

  1. Nextcloud logo

  2. Joplin logo

  3. VPN diagram

  4. RPC provider diagram

  5. Ethereum node image

  6. pihole + unbound image, this page is what looks to be essentially a mirror of this page, at least in terms of content.