About eight months ago, I built a mini-computer that I treat as an always-on home server. I installed Linux and hosted several applications on it. In this article, I am going to share some details some details and my experience with it.
Hardware
Specification And After-Tax Price.
CPU: Intel Core i3-10100, $156
Memory: Crucial RAM 8GB DDR4 2666, $56
Motherboard: MSI H510 Pro, $160
Power Supply: EVGA SuperNOVA 80 Plus Gold 550W, ~$100
Disk 1: A Spare 256GB NVME SSD
Disk 2: WD Digital 14TB Red NAS Drive, $315 ($22.5/T)
Case: Thermaltake Core V1 Black Edition, $84
All the items that I purchased were brand new, and I spent $556 Canadian dollar on them if I don’t count the NAS drive, which is still pricey for a home server. To recap, I think I could have reduced the cost if I had purchased used items, which I may consider doing next time. Additionally, I am also not a hardware expert, so I don’t have enough knowledge about finding the best budget items. I used my limited knowledge to come up the spec list, which is probably not a cost-efficiency list.
I waited for a deal before purchasing the NAS Drive. $22.5/T after tax was not bad at all for a drive like this. I think this was my most satisfying purchase. I plan to purchase two more similar drives so that I can get RAID working properly and this leads to another issue: the case only supports two drives. This was a mistake and I wish I had purchased a case that accommodate more drives.
I think this is all I want say about the hardware, so far the system has been running quietly and smoothly thus far.
System
I went with Ubuntu 22.04 because I wanted the system to be in a good balance of reliability and cutting-edge features, making Ubuntu an ideal fit for me. It’s also something that I am familiar with.
I installed the OS on the NVME SSD without encryption. I did it this way because I had encountered some issues regarding remotely decryption the disk while restarting without ssh. I made this work; however, this led to an issue such that if there’s a power outage and I am not available to decrpyt the disk, everyone in my home will lose internet connection (I have Pihole installed as the DHCP server, so it needs to be run) because one can’t just make the box back to functioning by pressing the power button.
I stored all my valuable data into the encrypted NAS Drive, which I think is secure enough for me. Even if someone broke into my home and stole the computer away, I still have my personal data protected.
Hosted Services
These are the services that I run on this machine.
Wireguard
Wireguard by far is the most valuable service that I run and it even has altered my mindset and workflow. Wireguard is a VPN solution which allows you to connect different machines together within the same virtual network.
Wireguard had two main benefits for me:
It enabled me to connect my desktop remotely. I have a high-end desktop running in my home that I use for my daily work. It is powerful, so it builds Firefox faster. With Wireguard, I can bring my laptop with me outside and do my work on the desktop simultaneously without worrying exposing my desktop to the public network.
It allowed me to use all my self-hosted services from anywhere with internet and not worrying about protecting them from attacks. Since all the services are hosted internally, only clients that are connected to the VPN can use them, so I don’t need to worry about things like SSL and authentication.
ddclient
Given that my ISP doesn’t provide a static IP, I need to have ddclient to dynamically update the DNS entry for the domain that I use, so that I can connect to Wireguard remotely.
Pihole
I used it to block ads and inappropriate contents when needed. I highly recommend it.
Miniflux
Miniflux is an RSS feed reader with a clean UI, I highly recommend it if you read RSS feeds.
Calibre
Calibre is a self-hosted library solution. I’ve heard lots of good things about it, although I haven’t started to really rely on it yet.
Nextcloud
This is my current image backup solution, it works well.
Syncthings
Unlike Nextcloud which requires setting up accounts for each user, Syncthings allows me to sync files or directories between multiple devices within the same network seamlessly.
Conclusion
Overall, this was a good purchase for me because it changed how I manage things. Allowing me to access my files from anywhere in the world was a huge boost to my productivity, also it was fun to play around with it.