Honestly, I learned a ton from these guys: https://www.smarthomebeginner.com/
I’ve diverged a good bit since then of the services I’ve added and the specifics of how I configure things (I still use Traefik whereas I think they’ve shifted to Nginx), but they have a great example of a GitHub repo and what it looks like to manage a self-hosted server.
For #2 and #3, it’s probably exceedingly obvious, but wish I would have truly understood ssh, remote VS Code, and enough git to put my configs on a git server.
So much easier to manage things now that I’m not trying to edit docker compose files with nano and hoping and praying I find the issue when I mess something up.
You might look into NASs or at least NAS software depending on how much storage we’re talking about. Or there are S3-compatible self-hosted solutions that you can search for and do some research.
I might recommend, however, considering a service such as Backblaze if your website’s uptime is critical as a halfway between self hosted and SaaS. I like to self host stuff, but there’s some things such as data backups or password management that is better left to the cloud where you can get SLAs and confidence in your uptime (because it always seems that something goes wrong with your hosting on a Friday night when you’re heading out of town).
De-Googling was what got me started as well. Wanted to be able to have my own Google Drive clone with Nextcloud. From there it was just one little improvement / additional service at a time as I learned to use Linux and docker. Now I run a Linux laptop and am considering an android phone.
Engineering background for reference.