Do you have any advice or suggestions about it?
- Hardware (what should be enough for a local PC, or VPS…)
- Software (OS [Debian, Yunohost, other…], “containerization” (Docker, virtual machines?), dashboard, management, backups, VPN tunneling…)
- “Utilities” to host (Lemmy, Peertube, Matrix, Mastodon, Actual Budget, Jellyfin, Forgejo, Invidious/Piped, local Pi-Hole, email, dedicated videogame servers like for Minecraft, SearXNG, personal file storage like Drive, AI [in the future, when I can afford a rig that can run a local model decently]…)
I’m aware it’s a lot of stuff to take on, so, do you have any advice on where to start? (how to find a cheap PC to experiment with, if not get a VPS, what to test on it, what “utilities” to try self-hosting first…)


You’ll need a public IP. CGNAT won’t do, unless you’ll also add Tailscale (or such) in all your client devices (which might actually be OK).
Grab an old laptop from a junk heap. Ask around for discarded computers. Possibly get an old dead Android (possibly with a broken if barely functional screen) and install Termux. Buying stuff is not green. A laptop with a 5-second battery life, completely broken screen and nonfunctional keyboard will be perfectly good for self-hosting - temporarily plug in an external screen + keyboard, until you get SSH up and running. The rest of access will happen over SSH anyway.
Install your favorite Linux distro (I like NixOS. Debian would be a good basic yet powerful choice).
Set up a webserver (nginx is a solid choice). Serve some static files in LAN.
Make your webserver accessible to the internet. Get a TLS certificate for it, for free, from Letsencrypt. Host a blog. Set up Vaultwarden and import existing passwords into it.
At this moment, your possibilities widen up - many, many services are commonly set up behind a reverse proxy (nginx the webserver is going to decrypt the TLS, then proxy the plaintext connection to your services, so your actual service doesn’t need the hassle of TLS encryption). For example Nextcloud.
Set up a Snikket server and install Snikket app in your smartphone (Dino works well on Linux). Tell your significant other, or family, or the closest friend that this is a fallback communication channel in case your main one ever goes down. Set up a STUN/TURN server and start video calling each other.
Email is a hassle. I self-host it, along with an authoritative DNS server and several other things, but it’s not for the faint of the heart.