If You Make Software, You Should Self-Host Something
If you write software for your job, you probably write software that runs “in the cloud” somewhere that users access it over the internet.
Do you know how all of this works?
Probably not.
I don’t doubt your skills and knowledge as a developer. Software deployments are so complex, even small companies have teams dedicated to managing deployment and uptime.
Self-hosting something–anything–can teach you a lot about how software runs on the web. Knowledge that is essential to being an excellent engineer.
While your company might deploy with Kubernetes triggered by your git workflow, the fundamentals of how software runs on a computer aren’t that different between a small self-hosted VPS and a k8s deployment.
What Should You Self Host?
There are plenty of open source projects you can self-host these days. You can deploy any of these just to try them out and then tear down your server. Here are a few ideas:
- Host your blog with a Caddy or NGINX server in front of it.
- Run a kan instance for your own todo list.
- Deploy a WordPress site on a VPS.
- Deploy a MiniFlux RSS reader (you do use RSS, right?)
- Run your own password manager with Vaultwarden.
- Run Trivabble, a Scrabble-like game with no rules.
Where Should You Host?
- Your own computer.
- Start here. You already have this computer! Edit your local
/etc/hostsfile to give yourself a fun domain that you can access from your local system. But you write software for the web, right? So you should deploy to a virtual private server.
- Start here. You already have this computer! Edit your local
- A Virtual Private Server
- Find a provider of your choosing and deploy a small VPS. Get this connected to the internet and deploy an app. Find a free subdomain provider and connect it to your VPS.
- A Computer at Home
- If you have a spare computer you can keep running, set up a web server on it. This will require more tinkering and probably require a reverse proxy to expose it to the public internet.
How To Host?
- Manual! You’ll learn the most this way. Follow the install instructions on the app you chose to get it up and running. Once you can log in, celebrate!
- Automated(ish). YunoHost is a software for managing your server. Once you’ve done it manually, you’ll appreciate all the work that’s gone int to YunoHost. The docs help you understand how user roles work on the operating system and how applications are protected from reading one another’s data.
Self Host for Fun
You really don’t need to keep apps up and running. Remember that the point is to get something out here, break it, and learn to fix it. Along the way you’ll learn about unix systems, application processes, resource management, backups, downtime and application resiliance.
Try self-host something and have some fun.