A reverse proxy for everything
Running each service on its own port meant remembering numbers and juggling certificates. One reverse proxy in front of them all, with names instead of ports, made the whole setup legible.
Automatic certificates were the real win. No more expired certs discovered by a browser warning, no more manual renewals forgotten for a year at a time.
Adding a new service is now three lines of config and a restart. The friction dropping that low is why I finally host things I used to rent.