Lessons in Self Hosting
Several months ago, I decided to liberate myself from the corporate cloud ecosystem that I have been so heavily invested in. This was a decision based partly on political factors, but also heavily on my curiosity. I knew there would probably be trade offs, but I didn't know enough about what they were or how I would even go about hosting and maintaining something as feature-filled as I could get with Google or Microsoft.
OK. So how?
Pretty quickly I found several very easy solutions for getting yourself a private cloud, fast. Both Nextcloud and Cozy offer one stop shops with many features that can easily be deployed to a private server or a Raspberry Pi. In either a few clicks, you can be comfortably up and running a rather comprehensive solution. I also found Cloudron, Yunohost, and Sandstorm all provided single stop solutions that allow you to install all kinds of server applications without having to worry about the ins and outs of maintaining a server.
In case I wanted to get my hands a bit dirtier, I looked at Sovereign, an Ansible role that allows quick deployment of a full system on any private server or computer you want. Though not as packaged up and more manual maintenance than those listed above it is a very comprehensive option.
With so many options and little regard for my sanity or what little hair I had left, I decided to ignore all these fantastic options and completely deploy my own cluster using Docker!
But why?
Despite being harder, I figured it couldn't be too complicated. Plus, there are so many individual applications out there that I'd like to try, why would I lock myself to one that is supported by one of the all-in-one solutions I found? Surely doing it myself would be more flexible!
How hard could it really be?
Regression
And here we are... 8 months later. I've learned a lot about hosting, proxies, Docker, DNS, and more. Most importantly, I learned that my time is more valuable than the flexibility I desired. The blog you're reading was set up by me in one click from within my Cloudron install. Everything works, but it still feels like cheating...
I hope to dive deeper into some of the lessons that I've learned and some of my process, as well as share some potentially helpful configuration for anyone who wishes to follow the same (if not sane) path.