Zend certified PHP/Magento developer

How to forward traffic through a vpn tunnel between two (linux) servers

I have a server at home and I rent a server in the cloud. I want to use my home server for many things such as file sharing, websites and hosting game servers for me and my friends, such as Minecraft. I want my friends to be able to join my Minecraft servers without me having to give them my home ip. I was wondering if it would be possible to establish a vpn tunnel and/or forwarding service between my cloud server and home server. This way I won’t ever have to give out my home ip. My idea is that if someone were to join my Minecraft server they would have to input the public ip of my cloud server. Then the cloud server would encrypt and forward the traffic to my home server that way my friend can play on my Minecraft server. And for other things such as websites as well. If I were to host a website on my home computer. Then someone could input the ip of my cloud server and then the cloud server would then encrypt the traffic and forward the user to my home server. That way they don’t know what my home ip is as they never input it. They only know the cloud server. I hope this makes sense. If anyone has any ideas regarding this it would be great help. Thanks so much