While playing games on an Arm box with an NVidia card and reasonable frame rates is cool, that’s not exactly what the developer box was intended to do. The idea is, as I said earlier, to give people the same experience of developing on an x86 box. Playing games is obviously part of it, but with an underpowered CPU, the bottleneck will move away from the GPU, even with nouveau drivers, pretty soon.
Other people are reporting using it as a build machine, so I decided to use it as a local (private) cloud box, replacing our ageing media server (Celerom dual core based).
For this application, we don’t need a GPU at all, so no need for any PCI devices. I’ve also decided to add back the 1TB hard-drive, as the media partition. Interesting enough, the board + SSD use about 12W on idle without the spinning rust, but 17W with it: 50% more! With the prices of 1TB SSD falling, I’ll be investing in one pretty soon.
Everything else was still the same. Same main SSD disk, same 8GB of RAM. The only change was to flip the jumper to make it boot when powered, given that I won’t have access to the power button any more.
The Form Factor
For a few weeks, I left the original case in the living room. While it worked fine, it was big, clumsy and there really was no good place for it. So I decided to buy a 1U rack-mount case.
Too many cases to choose from, most of them over £100 and with all bells and whistles I don’t need. But I remembered one that we used in the Linaro lab a while ago: SuperMicro SC512-260B.
It has more than enough space for the (slightly too large) mother board, two HDDs and the power supply, and you can get used ones for £40 on Ebay.
So I got one, installed the board in it and was quickly reminded of the data centre experience. Unsurprisingly, the giant fan was a bit too much, given that the CPU has a passive heat-sink and the DIMM is right in front of it, stopping any decent air-flow. After removing it, I then realised the PSU was equally noisy, if not worse. For data centre standards, it was relatively silent, but for a living room, while people are trying to watch a film, is unacceptable.
Back to the original case until I find a solution. None of the 1U PSUs are remotely silent and people reporting having to buy sound proof racks for their homes. I wasn’t going to cash out that much, nor I have space in the house for that, so I had to fine another way. It was then that I remembered that the board is really really low powered (12W is nothing), and that other similar boards (for example, the Macchiato Bin) are powered by a 12V PSU.
That’s when I found picoPSU. For £25, you get up to 80W (4x more than I could ever need) and zero noise. The PSU is completely silent and, guess what, accepts 12V input.
With that in, I could power the board silently and managed to remove the PSU and everything else other than the outer case. I printed an adaptor for the 12V socket where the 1U PSU used to sit, but only later realised the mother board is too big and the 20-pin sits too far from the end of the unit, so the cable is just too short.
Nothing that a ceramic drill couldn’t fix. I hacked the side of it (literally, the metal is all dented) and screwed the 12V input to it. Given this is not a rack mount anything, it will do just fine.
Finally, I printed some mounting brackets, fixed them 19″ apart and hanged the server behind the router, in an invisible corner of the living room. Neither noise nor visual pollution.
For the cloud software, there isn’t much choice. You either pay for the services (with money and your privacy), or you run ownCloud / Nextcloud. After asking folks that know a lot more about clouds than I do, it seems Nextcloud is the one to go. It might not be as complete as ownCloud (given its history), but it’s the one that has the highest chance at succeeding while still remaining mostly upstream.
Installation is pretty trivial via snap. After installing, you should follow the installation guideline to enable the Admin user, create users, enable HTTPS, etc. You can play a bit with the plugins and configurations on the website, but I realised Nextcloud is a bit on the slow side.
Of course, with an A53 @ 1GHz, I wasn’t expecting a lot. But I had a shared instance for a while on a cloud server and it was even worse. Looking at the CPU load, it’s mostly empty, with one or two CPUs maxing out. This means that the access is serialised into one process and everything is done inside it. It’s reasonable for large powerful servers with hundreds of users, but it’s inadequate for smaller (more scalable) servers or shared cloud servers, where standard Apache works very well.
I don’t know what the structure of Nextcloud is, and it seems to rely heavily on MySQL, which could explain why everything has to be serialised. Using cached static objects (especially for images and videos, which take many seconds to load and usually crash the PHP memory limit).
All in all, it’s better than building by hand, but honestly, for such a hype, I was expecting a much more professional product.
The machine is suitable for web workloads, and I believe the shortcomings of Nextcloud would be felt in an equally priced x86 box. The form-factor, however, gains silence from consuming under 20W at full loads (less when I get a new SSD), not needing any active heat-sink on the CPU and not having a GPU at all. Even with the large motherboard, I could still have half the size on the rack-mount and still fit everything perfectly. All of that at a fraction of the power budget of a Celeron-based NUC.
If you want additional network ports, you can get a 90-degree PCI riser (which fits into the x1 slot) or a flexible PCI cable (so you can fit on the x8) and add up to four ports easily in the one slot available. I haven’t tested routing workloads on the dev box yet, but the CPU is more powerful than the majority of the routers available, so I doubt there will be any performance issues. If you have done that, feel free to add comments below.