this post was submitted on 24 Feb 2026
57 points (96.7% liked)

Selfhosted

56939 readers
764 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

  7. No low-effort posts. This is subjective and will largely be determined by the community member reports.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

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?

all 37 comments
sorted by: hot top controversial new old
[–] KyuubiNoKitsune@lemmy.blahaj.zone 4 points 1 day ago* (last edited 1 day ago)

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.

[–] LievitoPadre@feddit.it 22 points 2 days ago (2 children)

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.

[–] LastYearsIrritant@sopuli.xyz 6 points 2 days ago (2 children)

NPM, Nginx Proxy Manager also has a UI and certificate management.

[–] Cerothen@lemmy.ca 3 points 2 days ago

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)

[–] hamsda@feddit.org 3 points 2 days ago

Currently using nginx-proxy-manager for exactly this purpose. Nice and easy-to-use UI, including automatic LetsEncrypt ssl certificates :)

[–] pipe01@programming.dev 3 points 2 days ago

+1 for caddy, I've been using it in my homelab for years and the configuration is just trivial

[–] CameronDev@programming.dev 33 points 2 days ago* (last edited 2 days ago) (2 children)

Nginx proxy manager can help you with all of that.

basically want a domain name that you can use to subdomain each service off.

E.g:

https://service1.auth.local/ -> proxies your first service (192.168.1.111:4567)

Https:/service2.auth.local -> proxies to the second (192.168.1.123:9876) And so on.

If you purchase an actual domain name, you can get letencrypt certs via nginx proxy manager, and it all works very smoothly.

[–] Auth@lemmy.world 3 points 2 days ago (3 children)

Ok thanks ill give that ago tonight. I never would have thought of a proxy manager.

[–] CameronDev@programming.dev 10 points 2 days ago* (last edited 2 days ago)

You can of course do it manually with plain nginx, it's just a little more effort. Good luck :)

[–] illusionist@lemmy.zip 6 points 2 days ago

I used nginx proxy manager for a while. Nowadays I use caddy, and I wouldn't want to look back. It has no gui but a caddyfile. It works much smoother for me.

[–] foggy@lemmy.world 1 points 2 days ago

Traefik's configs are a little less cumbersome if you're managing a lot of services.

[–] irmadlad@lemmy.world 7 points 2 days ago

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.

[–] fruitycoder@sh.itjust.works 6 points 2 days ago

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 -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)

[–] melfie@lemy.lol 6 points 2 days ago

I have a TP-Link router with OpenWRT and use it to make local DNS entries for my services, like jellyfin.lan and forgejo.lan. I’m also running k3s, which comes with Traefik as a built-in reverse proxy.

[–] mech@feddit.org 10 points 2 days ago (1 children)

To do this properly, you'll need to set up a reverse proxy that publishes your different ports on different IP addresses.
Then you can use DNS or (locally) a hosts file for name resolution.

[–] frongt@lemmy.zip 7 points 2 days ago (1 children)

Yes, reverse proxy, but you don't want to publish on different IP addresses. Your services should bind to one IP, different ports, and the reverse proxy accepts it all on 443 and routes it based on the host header.

I use traefik for this, set labels in the docker compose and it Just Works. It also gets certs for me based on the acme DNS challenge. Some people use caddy instead of traefik and they seem happy with it.

[–] Tanoh@lemmy.world 1 points 2 days ago

Ideally the services should only bind to localhost and not 0.0.0.0 or similar as well. Allowing both proxied and non-proxied requests will 99/100 times cause problems, and then one time it doesn't it is just confusion for no benefit.

[–] BeatTakeshi@lemmy.world 4 points 2 days ago (1 children)

What about hosting a homepage with links to all other services ?

[–] Auth@lemmy.world 2 points 1 day ago (1 children)

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?

[–] BeatTakeshi@lemmy.world 2 points 1 day ago

See the section "Personal dashboards" of this great resource page I often refer to: https://github.com/awesome-selfhosted/awesome-selfhosted

[–] ReticulatedPasta@lemmy.world 6 points 2 days ago* (last edited 2 days ago)

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.

