Yes, unfortunately the first step is paying a bit extra on your Internet bill for the ISP to give you a static IP. Then you'll want to set up port forwarding for the ports your public-facing apps will run on. For a website/HTTP server for example, forward 80/TCP.
Hosting your own home setup for this is only optimal in certain situations...
- How much hardware do you need? Renting expensive hardware is like renting a mansion -- it really doesn't make any sense unless you have plenty of money, and even then it still isn't optimal. .. But there is a reason it is so successful.
If you aren't running anything too serious, I would recommend Linode above most other solutions for their economic viability. It is possible to get a server up and running for as low as 5 dollars a month (nanode) and it is not priced on a per-compute basis like many competitors.
But if it is an application that requires a lot of power and a home-lab is indeed more apt for it, the aforementioned steps aren't too hard to accomplish once you've done them for the first time. The port forwarding is done through the web client of you DHCP server (your router) and you can set it up by
.. this could also be a way to do it without a static IP, it only changes every month or so for most providers so if you were just trying to SSH from a different location (for example) that would work perfectly fine for that.
Thanks, and I hope this was able to answer your questions.