What Makes Self-Hosted Possible?
Self-Hosting is pretty awesome, but 10-15 years ago it just wasn’t possible because you would spend the most of your days installing and updating/maintaining software.
First, a brief history. Self-Hosting can date back to the days of phpBB and vBulletin where people would host forums on web servers, typically servers that were shared by many people. Tools such as cPanel’s Fantastico allowed simple installation of these applications, and each application handled updates. Applications took a lot of overhead work updating the frameworks and tools that go into hosting the applications, let alone the applications themselves needing updates. Then you had to worry about breaking compatibility between multiple applications needing different versions of software. For developers, it meant developing installation scripts and tools to manage the applications, and editing messy configuration files. It was a nightmare.
Nowadays that is simplified heavily by two newer concepts: CI/CD and Containers.
CI/CD stands for Continuous Integration and Continuous Delivery, which means once code is written and tested by a developer in the development environment, the code gets pushed to a repository, then events are triggered to start building the code and testing it. If it succeeds it goes into more testing, and if it passes all tests it is deployed into production.
All of this process is mostly automated, and can take anywhere from 5-10 minutes to 3-8 hours or more per application, which would have been hours to days without the automation. The entire process makes it possible for many to have self-hosted apps, which run in containers for flexibility, portability, security, and to address issues with varying versions of software dependencies and operating systems.
Check out the video below to learn a bit more on how it works and all of the components involved with setting it up.
Then you have containers, which as previously stated do a lot in themselves. They help with the user aspects as well as the development side, making it relatively simple to get an app up and running and ready to use. In fact, an entire 10 page tutorial could be summarized into one 50-75 character command.
Containers also improve upon security, by isolating software from other software and preventing it from infecting the host operating system. Due to how containers work, the storage isn’t actually persistent unless you specifically tell a folder to persist to the host. This means that if you were to get infected you could simply restart the container and be right back at a freshy copy of the software.
Then there are updates. Updates are still a bit wonky for some applications, as one has to account for upgrading from any version to the latest version at any point in time. More could be done and some apps still need manual intervention, but ideally you should be able to auto-update your self-hosted applications without any worry just by telling it to use the “:latest” version of the container.
Learn more about containers in the video below.