[–] Decronym@lemmy.decronym.xyz 6 points 2 days ago* (last edited 1 day ago)

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I've seen in this thread:

Fewer Letters More Letters
CA (SSL) Certificate Authority
DHCP Dynamic Host Configuration Protocol, automates assignment of IPs when connecting to a network
DNS Domain Name Service/System
HTTP Hypertext Transfer Protocol, the Web
IP Internet Protocol
NAT Network Address Translation
SSL Secure Sockets Layer, for transparent encryption
nginx Popular HTTP server

7 acronyms in this thread; the most compressed thread commented on today has 7 acronyms.

[Thread #113 for this comm, first seen 24th Feb 2026, 01:20] [FAQ] [Full list] [Contact] [Source code]

[–] mrnobody@reddthat.com 3 points 2 days ago (3 children)

First off, get of for DNS!!! Use 9.9.9.9 (quad9) or DNS.watch for God's sake! Even 1.1.1.1 is better!

[–] SaltySalamander@fedia.io 2 points 2 days ago (2 children)
[–] reabsorbthelight@lemmy.world 3 points 2 days ago

I think they're complaining any Google DNS. It's just a privacy matter. Google will heavily track your DNS requests

[–] mrnobody@reddthat.com 1 points 2 days ago

Yeah, i assume you're like a lot of other people where you don't want everything you do to be tracked online. The service from Google is functional and all, by not trustworthy.

You can adjust this on your device (per device) or on your home modem/router/gateway, etc to cover all devices. Keeps Google, MS, Apple, ISP from tracking all online queries for all devices.

You can go one step further andd block all outgoing requests from all devices over port 53 and leave your router configured to do them all, then just configure you're DHCP settings to use your gateway (like 192.168.1.1) for both gateway and DNS

[–] Auth@lemmy.world 1 points 2 days ago (1 children)

I live in a remote country and the other providers are slow. I could switch to cloudflare i guess

[–] mrnobody@reddthat.com 1 points 2 days ago

Dns.watch is global as is quad9. Says available in 110 countries

[–] NewOldGuard@lemmy.ml 3 points 2 days ago

Can also use mullvad’s DNS, it’s free

[–] tartarin@reddthat.com 4 points 2 days ago (1 children)

Certificates can have multiple usages and you didn't specify the purpose in your case. A certificate is not necessarily tied to an IP or even a server. However, if you want to authenticate the server with a certificate, you will need the IP address to be resolved by a DNS. So, you should clarify what you actually want to accomplish. Do you expect your certificates to be self-signed or signed by a certification authority? A certification authority cannot validate a private IP address.

[–] Auth@lemmy.world 2 points 2 days ago* (last edited 2 days ago) (2 children)

Sorry, a cert for https because im sick of the annoying browser warning. Self signed is fine and I can use certbot for that I believe.

[–] suicidaleggroll@lemmy.world 9 points 2 days ago (1 children)

self-signed won't get rid of any warnings, it will just replace "warning this site is insecure" with "warning this site uses a certificate that can't be validated", no real improvement. What you need is a cert signed by an actual certificate authority. Two routes for that:

  1. Create your own CA. This is free, but a PITA since it means you have to add this CA to every single device you want to be able to access your services. Phones, laptops, desktops, etc.

  2. Buy a real domain, and then use it to generate real certs. You have to pay for this option ($10-20/year, so not a lot), but it gets you proper certs that will work on any device. Then you need to set up a reverse proxy (nginx proxy manager was mentioned in another post, that will work), configure it to generate a wildcard cert for your domain using DNS-01 challenge, and then apply that cert to all of your subdomains. Here's a pretty decent video that walks you through the process: https://m.youtube.com/watch?v=TBGOJA27m_0

[–] CameronDev@programming.dev 1 points 2 days ago

.uk domains are very cheap, $5ish AUD, which is ~2.5usd.

[–] SaltySalamander@fedia.io 2 points 2 days ago

You already have a self-signed cert. That's why you get the warning.

[–] Marzanna@scribe.disroot.org 2 points 2 days ago

You can use mDNS so you don't have to type IP address.

[–] possiblylinux127@lemmy.zip 0 points 2 days ago