How do you expose your services to the internet?

Hey,

I'd like to expose my services to the internet so I can connect while being outside of my home, I wonder how to do it correctly, whole life I was just exposing open ports to the internet but I don't really think that's the "correct" way of doing it. I wonder if I should not just open port on my router, but use VPN to my home to my torrenting server.

Also I'd like to create a samba share and auto-mount it to my computer even if im not in my home's local network, I was able to mount my samba share through VPN but its not really convenient cuz i have to manually connect to my VPN every single time, do you maybe have some idea how to remotely connect to my services without exposing ports to the internet and maybe with more convenience, without connecting to the VPN every single time I want to grab some file from my share.