Haruhi says..."This article presents practices that might be considered unsafe or hacky. Whatever you do, you're doing it at your own risk!"
For the past five years I've been playing around with the concept of having a home server - a board with a bunch of hard drives that could also run a web server and a plethora of other things. At the beginning, it was a Raspberry Pi 1B running a poorly configured nginx and sshd to allow transferring files over SFTP. In the end, sakamoto (Mk3, as the raspi was upgraded to a 1B+, and then to a 3B) was running A LOT of stuff:
- HTTP server (nginx)
- DHCP server with DNS (dnsmasq)
- WiFi-to-Ethernet bridge
- Print Server (cupsd)
- light control (custom software and hardware for turning my desk lamp on and off)
- Telegram bots (a few private ones written in python3)
- Mastodon bot (pouetbot, PHP)
- Torrents (`haiku-r1beta1-x86_gcc2_hybrid-anyboot.zip` is actually quite legal)
Throught Mk3's lifespan, it was also hacked up quite a lot - notable additions include a custom heatsink from an old GPU and a SMA connector along with a WiFi antenna hanging off the side, as seen on the photo below...sakamoto Mk3 was the longest living of all revisions, in operation since mid-2017. Its longest uptime was 153 days (and counting, because I'm yet to turn it off..)
Enter sakamoto Mk4!
This post isn't exactly about that old RaspberryPi-based server. Recently, I've decided to get an upgrade - I thought about buying the slowest Ryzen 3 CPU, the cheapest motherboard for the AM4 socket and a 4GB stick of DDR4 RAM, basically the cheapest rig for the current AMD platform. All of that would cost around 500-600PLN (130-150USD), and I would still need to upgrade my hard drive, as my then-current 2TB WD drive was slowly running out of space. All in all, that AM4 idea wasn't the best option, so I started looking for cheaper alternatives..This IBM case is awesome! Small, yet incredibly versatile.
Fortunately, my friends Alicja and Kamila have offered me a pretty cool deal (where 'pretty cool' stands for 'almost free' - thankies!) on a socket 775 Intel Desktop Board, which supported a bunch of Xeon CPUs. The board in question is Intel DQ35JOE - certainly not the best 775 board (not to mention that the whole 775 platform will only get older), but with six SATA ports, more than enough PCIe slots and four DDR2 DIMM slots, it's not the worst board for the job. Getting this board meant that way more of my budget could go towards buying storage: I originally planned on buying just one 4TB WD Red HDD, but I was "lucky" enough to find a local seller with two slightly used drives (around 100 hours of uptime each and perfect SMART) for 320PLN (83USD) each. One slightly impulsive decision later, RAID-1 letsa go!
I decided to finally make a server that would actually have a case that's not a shoebox - I torn an IBM ThinkCentre down, hacked the case a bit (I needed to bend some metal, otherwise a normal PSU wouldn't fit) and assembled the whole system.Funny how @oscareczek was the first person to actually notice that my server is running WinXP on a Celeron CPU - even I didn't know!
For the OS, I've had a hard time deciding. I didn't want to use Debian, as I've had several problems with systemd over the years. This has basically left me with Void, Devuan and Alpine. Devuan was the first to be thrown out of the window, as several packets it used were way too old, and I ruled out Void mainly because I wanted to try out something new. Alpine is made with servers in mind, so it seemed like a perfect choice. To make things simpler, I installed the OS on a boot SSD that I've had laying around - this way if any of my data drives fail, I don't need to worry about not being able to easily boot and recover the RAID.
Speaking of RAID, here's a funny story: to my surprise, this Intel Desktop Board supports some kind of hardware RAID - not something you commonly see on older consumer boards. That's great, as it would simplify my setup even further; Unfortunately, as it turns out, it detected both of my 4TB drives as ~1.8TB (weirdly enough, that's not even the MBR limit), so using a RAID-1 in this config would be as effective as staying with my old HDD. It turns out that it was a known bug on Intel's side, and it was fixed in a later revision of the Intel RAID control software.
Now, imagine that you're a hardware manufacturer, and you host crucial files for your customers to download, such as BIOS updates and drivers. As it costs you next to nothing to just host those files infinitely (you need a webpage anyways, and storage isn't that expensive anymore), you could just make your legacy customers happy and never delete content as "someone might need it later". Well, that would be Toshiba's or Lenovo's approach, but certainly not Intel's. The only thing in the support page for this motherboard is a notice that all downloads will cease to function in September of last year. One lenghty trip down the Wayback Machine later showed that my motherboard was actually running the latest BIOS, but I wasted around an hour just to verify that - not to mention finding proper files if I'd ever need those. My fix for the RAID problem was to just use the Linux Software RAID, as with RAID-1 there's virtually no performance penalty.A look inside - the cooler obstructs most of the view, but you can experience my terrible cable management (or lack thereof) for yourself!
Let's not leave Intel just yet, as they managed to break yet another thing. This motherboard proudly uses Intel Quiet System Technology, or QST for short. QST is Intel's proprietary system for implementing PWM fan control - although awesome on paper, it's terrible in implementation. Linux drivers stopped working around kernel 4.14, and I'd need to port those to the newest kernel or live with 100% fan usage all the time. Here, my fix is quite convoluted, as I connect a 4-pin fan into a 3-pin header on the mobo, only to piggyback off the 4th pin with a short cable, connected to a PWM source on the other side. Making Intel QST work would take the entire afternoon (and there's no saying if it would actually work), hacking up an ESP8266 was literally ten minutes of work. This is by far not the safest approach, but I don't really care - with a Scythe Mugen 2 heatsink the server is almost passively cooled, and I run the fan mainly because the PSU doesn't have apropriate cooling. The system idles at around 40°C with the fan at 40% of its speed; If cranked up to the max, it goes down another 3-5°C, but it gets too noisy to sleep in the same room.Final Specs:
- Intel® Xeon™ X3360 (2.83GHz, Quad Core)
- 8GB of DDR2 800MHz (4x2GB)
- Crucial MX300 525GB SSD as a Boot Drive
- 2x WD Red 4TB (WD40EFRX) as Data Drives in RAID-1
- Qualcomm Atheros AR9287 for connectivity with the outside world
- Realtek Semiconductor RTL8188EE as a WiFi AP
Looks kinda cool..?