I have a bunch of services running on my LAN, mostly from a single Debian machine. I access them at URLs like http://devicename.lan:portnumber. I would like to change to http://servicename.devicename.lan.
How it works now: The router (openwrt) sets a static IP per device and the port number is selected by the application or system unit running it.
What is the absolute simplest way to accomplish this? I don’t mind if it is managed by the router or by the server machine itself. Hoping for something that can be configured with a text file or web interface or other basic mathod.
These sevices are private, just for me and I have no plans to ever access them externally. I have so far avoided any certificates or SSL or other stuff. I don’t use docker and would rather not get into it right now. I like my domain name setup how it is with fake local domains.
Hoping this could be possible without making a whole project out of it.


The device that runs multiple services will set that up, yes. Not the client.
Apache and lighttpd can both do the same thing that Caddy does (multiplex many services via subdomain names on port 80). Caddy is just simpler and hence recommended.
You can move all services to use Caddy, takes some learning but overall better. Alternatively, if you already set up apache/lighttpd for each of your services, you can put Caddy in front and do something like
http://service1.devicename.lan/ { tls off reverse_proxy localhost:<port-that-apache-listens-on> }No. Also, those should be running on their dedicated ports anyways