In my 2018 attempts at ditching the walled gardens I made a bunch of progress, which I’ve since backslid from, on replacing Google services with Kolab Lab’s offerings. I want to have the benefits of GMail, Google Drive, etc. but I would rather not have Google owning all of my data. At the same time I’m not going to fall on my sword and go back to mid-1990s infrastructure a la Richard Stallman either. Self hosting these things is a daunting task which I considered to be way out of the reach of this software developer. I thought that anyway until I ran across the FOSDEM session on the YunoHost system, which makes self-hosting a much more out of the box experience. Could this be the solution to my problem?
Running my own servers isn’t a new experience for me. At the same time I am 100% absolutely not an IT professional either. The types of servers I’d setup for myself in the past were generally development servers. When it came time to setting up publicly facing versions of those machines I left it up to the IT professionals in the organization I worked on. There have been a few times I setup my own publicly facing web server for a blog (this blog) or something along those lines. When doing that I used what I consider to be sound principles in securing the server, including eliminating almost all hosted services and installed software. That cuts down on the attack surface. After all it only takes one compromised service to bring a whole system down. Self-hosting with YunoHost is drastically different from that.
YunoHost provides a very convenient installation system for self-hosting e-mail and web-based portal services that range from a simple e-mail viewer to full blown NextCloud installations. Again not being an IT professional I understand the mechanics of how to install all of that software but worrying about how they interplayy, backups, updates, upgrades, and last but not least security, was where I considered it far too complicated to attempt. YunoHost cuts down a substantial percentage of this process. They promise an almost shrink-wrapped “it just works” experience. I’ve been experimenting on some local virtual machines and I have to say that for the most part this is correct. If you are green to Linux or system administration of a Linux box there will probably be some challenges. If you are like me where you have been working with this sort of software for years it’s ease of installation is closer to Gitlab than Atlassian Suite (sadly I have experience with both). I’ve even gone through a couple of upgrade cycles and yes it all seems to “just work.” So when am I converting over to self-hosting? Well that’s a bit more complicated.
When I look at the Google Services or other walled gardens and compare it to self hosting my big concerns are with: reliability, data integrity, and security. Reliability and data integrity concerns for me were initially driven by installation, update, and upgrades of the software and how they interplayed with each other. YunoHost gets over a lot of that hurdle for me. However that was the initial concern. There are others in that area too. What happens if a VM is accidentally deleted? What happens if a VM is corrupted during an upgrade? What happens if the hosting provider’s hardware is corrupted? I believe it should be pretty straight forward to address these things however before I put critical data up in a self-hosted system I want to know that it is. Being a small hosted system of one, maybe two, systems I can’t take a cattle versus pet mentality and randomly kill machines but it would be a good exercise to destroy a server and see what the recovery path was. It would be a good idea to confirm that there is an equivalent to offsite/offsystem backups to at least recover irreplaceable things like family photos et cetera. That would cover the reliability and data integrity aspects and for me it is more a matter of just doing the legwork rather than having to really delve into an area I know I have major blindspots in. On the issue of security however it’s a different matter.
There are the standard facile security posture things that I have grasp on and implement in practice. That’s the stuff I mentioned above about limiting services and ports. It’s also things like configuring SSH to require keys, disabling root SSH access, having unique and complicated passwords for each account on each system. However there is always the question of if the software itself is vulnerable. There is the question of if the operating system itself has a fully secure configuration beyond those simplest of settings. When I hosted my first web server years ago I put fail2ban on it to help prevent SSH brute force penetration attacks which I figured would probably happen eventually. I didn’t even have a domain configured yet and the penetration attacks had already begun. Security through obscurity doesn’t help you on the internet. So is YunoHost secure by default or not? I did a standard Debian Server setup when I installed the standard YunoHost system using all defaults for both but applying the security principles mentioned above. I ran some simple attack search software from another Kali Linux machine. It seemed to do well from initial testing, including blacklisting the attack server which then shut down the test barrage itself. So that was positive wasn’t it?
It could have been worse of course. It could have failed immediately. It could have had a passwordless login for a service or a compromised application. However being comfortable with that seems as foolish to me as finishing a Hello World program in new language and saying that “I now know this language” to everyone or on a resume. Even in that analogy the only damage may be to reputation, and that’s only potentially. The damage done by being overly confident in this case however could be compromised personal data or loss of personal data. I suffer from the specter of a Code Spaces event coming to my own world all the time. The long story short is that if a company who had a professional IT staff could have their guard dropped such that their AWS credentials hacked and their whole enterprised deleted then it could happen to anyone. I’ve listed many known issues to watch out for but there is so much I don’t know. From the perspective of being a good enterprise software developer, or perhaps a better one, I’ve considered taking a Certified Ethical Hacker class or two. One in particular that sounds particularly interesting now due to what I hear is very pragmatic course applicability to the real world compared to others is the Offensive Security Certified Professional (OSCP). It sounds intense, including a final exam that seems to take a substantial percentage of the 24 hours alloted to complete it. You know what would be even more intense? Watching terabytes of your personal data being deleted without having time to save it.
So will I be converting over to self hosting with YunoHost? No, not right now. The product seems pretty solid. The idea of self hosting seems very appealing too. However the dangers of self-owning via a backup or security faux pas are too great for me. However continuing to explore that idea is very appealing to me. I actually intend to continue working on YunoHost in a more development/test sort of way including up through and to perhaps getting an OSCP certification. If I could get to the point where updates/upgrades seem painless, prove that the backup/reliability strategy is robust even in catastrophic failures, and be comfortable in my own cybersecurity skills to properly secure such a system I could see self-hosting one day. Between then and now however it’s going to be more of a hobby/playground thing with my real data being hosted in Google or other walled garden such as DropBox.