Projects have a way of wandering, especially exploratory projects like this one. So let’s define some high-level goals to keep us on track if things get hazy.
Goal #1: Build a better self-hosted environment
Things I’d like to have:
- A 3-2-1 backup solution better than occasionally syncing important documents to a pair of USB drives
- Containerized services (GitLab, some kind of media server, etc) and DNS for these services
- An environment where I can easily play with new tech, make mistakes, and easily roll back
But the breadth of a self-hosted environment is a bit of an unknown to me. What else are others doing with their self-hosted environments? VPNs? VLANs? Single Docker hosts or multihost swarms? Let’s find out.
- Identify the common elements of self-hosted environments
- Use those common elements to make choices about my own environment
- Create and action on tickets to move towards that target
Goal #2: Polish my personal projects
Over the years, I’ve build a number of side projects to explore new technologies and new ideas (two birds, one stone).
- python-vote-core and ModernBallots.com were built to learn Python and Django, and to explore voting methods that might well be too complex for their own good.
- BoardGameMenu.com was built to play around more with message brokers and server-side caching, and to help alleviate boardgame choice paralysis.
- SortMatch.ca was built to learn Vue.js and to try and expose Glicko2 as an alternative to single-elimination tournaments.
As fun as they were to build, these projects were never built with longevity in mind. They haven’t been subjected to the same rigour as my professional projects.
I’d love to get these up and into a self-hosted GitLab instance with proper linting, unit tests, CI/CD, monitoring, etc.
Goal #3: Explore recent development and deployment standards
It’s generally not worth the time to explore new technologies until they’re proven themselves to have staying power, sufficient community adoption, etc. I’d love to explore those that I’ve avoided up to this point, but have clearly shown themselves as emerging standards.
The first on this list would be Kubernetes. It’ll no doubt be overkill for my self-hosted environment, but the point is to play with these new techs, right?