On my Lan I have 192.168.1.111 hosting a bunch of various services not containerized. All connections are done either from my internal lan or from wireguard going through 192.168.1.111 so no external traffic bar wireguard.
I’ve set the host name of 111 in the hosts file inside the router and 111 and it works for all devices expect the ones connecting via wireguard.
But I dont want to have to use hostname+port for every service, I’d like each service to have its own name. I’d also like certs.
Can someone point me in the right direction for what I need to do? I’m thinking maybe this requires a local DNS server which im hesitant to run because im happy using 8.8.8.8.
For certs do I create a single cert on the 192.168.1.111 and then point all the applications to it?
You need a thing called reverse proxy. There are many available.
Some suggested nginx, I recommend to give a try to caddy. It’s easier than nginx and includes the certificate management as well.
NPM, Nginx Proxy Manager also has a UI and certificate management.
I would consider zoraxy.
https://github.com/tobychui/zoraxy
Single go binary, works on Windows natively if you need that and somewhat more feature rich than npm (if your not custom writing configs)
This would be done either via a reverse proxy (for public access via a domain you own, ex: service1.reticulatedpasta.com), or via a local DNS server if only being accessed via LAN without a signed SSL cert. For a reverse proxy, I use caddy which also manages SSL certs.
I don’t see anyone else recommending it here but you can also use Traefik, that’s what I use. I’ve set it up so that I can automatically add any docker hosted apps based on the container tags, it makes it convenient to use.
As others have said, reverse proxy. My experience is with Caddy and LetsEncrypt. If you wanted to step it up a couple notches, you could go with Cloudflare tunnels/zero trust. With the latter scenario, you’ll need a domain name that you can change the nameservers to Cloudflare assigned nameservers. With the Cloudflare option, you don’t have to fiddle with ports, UFW, or NAT. Just install on your server and it punches a fully encrypted tunnel.
Reverse proxies! They can redirect based on the dns name used to get to them. This is based on layer 7 data though so just http(s) services and not multiple ssh tunnels for example.
k3s/rke2 (k8s distros) do it automatically with Traefik when you use the gateway or ingres apis
Also for DNS a fun option is sslip.io which lets you do <some service>-192-168-1-10.sslip.io and it redirects to your ip but with a dns name added.
Though your router likely has an easy way to add local entries for dns and also upstream for the rest (i.e. 8.8.8.8)
What about hosting a homepage with links to all other services ?
I did consider that but im trying to build a website and its painful and the thought of doing anything more with css makes me wanna die.
Is there any plug and play home pages you could suggest?
See the section “Personal dashboards” of this great resource page I often refer to: https://github.com/awesome-selfhosted/awesome-selfhosted



