Why you should self-host your software

The standards for digital convenience and productivity have largely evolved over the past decade. Simply having a computer fitted with your to-do list, calendar, documents, and notes is no longer enough. What if you get a great product idea while working out at the gym, or want to review your daily appointments while catching the bus?
Your smartphone is most likely able to perform all of those tasks perfectly and may appear as a natural solution to this problem. However, you now have something else to worry about: how to keep those devices synchronized? If you have one to-do list and one notes collection on your computer, and another one of each on your phone, you need to worry about synchronizing their data regularly. You have not gone much further.
This was exactly the situation we were in just over a decade ago, then cloud services arrived and took the world by storm (pun intended).
The only thing you had to do was to sign up for a Google Account (which you most likely already had), sign a few EULAs (which you most likely did not read), and you got a free email address with to-do list support, 15GB of storage for your files and notes, a calendar, among other things. And you could access all of this from your laptop, smartphone, tablet, eventually even your TV. And because big corporations have to compete to be the nicest person in the room, Apple and Microsoft followed suite with their own services as well. All is great... Or is it?
There is no such thing as a free meal and if a deal sounds too good to be true, it most likely is. The agenda here is that those tech giants want you in their ecosystem. A digital ecosystem is, putting it simply, a set of products and service that interact and share data with each others: you can use a single Google account to access all of Google's services, and PowerPoint will ask you if you want to save you presentation in OneDrive instead of your local storage. When a user is engaged in an ecosystem, this is jackpot for them:
- the user is less likely to use competing products due to vendor lock-in,
- the user is more likely to purchase products within that ecosystem,
- a large part of the user's data is now available, ready to be sold for some ad revenue.
If you are as privacy-conscious as I am, this last point in particular should be a big no-no. I tend to use my calendar extensively for appointments of any kind: medical, friends, or work, and I use my notes for journaling. Some entity analyzing this data could gain a deep understanding of me as a person.
So what is the alternative? Give up and keep everything offline?
FOSS to the rescue!
Thankfully, many of the services above can be replicated - and sometimes made even better - with Free and Open Source Software (FOSS) and self-hosting.
The idea is simple: instead of connecting to Google or Microsoft's servers for those services, you connect to a server you own that runs a FOSS version of the service you are interested in: Files storage, notes, etc.
Keep in mind that FOSS and self-hosting are not synonyms: there is FOSS you cannot (easily) self-host, and there are many services you can self-host that are not FOSS.
Self-hosting means you are hosting the services you use on a server you own, but it needs not be a physical one. If there is a cloud computing provider you fully trust, it is totally fine to host your services in one of their Virtual Machines.
There are many benefits to self-hosting.
Privacy
You know where your data goes and how it is (not) used to profile you. FOSS code is publicly available which means it is audited by knowledgeable people - which can include you as well!
Ownership and control
If you want your service to support more storage or integrations, it is often only to add resources and modules. No need to subscribe to a more expensive subscription tier and agree to more EULAs.
Also, you have control over when the security policies in use and decide when the updates should occur, how is the data backed up, and more.
Finally, you are safe from any policy or strategy change from a specific vendor. Google has for instance a certain tendency to kill some of their services despite being used and sometimes beloved by their users. Nothing is more stressful than knowing the service you have poured time in setting up for your usage is going to be discontinued. With FOSS, even if the project maintainers decide to take a break or abandon the code entirely, the community can step up and pick up where they left. This leaves you much more time to consider if you want to stick with the project or move on to something else.
Learning
You will have to set up services from scratch, and make it available over the internet securely. This is a pretty valuable skill to have for anyone interested in IT-related professions.
And even if you are not in this industry, it is definitely going to come in handy if you ever need to set up a small business website.
Flexibility
FOSS tends to adhere more to open standards than commercial products, making switching between services of the same kind easier.
Some cons?
You can definitely count on self-hosting being overall a larger effort than simply using some commercial cloud service. You will need to select your services based on your needs, provision some server to run it, secure its access, keep it updated, and more. When signing up for a Microsoft account is a 2-clicks work, it truly does not compare.
Also, self-hosting can typically end up being more expensive. In particular, if you decide to self-host on a physical server, there will be some upfront cost for the hardware. As your usage gets more advanced and your needs more extensive, you could end up saving money with the self-hosted approach but for basic needs you will not have a great deal. For instance, a 100GB storage account from Google costs less than 2€ per month - good luck paying less than this when self-hosting. Not that self-hosting will be significantly more expensive, but do not expect cost savings compared to Google or Microsoft's services which are subsidized by their ad business and also benefitting form a quite huge economy of scale.
How do I get started?
I am currently working on a follow-up article detailing how you could get started in this adventure. In the meanwhile, here are a few great resources you can read:
- A list of alternatives to Google products: DeGoogle,
- Awesome Free Software that can be self-hosted: Awesome-SelfHosted,
- Nextcloud - open source content collaboration platform: Nextcloud,
Until next time!