Self Hosting, or How I Learned to Stop Worrying and Love to Integrate open source software

Nowadays, working using only a browser is, for many workflows, possible, even simpler than having to install a bunch of desktop software, and sometimes, do all of it without spending a single penny. But as the saying goes, there is no such a thing as a free meal. Tools such as Google Docs and the free tier of Office 365 are all tied to proprietary licences and are all about monetizing your data. So, how to have the benefits of a this new "thin client model", but keep independence, no letting your data be monetized, sold to the highest bidder, or worse, be locked down to one plattaform?

The proposal

A common worry form conscientious sysadmins has turned into almost a movement: the self hosting community. People are more and more substituting proprietary web software by open source solutions, using common, documented and open source protocols. Software such as Collabora Office and NextCloud allow most of the same functionality of those proprietary solutions, but under your control.

The bottleneck

The biggest problem of this approach? Integration. Users expect that your services will not only have feature parity to proprietary solutions, but also be integrated. Not just "hey, here is an cool email client!", but "can it attach files from your cloud storage?". How to solve that?

Yep, lots and lots of integration

My approach to solving this problem was to start with a simple design paradigm: the UNIX model. Each tool must be good in its own good and must use a standard protocol. With this in mind, the second requirement has to do with scalability. The company I currently work at has around 5 thousand users, and if I intend to migrate each and everyone of them to our internally hosted solutions, they must be capable of supporting that amount of users, so one necessary feature of such software would be horizontal scaling. Instead of adding more resources, just add another node.

The range of services to be provided were defined as:

  1. E-mail, obviously;
  2. Shared Calendar;
  3. Cloud storage;
  4. Chat;

In the following days I will be posting information on each of these services, and how to integrate them to provide an integrated self hosting collaborative solution, all based on open source solutions.