Howdy! I'm planning on setting up a home server once I get a final piece of hardware or two. I plan on hosting several services that are only intended for my immediate family, like home assistant, some services that I'd let friends and extended family use, like bitwarden, and some federated services - lemmy, calckey, and matrix. While those would likely be restricted to accounts only for friends and extended family, I'd naturally want them to federate so those accounts can see and participate with others.
I've never self hosted before, and am very concerned about making sure everything is secure. I do not want to allow someone to access my HA dashboard, for example. I'm planning on using docker to host all these services, with caddy-docker-proxy as the reverse proxy, and a cloudflared container to tunnel it all to the WWW (I already have a domain name purchased to use). But from there I'm not sure what to do - I don't want to solely rely on each service having no exploits that allow someone to get access to my private data or worse. I understand cloudflare has access control, which sounds like it could work and can be configured per sub-domain. So I could theoretically make the home assistant only available for me and my immediate family, get a longer list of whitelisted people for the other services, and no controls on the federated services.
I'm just concerned that this may not be enough, still. Since the federated services would be effectively broadcasting the domain name of my home server, I want to be really sure it's secure. Is this sufficient, and if not what other precautions would you take before exposing a federated service on a home server? I haven't been able to really find resources about this concern and how to handle it - it seems most people host their federated services on a VPS, but I don't want to be paying for that when I'm already planning on maintaining a home server.