I was looking for a way to run Moonlight App from outside of my home. The app, Moonlight, is to stream the Steam games from PC to mobile devices. However Moonlight works only on the local network; probably it relies on some kind of broadcasting. It worked out when I setup OpenVPN on my RaspberryPi. It means my iPhone was able to stream out my PC game screen through OpenVPN. Now I can play Steam game on my iPhone anywhere; I wouldn't try without Wifi tho.
Here is links I found about how to setup a RaspberryPi as a OpenVPN server.
[Part one] and [Part two].
I found that there is a minor problem with the setup. It assumes that the public IP address of my home router is fixed, which is not true unless I pay for the fixed IP address. However, I have learned that the public IP address hasn't been changed for the last two years. It might be just luck or a policy on COX cable. So it seems to be fine for now. In case it changes, I will have to regenerate the .ovpn files for each client, which will be a tedious task.
There are different ways to achieve Virtual Private Network, or VPN; "IPSec", "PPTP", "L2TP", "OpenVPN" and so on. Wikipage [Link] briefly describes them. I also found this link helpful: [PPTP vs L2TP vs OpenVPN]. I think OpenVPN is a way to go for now.
Although my goal was to just play Steam games remotely, it seems to be a good idea to have a VPN server in case I may need to use public insecure Wifi network. Without VPN, anybody can see what I am doing with the Wifi network such as what search keywords I am using or which website I am visiting.
With VPN option turned on, any web-browsing from my iPhone will indirectly access the websites through my home router and the RaspberryPi VPN server. It will slow down the speed because the Upload speed on DSL is not as good as its download speed but that's the cost for the more security. For this matter, I am also interested in paid VPN services but the prices don't seem attractive enough.
On the iPhone side, iOS doesn't natively support OpenVPN but there are Apps for OpenVPN. I worried that if the OpenVPN app will be running on the background while I am using other apps such as Safari or Moonlight. I don't know how it does but it seems to be running on the background without any problems.
There are hardware routers that come with VPN feature. But just one RaspberryPi can do the same thing with more options and control. And probably most of people already have routers without VPN feature. So I think having a RaspberryPi VPN server is a good idea in general.