

Dark matter is not just a mathematical construct to explain velocity curves, even though historically that was the first step. Since then, we found compelling evidence of dark matter acting as gravitational lenses. It is a very real phenomenon, as we absolutely know that there is an excess of matter that is dark, i. e. not radiating or absorbing light. Some open questions still exist about dark matter, such as whether it is made up of particles and how they are generated. But the question of whether it is real is settled.
Dark energy is more of a placeholder name at the moment to explain the accelerating expansion of the universe. It is more contested in the scientific community and there is no direct evidence of this energy yet, some cosmologists deny the existence of dark energy at all and claim that is a mathematical flaw in general relativity (the equivalent explanation of dark matter as a flaw in current models called modified Newtonian dynamics or short MOND, is a very fringe theory by now). As such, the question of whether dark energy is real is not settled, it is currently a prediction to explain some observations but lacks further evidence.


You pretty much have four options, ranging from fully local to network level to VPN to public.
1.) Good old hosts file. Pro: Easy on linux. Cons: Doesn’t automatically update, needs to be installed manually on each device, some devices (phones) are harder to setup.
2.) Set DNS records using your router to your local ip, or if it does not support adding DNS records, then use a service like pi hole as your DNS server. Even external DNS providers like Adguard or Cloudflare should work, if you register with an account. You should be able to set up a DNS record for each subdomain, or do something like *.myhost.internal to catch all subdomains. Using the .internal TLD is highly recommended in this setup. Pros: Simple to set up, the router should inform all devices about the changes in DNS. Cons: To get rid of SSL warnings you will need to install the Caddy Root Certificate as a trusted agent on each device.
3.) Use a service like tailscale or netbird that offers automatic DNS and allows you to bind services (ports) to domain names. Pro: Allows access from anywhere. Cons: Needs to be installed on every device accessing it.
4.) Setting up a public DNS with a private IP address. Makes things a lot more complicated if you want to use let’s encrypt. Will need to do something like split dns and has to expose the port for the ACME challenge.
Instead of using let’s encrypt, you may again install the Root Certificates like in step 2 on every device to reduce the complexity by a good amount. Beware that binding public DNS to local IPs is considered bad practice, as it allows for DNS rebinding attacks. Some browsers and devices will complain (unless you use a .internal domain, but these can’t be registered publicly). Pro: If done properly, then, in principle, it should work on any device without setup. Cons: The hardest way of setting things up. Need to open up the network to allow automatic SSL certification. Some devices see this as a security threat.
If you decide on one of these paths, it is easier to recommend a guide for a specific setup. I feel like your question is mixing up some of these options. I’d also be happy to answer questions on anything but 4.