pomelo
04 Oct 2020Build
When one of my previous workplace closed, I was gifted a complete server setup inside a blank ATX-sized tower.
For a few years it was used as a cryptocurrency mining rig, but since it was not profitable anymore, I began to think of how to repurpose it.
At the same time, I was very frustrated by multiple things in my life :
- my files were scattered between 4-5 different external HDD. Keeping them in sync was painful.
- Using Backblaze as a cloud backup meant I had to keep those HDD plugged in often.
- Time Machine backups on a single HDD plugged-in an Airport Extreme was pretty slow with our 5 macs.
- Kodi is very ugly and a pain to use.
- my rapsberrypi was getting overwhelmed with docker containers.
- I wanted to take back control of my data
While this was on the back of my mind, the pandemic hit, and I suddenly had much more free time to start working on the obvious project of building a complete home server.
In terms of raw performance, the current setup is as follows :
- 12-core Intel i7-5820k @ 3.30GHz
- 8 x 8 Gb DDR4 RAM
- 256Gb M.2 SSD
- 9 sata ports for 3.5” disks
- Ubuntu Desktop 20.04
Being on a tight budget, I took the time to plan my transition. I would reduce my current backups, juggle data between disks while moving the disks to the server and then moving that back to it. The whole process took me about 2 weeks. I have upgraded the disks in all data pods since, I essentially wasted 2 weeks there…
To prevent bit rot and further secure my data, I decided to use ZFS for my data pods :
- 3 x 6tb in raidz1, 12tb available for critical data, photo & video backups, time machine, etc.
- 2 x 8tb in mirror, 8tb available for tv series.
- 2 x 4tb in mirror, 4tb available for bitcoin node, ps3 isos, torrents, all around scratch disk
- 2 x 12tb in mirror, 12tb available for films and other related files.
Total of 36tb available, currently 75% full (I’m a real data hoarder).
Building the zfs array was quite straight forward and simple. It’s also very easy to health-check the pods (zfswatcher), scrub them or replace disks.
Since I used Ubuntu, I could not use Backblaze anymore, and decided to switch to Crashplan. It’s as easy to use, but it’s much, much slower to upload. Even with multiple tricks to speed up the process, I manage to backup only 25% of my files in 7 months.
Services
Quite a few services are always running on my server, all run them in detail here.
CrashPlan (Code42 GUI app) is always running with a high priority, to backup every new files.
To use the server as a NAS, accessible from our 5 macs, I’m using netatalk
to create a few afp
share points. I can even make one that’s recognised as a time machine destination. See instructions here.
A pihole container is running, to block all ads in our LAN and uses DNS-Over-HTTPS. I use a docker-compose inspired by this post.
A complete bitcoin core node is always running too. Still in GUI mode.
Lately, I’ve been giving my wasted cpu cycles to BOINC, in order to help scientific research.
I had a few trading project running, but they are down now since I paused my work on them.
Plex
There is a complete Plex system running with docker-compose :
There is also a deluge with vpn (ProtonVPN) container, to separate my traffic.
All of those services are running behind a reverse proxy, so I can access their home pages using my domain with https (as I use CloudFlare to manage my domain, I have access to a free ssl certificate):
Other services:
- Tor relay
- I2p node
- zfswatcher
- wireguard
Finally, I monitor my server with a mix of Cockpit and NetData.
Future projects :
- Take back control by self-hosting more services/alternatives (BTCPay server, DomainMOD, etc)
- Add a UPS (that’s quite urgent)
- Switch to cli for my last GUI apps, and Ubuntu Server.
- Minecraft server
- Build a dead man’s switch for password and information release.