I think of myself as technically inclined. I have installed Linux multiple times and have basic command line knowledge, and I’ve programmed in many languages, with the most experience making a static website game using HTML/CSS/JS.
Additionally, I own the superspruce.org domain (my registrar is Dynadot), but I don’t really know how to wield the power of owning a domain. I also have some spare computers to be used for hosting, a 2009 laptop running Lubuntu and a 3900X+32GB RAM desktop other running KDE Neon, but I’m also open to experimenting with cloud hosting too (I know, sacrilege here).
However, I don’t know much about the TCP/IP protocol or other networking protocols. I’m happy to learn, but the curve would need to start gently.
I would want to try hosting my websites, and also a personal non-federated Lemmy instance to serve as a archivable forum for my games. Even if it’s not very useful, it’s great experience.
I’d say start with getting Lemmy going inside your home network (not accessible to the outside world). That’ll give you a chance to play around with Docker if you want to go the Docker route. I like to make Portainer the first docker container I install (I install it with Docker Compose), and then I manage all other docker containers/etc. through Portainer. Just a quick heads up on Portainer… what Docker calls “docker compose”, Portainer calls a “Stack”, because it can have a “stack” of different stuff running under it.
Anyway, from there I’d figure out a reverse proxy. I use Nginx Proxy Manager, which is nginx under the hood, with a web interface to manage things. I’ve never tried Caddy, but people like that one, too.
The reverse proxy is what controls security, basically. Someone from outside your network types in lemmy.superspruce.org, and you’ve told Dynadot to forward that to your home IP address. You open port 80 and 443 on your router, and forward them to the machine running Nginx-Proxy-Manager. So NPM gets everything that’s pointed at your house on those ports. It see’s the request is for lemmy.superspruce.org, and you’ve told NPM where to look for that, and it handles it from there.
Just doing these things will open up all sorts of learning challenges that you’ll have to figure out through Googling.
It took me years to finally decide to figure out a reverse proxy, and once I wrapped my head around it it makes so much sense. I wish I had learned it sooner.