; Date: September 27, 2020
Tags: Self Hosting
What Self Hosting means practically is to install a web application on your own computer (or rented virtual server) that has similar functionality to a 3rd party web service. The goal is avoiding service fees, keeping your data private, or otherwise maintaining control over your fate.
Some examples are:
|Popular service||Self-Hosting Alternatives|
|Dropbox, Google Drive||Nextcloud|
|Github||Gitea, self-hosted Gitlab|
|Netflix, Hulu, etc||Plex, Jellyfin|
|Google Photos, Flickr, etc||Piwigo, Lychee or Pigallery|
There are many other examples we could cite. For almost any popular cloud service there's probably one or more open source projects offering similar capabilities.
But it still begs the question - why should we spend our precious time deploying internet services? Since that's what we're here to answer, let's tackle it.
When using a 3rd party cloud service, that service has your data, and having control over your data is important on many levels. Data held by a 3rd party service might leak to miscreants, or governments might demand that data. On multiple occasions 3rd party services have abruptly shut down, sometimes causing a complete loss of the data held by the service.
For example there was a popular photo-sharing website that abruptly shut down a few years ago. In some cases folks posted the only copy of their family pictures to that service, only to lose those photos completely when the service shut down.
Any cloud service provider wants to portray an aura of invincibility and permanence. That gives people the delusion that the service will be there forever. For example consider the popularity of YouTube and the sheer vast quantity of video content folks have posted on the site. In a few years YouTube might also suddenly shut down for some reason we can't forsee today. What will happen to that vast repository of knowledge that's been built on YouTube?
Self-hosting a web service means:
- Less risk of your data being stolen by a miscreant or the government.
- Less risk of losing your data when a 3rd party service shuts down.
- Fewer limits on what you can do with the service.
- You do have to spend time on system administration tasks.
- You do have to develop skills in security administration.
In other words there are plusses and minuses to weigh. There are risks to trusting your data to a 3rd party service, and there are risks to privately hosting a service.
What about the "free" or "freemium" services of the world? We've said that self hosting a service means you avoid paying service fees to use a service. For example, Canva is a free service that is excellent, and offers a few premium services to help pay the bills. YouTube, on the other hand, is completely free, and one can even be paid advertising revenue by YouTube. Then there's Facebook or Twitter, which is completely free, and is paid for by advertising sold on the Facebook or Twitter platforms.
It is said that if you're not a paying customer, then you are the product being sold. Any company has to bring in revenue to stay running. When Facebook or Twitter or Google sell advertising, what they're doing is to package up your usage data as a demographics targeting service. That means Facebook, Twitter and Google are actually advertising companies.
A service like Canva, however, doesn't advertise to its users, and instead funds itself through the premium services embedded in the service. Specifically, Canva is a platform for creating graphics like Facebook posts. While Canva offers a lot of free clipart and templates, it also has paid clipart and templates, and other paid services.
My example - saving money while gaining control over my data
I've self-hosted several services at home for several years. I started this long before hearing of the phrase self-hosting. My rationale might be instructive.
I started my self-hosting journey thinking about keeping private Git repositories. I have some projects which should not be visible to the whole world. Some of these projects were performed under non-disclosure with a client who strictly forbade me from publishing the data anywhere. I wanted to use Git to keep track of changes, use Jenkins to handle builds, and so on.
I've used cloud-hosted Git services -- both Github and Gitlab -- for years. With both (or Bitbucket for that matter) you can pay fees to have a private repository or enjoy other premium services. Client companies I worked with in 2016-2019 use paid services on Github.
But some financial mathematics convinced me to seek an alternative. It costs $7/month cost to keep private repositories on Github, and a similar price on Gitlab. How many months of Github service fees would it take to pay for an Intel NUC?
The NUC sitting on my desk cost $350 and at $7/month it would take about 4 years for Github fees to equal that amount. I've had the NUC for over 4 years, and run many more services than the Github-like repository. How much does a premium account on Dropbox or Box or Google Drive cost per month? The same NUC also hosts NextCloud. Therefore the NUC has more than paid for itself.
Nextcloud is a fine replacement for Dropbox, and is inching up on services like Google Docs or Microsoft Live360. A 5 terabyte Dropbox account costs $12.50 per month, and on Google Drive it costs about $10/month for 2 terabytes. For the cost of about 1 to 2 years of that service, you can build out an Intel NUC. With a little configuration work you could access that machine from anywhere using your home DSL/Cable Internet connection.
While traveling to the other side of the world a couple years ago, I did exactly that. I brought my laptop computer along, working all day long using repositories and other services hosted on the NUC. I even watched videos stored on the NUC streamed over the Internet. There was very little difference between using the NUC while at home, or from 10,000 miles away.