Self-Hosted
There are plenty of aspects of the web today I could complain about: content, performance, or advertising, just to name a few. But for this post, I’m going to consider control. Recent history has enlightened us to the security disaster that is big data on the internet and the unfortunate truth that the greatest victims are not the companies that store it, but the people whom it represents. And that is possible, at least in part, because we willingly ceded control of our digital assets.
Allegory
It is 1100 AD Europe. Maybe you’re fortunate enough to be a freeman, statistically unfortunate to be a commoner, and, due to a nuanced misunderstanding of the laws of time travel in hypothetical examples, even less fortunate to be a computer programmer. Your parents tell tales of the days they lived as freemen, outside the unrelenting grasp of a manor and its lord. Now it seems that each year the master demands more work and more taxes, which for you means more lines of code in the form of mystical runes etched into stone. After all, the first computer was a complex set of water wheels and ducts vaguely bearing mild similarity to the flow of current in a transistor, ironcally matching the power of an Intel i9 processor without hyperthreading. But what can you do? You own nothing - not the tools, stones, or even your adjustable desk, which is a wooden board resting on the back of a well-trained mule. Ergo you simply trudge onward, leaving management of necessities such as food, shelter, and protection from the neighboring tribe of incompetent wizards in the hands of those with power: the fuedalist authorities sitting in their stone castles playing a primitive form of Texas Hold’em with coins made of precious metals.
Fast forward to the future, where we have eschewed uncivilized practices of lords and peasants and the untenable oppression of vast power differences. No longer do we face a problem and say to the powers that be, “You can take all of my liberty, just let me placidly erode on a choice item of seating furniture in front of roughly eight million rapidly blinking lights1.”
This is, of course, to say that we really haven’t changed our situation much, and that we are metaphorical peasants under the tutelage of the four horsemen2. Technology has not enabled us (or rather we have not used it) to change the power dynamic between groups of people.
Decentralization
For those who pay attention to such things, decentralization of the web has become a bit of a buzzword. In my mind it can means two things:
- a service stores its (user) data in many small pieces on machines that are owned by people rather than all together in its own (cloud) infrastructure
- there are many services providing similar functionality or many instances of a single service, in either case integrating together to create a cohesive network
Why is this important? I posit that data is an immense power of unprecedented and underestimated influence in the internet era, and it is being weaponized against consumers or less capable businesses. Consider how easy is it for Amazon to destroy a business. A third party seller lists a product on Amazon, giving them a full report to sales numbers. Amazon may decide it is a profitable enough product to create their own and list it higher or advertise it stronger than the third party, who is powerless to stop it. If technology enabled that business to deploy their own digital store in a manner that didn’t hamstring their ability to be found by consumers, they would have to worry more about maintaining a competitive product than fighting for digital priority in a world beyond their control.
Continuing with FAANG3, think about the most basic service Google offers: search. It is foundational to their business, and yet they offer it for free. Why? Because they extract value from you, the user. To quote a common adage, if you do not pay for a service, then you yourself are the product. Google uses your search information to create extremely valuable marketing data and probably much more. But we have come to expect this and many other services (mail, docs, etc.) to be provided for free, and so we have condemned ourselves.
It is not my intent to vilify Amazon or Google - I actually think the success of this model is the fault of the consumer, the technologist, and more generally societal values.
Returning to the idea of decentralization, while I find both definitions compelling, the latter is simply of greater interest to me. My use of services is largely personal, and when not it is most often from a desire to share content directly with a specific person. This is easy to achieve with the simplest form of web hosting.
Not all centralized services are bad
I find applications like DuckDuckGo trustworthy. Perhaps I am too easily trusting of their privacy policy and execution of it, though I am very fond of how openly they explain their business model. It assures me of their value proposition.
Another service I’ll shout out is SourceHut. The creator has a track record of commitment to open source and public posting of how profits are made and where the money goes. It is a chiefly user-focused application, even if the target audience does not include users of all other source-control applications (the intentional lack of pull requests comes to mind).
Player two has entered the game
I’m not particular on online shopping or social media in general, but I do interact with a centralized web in many other ways: GitHub, Google Docs, etc. I have usually kept a servers or two running - maybe just to transfer a few files around or deploy a small, toy site for a short time. I think having a small corner of the internet appeals to an idealized sense of a hacker, and all of my career has involved developing programs that use the web.
I have no pretense of an ability to compete on a per-feature basis with centralized services, nor that this effort is a clear win. It will require some simplification and willingness to accept lesser functionality. And of that I am quite willing; you should know I speak as someone who carries a flip phone (a story which I’ll save for another post). I am writing this post in a terminal-based text editor using aspell. That said, just by narrowing the scope of comparison to my practical wants, I can easily classify many features to be simply useless, greatly bolstering my ability to “compete”. In other words, the tools should closely match how I want to use computers, and anything more provides me no value. That indeed means that my solution may not work for another, though I am hopeful it will be useful in the forms of inspiration or demonstration.
My career and personal experience with software make me capable of working on competing services. And while I am willing to do so, I find the challenge of running the services much more interesting. There are many fantastic, free software projects that fulfill a variety of roles, and my goal is to 1) choose them carefully and 2) facilitate combining them into a personal network.
Next Steps
So I am setting forth on a journey to systematically eliminate the use of big services from my normal use. It’s not going to be terribly hardcore - I know I’ll have to keep accounts around to interact with other people. But my personal items will all be managed by programs I run. Email is a notable, up-front exception, since it has a reputation of being quite painful to host4.
Here are the first few services I have planned:
- This blog, created with Hugo
- A git remote for my personal projects via cgit
- An object store via MinIO (many other services require an S3-compatible storage backend)
- CalDAV or some equivalent - I have not spent much time looking into these yet
- nginx to front these services, given my familiarity
I want to at least mention Nextcloud. While it doesn’t quite align with my personal ideals for software in this specific approach, it does seem to be a very comprehensive solution. If you have a similar desire to run your own services, but aren’t quite as technically-minded, give it consideration. I think it’s fantastic that they preinstall their software product on ownable hardware.
-
An approximation of the number of pixels in a 4k display ↩︎
-
Common acronym for Facebook, Apple, Amazon, Netflix, and Google ↩︎
-
This doesn’t necessarily mean that email software is hard to run. As far as I know, the biggest challenge is not being classified as spam, which could place a great inconvenience on friends and family. Maybe I’ll end up switching to something like Fastmail. ↩︎