Pihole (if that service goes down, everyone in my house gets mad at me)
Jellyfin
Everything else is a nice to have, not essential
The arr family with a torrent client is great for feeding Jellyfin. If you are a developer, you can host your own shit there too. Game servers for playing with family and friends (so far Minecraft, Terraria, Project Zomboid, V Rising). I like to host a bunch of different telegram bots I wrote for fun. Discord bots are another interesting side. I also run some automation runners for helping out with testing, building and deploying my projects.
Focus on your needs and what you want to improve of your online life, there is probably a project you can self host for it.
TechnitiumDNS which handles all of my DHCP and Adblocking in a one system, extremely capable software especially useful for SOHO too.
Baserow - Airtable alternative. It holds certain items of importance like what MAC address each device in my home network holds and what IP It uses in an intelligent view. I also was using it for a while to log issues with my sleep where I deal with insomnia, so I logged how well I slept, how many times I woke up, how long it took me to fall asleep etc. That was a simple form I created using drag/drop in Baserow and called by a URL.
OpenVSCode server - makes editing my Homepage (above) yaml and my docker-compose files a breeze! It's especially nice when you edit it something and it auto saves almost instantly. Makes some of my services change in real-time!
UptimeKuma - Simply one of the best out there for me
Gotify - I get alerted to my Tuya based dehumidifer tank being full via Home Assistant, Downtime alerts from UptimeKuma and a variety of other services which I deem higher priority alerts over "fix when you can" ones.
Aside from that, i do have other services I use every so often like Memos, Joplin Server (holds most of my notes), Pingvin and a few others.
The only one I haven't seen mentioned here that is a requirement for me is OPNsense. I've been using it for a couple years, and pfSense before that for a very long time. Never going back to commercial routers and their shitty / buggy / backdoored software. I highly recommend OPNsense over pfSense for the UI improvements alone, but there are other reasons to use/support OPNsense over pfSense.
On my network it handles internet firewall, internal firewall, and all routing across 5 VLANs and between two internet gateways. It does 1-1 NAT for my public IPs, inbound VPN, outbound VPN for my *arr stack, and RDNS blocklists with the data source being a script I wrote that merges from several sources and deduplicates the list. It is my internal certificate authority (I don't miss you at all, Windows CA), DHCP for the guest wifi, and does pihole-like ad blocking via DNS for my entire network. And it does all that running in a VM with 2GB of RAM, of which it only uses about 60% on my install.
It is an incredibly powerful tool, not terribly difficult to learn, has a pretty damn good UI for FOSS, and in my opinion is a fantastic foundation for a complex home network / homelab. Unlike pfSense, which corrupted itself twice over the years I ran it, it has never let me down. And every update has been painless over the years.
WireGuard on my VPS, because otherwise I'm stuck behind CGNAT and can't access anything in my network from elsewhere. Or Tailscale, but that's not really self-hosted.
Depends on what your usecase is for what is "essential."
I think keeping household documents, taxes, medical bills, etc... In a local only paperless-ngx instance is quite essential to the organization of a household where everything is searchable and able to be organized on multiple levels compared to a simple document folder on 1 computer.
Having a document or self-hosted wiki with an in - case - of - death document that gets backed up in an encrypted, but accessible by family place is probably the most "essential" thing.
Some WebDAV server, can be Nextcloud but actually something more lightweight is better.
Also a XMPP server is very nice to have. Even if you don't have many contacts on it (yet), it works very well has a notification service and can even be extended to act as a Unified Push distributor.
I was hosting nextcloud at home for years. Then when I worked in a Datacenter I got to host some servers there from free so I set up a two-node proxmox with nextcloud and some other stuff. Now I don't work there anymore and I really felt the hole nextcloud left, no more notes syncing for notes, tasks, calendar, podcasts no more place to upload my photos from my phone ...
So now I'm hosting nextcloud at home again.
I also host jellyfin which is nice but if I don't have it doesn't actively hamper my workflow.
Gamevault: To share Games with my friend's especially modded games.
Jellyfin: Sharring Movies/Series/Music
Immich: Saving my Pictures
Pi-Hole + Unbound: Ad-blocking
Omada software controller handles my wireless access points. HomeBridge lets me control various things from my iPhone, without having to use 5 poorly-made apps.
I personally like Syncthing for petty much everything else. For general file syncing of course. But also with Joplin pointed to a synced directory for notes. With keepass as a password vault. With synced config directories for some apps across devices like newsboat for RSS, and neomutt for email. I also used to use it with rtorrent via a watch directory, though I currently am using a seedbox for that purpose.
VPN (openvpn/wireguard) is a good idea if you want to access your services outside your local network, without exposing them all globally.
I have a dedicated vm for things that are crucial to the home network, either latency-critical or network related.
That'd be my dns resolver (I enforce it over VLANs by hijacking anyone trying to do DNS to other resolvers, like random IoT devices), homebridge for less important home automaton and my own matter controller for most important home automaton (controlling the lights).
My router of choice is RouterOS in another VM. I tried opnsense, pfsense, vyatta, and a bunch of others (even a containerized Cisco route), and I settled on ROS, because it was the only one who could do IPv6 properly (apart from Cisco, but that has other issues).
For the less important things I run them on k8s and really, there are only two bits worth mentioning as essential: ArgoCD and nixhelm. Together, they provide effortless and mostly automated software updates with very easy rollbacks. I don’t have to go and manually update every single bit of software and that saves huge amounts of time.
My most frequently used are most likely vaultwarden, Memos, Trilium, Jellyfin, Frigate, Traggo, and beaverhabits. Also AdGuard and NPM but I don’t interact with them.
Oh yeah and freshrss
And! Nextcloud and Baikal. NC only for storage and Baikal caldav and carddav
@bpt11 headscale is high on my list, since it enables everything else I host to be behind a tailscale VPN.
Radicale for calendar, tasks & contacts
Syncthing for file sync
FreshRSS is the best I've found for RSS
Jellyfin for media
Audiobookshelf for audiobooks (but really more for podcasts, in my case)