Head in the clouds, files on an actual server
Servers are high-grade computers not very different from a regular desktop machine, usually having multiple processors, redundant disk systems, and high-speed network adapters installed on a high-end motherboard. When people talk about "the cloud," this just means using servers that are under somebody else’s control. Even if you do have control of your own servers, they are still a minefield of freedom issues, although there are a few good options.
Freedom advocates often make the point that the backbone of the Internet runs on free software. And while it is true that many free software applications have made their way to be the standard of the industry – be it HTTP servers, databases, code processors, virtualization systems, or management software, among many others – it is still hard to build a completely free software solution if you take into account networking devices and appliances. And in a time when corporations and governments are pushing to weaken our privacy by trying to outlaw or cripple cryptography, or by planting backdoors on common software and hardware, having servers we can trust from the ground up is a priority.
Servers are usually managed remotely by administrators who connect to them to perform setup and maintenance tasks in an efficient way. This is usually done at the application level, but modern servers also offer methods to gain control at a much lower level, in a way that is independent of the operating system or applications that the machine is running, often even if the machine is turned off. Such methods provide complete control over all the data and actions performed by the machine without the operating system being aware of it. Those capabilities could be useful for a sysadmin who has to work with many machines, but when control is in the wrong hands, this access becomes the ultimate backdoor. Most modern processors implement such features: Intel calls it Management Engine, and AMD calls it Platform Security Processor. They both include it in every processor they currently make.
The code that implements these backdoors is of course nonfree software, so we cannot be sure if it is there to serve us or somebody else. Even if we were to assume that it has been placed there with nothing but good intentions, we cannot audit the proprietary software and we should not trust it. In a similar way, many server motherboards implement remote control functions in their BIOS, which should be avoided for the same reasons. At the FSF, the platform we selected to avoid these problems uses the last common CPU that did not implement any backdoors: AMDOpteron 62xx, released in 2011. It runs on a motherboard (ASUS KGPE D16) that is compatible with the free BIOS replacement, Libreboot. It is powerful enough for a single server to run dozens of virtual machines efficiently.
Selecting all the other components that a server stack usually requires is tricky. Fiber optics network cards have embedded firmware that can potentially host backdoors at a network level, and so do switches. We opted for 10-gigabit Ethernet controllers (Intel X540) that work with the GNU Linux-Libre kernel and unmanaged switches. We also chose a Linux-Libre compatible disk controller card with no RAID support, to avoid non-free firmware blobs. And of course, these servers run on fully free GNU/Linux distributions.
The resulting server stack allows for large amounts of fast storage, which is replicated through the network using Ceph. This data pool is then accessed by servers running virtualization, and every component is fully redundant and load-balanced. With this we achieve the most powerful, freedom and privacy respecting servers available today. But there are still things to improve: hard drives have nonfree embedded firmware, and processors contain microcode. These are big black boxes that still need to be set free through reverse engineering.