I have tried at various points to write a followup to my “so what’s it like using a NUC for a homeserver/HTPC?” post. Mostly it strands on there not really being anything new to add. It works. The added workload of more applications (and maybe more traffic?) over the past two years has made it run a bit warmer and louder than it used to despite being de-dusted a couple of times. But it’s still doing it’s job. I have thrown in some docker containers and they work just fine. Run a virtual machine with kvm? Sure. As of now the main threat to it’s immortality is it’s inability to transmit 4K over HDMI. Not that I’m about to buy a 4k TV but some day, yeah?
The main thing that has kept me wondering if it is the right pick is the question: Did I splunge needlessly? Could I have gone for something cheaper without sacrificing anything? Specifically: Could a Raspberry Pi have done the job just as well?
I picked a Raspberry Pi 3 up at the post office on monday so I should finally be able to get an answer. I’m not replacing my own machine; my dad need a new home server after his Atom-powered fit-pc2 gave up the ghost. I quizzed him about his needs and found that they were fairly basic: A ‘LEP’ web server (Linux, Nginx, PHP, no MySQL) and for HTPC purposes access to the national broadcaster whether through browser or a Kodi plugin would suffice. This, I thought, had to be a good test case for picking a Pi over a full x86-based machine.
The short answer is that the Pi made me smile. Smile in wonder at what can be achieved with so little. Smile with that geeky satisfaction of using the right tool for the job. And smile just because it is kinda cute. Look at it! It’s so tiny! It has a charming, wellcrafted, Openbox-powered interface built on top of a solid Raspbian base. It boots to desktop faster than my Skylake i5 powered desktop running on an NVMe ssd! (I blame the Nvidia drivers when starting X?) The problems I’ve had with it so far have mainly been the result of me trying to be clever when I should just have trusted in the Pi.
Let me give an example: After ‘installing’ (i.e. unzipping) the image on to the SD card on my laptop, I noticed that the root partition was only using 5 out the card’s 32 Gb. Using Gparted I expanded it to 10 Gb, using the rest for a ‘data’ partition. It turned out that the OS was expecting to be able to expand the root partition itself on first boot and so got stuck when it met my arrangements.
Another one: I spent a fair amount of time trying to figure out what kind of hardware accelerated video I could squeeze out of the Pi and get mpv and VLC to use it. This was meant as preliminary steps to getting hardware acceleration working in Kodi. Turns out that Raspbian comes with omxplayer that is preconfigured to use the ‘OpenMax’ hardware acceleration (as opposed to the VAAPI and VDPAU specifications that I was used to) And when installing Kodi from the raspberry pi repository is preconfigured to use omxplayer for rendering.
While I’m pleased with it as a dad-puter, I’m also pleased that it’s not my own homeserver.
HD video works but looks just a little bit off. Literally lacklustre as in there not being any lustre. Streaming 720p is ok, 1080p makes the UI response laggy and wonky. The analog audio output is pretty terrible which is entirely to be expected. Of course if I was setting it up for myself I would grab the digital audio from the HDMI signal but my dad insists on using an old monitor with only DVI for input.
Network transfer speeds are nothing to write home about. Using the wifi I needed to transfer a 1 Gb archive of my dad’s web site to it. Away from the computer I had left access open to through SSH but only from within the local network. So I scp’ed the archive to my own server without any issues, ssh’ed into that and figured I would just scp it on to the Pi from there. No. Maybe if I break into smaller 100 Mb parts? Nope. Limit the bandwidth to a thousand kbit/s? Nah. Scp-pulling instead of ‘pushing’? Nein. Rsync to the rescue? Forget about it. Stalls, broken pipes, hissy fits, tears. I gave up and copied the zip file on to the Pi using a USB drive when I got home.
My dad’s web site is… something quite special. Basically it’s plain html hand-formatted. But he wanted the same footer and header so it’s actually php that stitches those on to every page. The content is in the pages he edits, not in any database. I would try to get him onto static site generators but life is short, time precious, and old men stubborn. So I’m just going to get his stuff to work. And work it does. With no javascript, hardly any CSS and as mentioned the barest scraping of PHP it’s surprisingly snappy. Would a MySQL based program work? WordPress? Nextcloud? It’s possible but I cant imagine it would be fun and responsive.
Needless to say it wouldn’t work as PC gaming computer or even a Steam link as there are no Steam builds for the ARM architecture. On the other hand I’m sure there are enough emulators that run on the Pi to keep you entertained for decades, if you like retro stuff.
I think it boils down to this. Yes, you can cover the basic functionality of an HTPC plus web server machine with the Pi but it’s not up for anything. You would need to adjust the way you do HTPC and the way you do web server to the machine’s limitations. The NUC is a general purpose computer: You multitask, you try things out, you don’t worry too much about ressources, you make the machine adapt to you. The Pi requires you to adapt to it. If you want this, you do it this way. Omxplayer as the only way to get hardware accelerated video being the obvious example. As a sandbox for selfhosting the NUC suits me to a tee. As a made to order two-job machine, the Pi is perfect. Switch the roles and the NUC’s power is wasted and I would start chafing at the restrictions using a computer-but-not-really would impose.