Self-hosting: server hardware#
Over next few weeks/posts, I’ll focus solely on self-hosting adventure. To start, beside free time and motivation to learn new things, you will need just a few components:
internet connection with public IP
router allowing port forwarding
server hardware (old computer, old laptop or mini PC)
domain with DNS zone
server software (yunohost)
and apps/services.
Previosly, I wrote about steps 1-2. Today, let’s just focus on the point 3.
Server hardware#
You can use any computer for selfhosting: an old computer/laptop, mini PC or single-board computers (Raspberry Pi etc). Some people even use their old mobile phones for selfhosting.
My recommendations:
dedicate a separate machine for selfhosting: don’t use computer used daily for work/play
something small so you can place it next to your modem/router
CPU
x86-64 architecture (AMD/Intel) will be likely simpler in the long run than Arm (some apps/services still don’t support Arm)
4 cores and ideally energy efficient (5-15W TDP)
memory: at least 8 GB of RAM memory (16 GB recommended) with possibility of upgrading
storage: 1 TB of NVMe with possibility of upgrading (additional NVMe/SATA slot)
connectivity: 1 Gbps LAN is a must
I think you should be most concerned with a CPU, both its power and efficiency. You don’t want something slow. At the same time you don’t want anything producing a lot of heat. You can know the amount of heat produced by the CPU by looking at thermal design power (TDP).
Simply put higher TDP ~= more heat ~= more noise from fans.
Some CPUs with low TDP (5-7W) used in ultrabooks and mobile devices can dissipate heat from CPU without fans, while some high-end CPUs (200-300W TDP) used in academia or industry require liquid cooling.
Ideally, get familiar with CPU benchmark website. Beside CPU details (number of cores and threads, its speed, prices, TDP) they also rank each model using CPU Mark: higher score ~= higher CPU performance.
For example, here you can see comparison between AMD 5560U, Intel N100 and i5-8250U. The latter CPU is in the old laptop I bought in 2019 (currently used by a friend). I was considering using it for selfhosting or buying new mini PC. AMD 5560U uses as much energy (15W TDP, so it generates as much heat) as i5-8250U, but it’s ~3x more performant. N100 uses ~3x less power than the former, but it’s also ~3x slower.
Honestly, I could live with both. So it went down to costs: I could get N100 with 8G RAM for 200€ or 5560U with 16G RAM for 300€. I chose the latter.
I got my Beelink SER5 (AMD 5560U, 16G RAM, 1TB NVMe) under 300€ from Amazon in Jan 2023. Note, since I’m actively boycotting US bigtech firms nowadays I’d rather pay more and get it from local, EU distributor.
Slimbook (Spainish retailer) offers two mini PC options:
Zero (N100, 8G RAM, 500G NVMe) starting at 229€ or
One (AMD 8845HS, 16G RAM, 500G NVMe) starting at 699€.
You can definitely get similar builts cheaper from bigger retailers. For example, PC Componentes offers several brands at decent prices (just sort by ascending price).
Breakdown of the costs of self-hosting so far:
public IP: 1€ monthly (assuming you already have a fiber connection and a router)
mini PC: 200-300€ one time payment (or nothing if you use some old laptop/computer)
Now, 300€ may seem like a lot for a hardware. It definitely isn’t nothing. You may consider VPS, but soon you’ll realise if you need real resources (4-8 cores, 16G RAM, 1T storage) you’ll end up paying easily 30€ monthly. So your investment will pay-off in less than a year. (You’ll definitely find cheaper options at US bigtech, but it always comes with strings attached, such as limited data exgress, so you pay extra for each GB of data downloaded. This can be costly, especially across continents!)
Besides, for many reasons, such as physical control over the hardware and data in it, you may choose to have a server at home.
For me the calculation was even easier.
We love to watch movies. We have a projector in the living room. Taking my laptop out of the office and connecting it to the projector every time we want to watch something started to be annoying. (Beside, I really like to keep my work laptop in the office. And I’m trying not to use it outside of working hours.) So I’ve been looking to buy a dedicated computer for home cinema anyway.
I figured a mini PC I got will be just perfect for both tasks, as a home cinema and selfhosting server. I placed the mini PC next to the router and connected it to the projector using USB-C to HDMI cable through the wall. Added a wireless mouse and created dedicated user in the server with passwordless login.
Voila! Now everytime we want to watch something, we just start a projector and use the mouse to navigate through our home media library :)