Also, I thoroughly enjoyed your article -- How AI is disrupting the demand for software engineers: data from 20M job postings (https://bloomberry.com/how-ai-is-disrupting-the-tech-job-mar...). I've subscribed to your newsletter as well. Keep up the great work!
I recently dove into setting up my own server as well. I also wanted to understand how to self-host my own solutions and get my hands dirty while doing so and not just rely on the hosted solutions. I'm only a bit farther than you are on this, but I'll share what I've learned so far and the resources I've found helpful.
After looking through many server providers, I ended up buying a server with Hetzner[1]. They are a better bang for your buck than DigitalOcean, Vultr, Linode, etc.. and are much more reliable than anything you will find on lowendbox. According to the StackOverflow 2023 Developer Survey[2], they are one of the most popular cloud providers, and the most admired cloud platform. I was surprised when I learned about this because I had never even heard of Hetzner before I started this journey.
The friends over at r/selfhosted are a great resource. They seem to be more about self hosting your own solutions to common software you use, like email and cloud storage. It isn't really my use case, I am more exploring hosting my own sites and apps and databases like you, but they have good tips and advice on getting your own server up and running.
DigitalOcean offers a 'Getting Started With Cloud Computing' tutorial series[3] that I found immensely helpful. They assume no knowledge at all, and walk you through everything, from explaining what web servers are, to the best practices around security practices for your server. It is a denser read than some other tutorials recommended here, but I highly recommend it if you are looking to learn and explore deeper into the subject.
If setting up your server declaratively (i.e., writing your server settings like you would a config file, instead of running commands like `sudo systemctl enable nginx`), then I would recommend looking into NixOS. I'll warn you, it is not for the faint of heart. NixOS is known for not having the best documentation, for some answers not being a quick google search away, and for sometimes having to look into other people's code just to find how to do something. I set up my server first with Ubuntu, then went back and did it all again with NixOS. I found the learning curve well worth it. It enhanced my learning and understanding, as server settings aren't me just copying some commands from a tutorial and forgetting what I did the next day. With NixOS you are mindfully crafting your server, and usually reading documentation along the way. And you won't forget what commands you ran to get your server to where it is, as it's all in code. If that sounds interesting, I highly VimJoyer's guide to NixOS[4] to get started.
[4]: https://www.youtube.com/watch?v=a67Sv4Mbxmc -- VimJoyer is an absolute goldmine for all things NixOS and NeoVim. I love his videos. I accidentally stumbled upon his NeoVim video and have been using NeoVim ever since.
“People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells.” - Harold Abelson and Gerald Jay Sussman, Structure and Interpretation of Computer Programs