Here is what I use:
a) I have a NAS at home which is always on. I have openvpn running on it (SSL based VPN).
b) I use dyndns to assign a permanent hostname to my setup (I don't have a static IP)
b) On my mac, I use Tunnelbrick (openvpn client) and on my iPhone, I use the openvpn client
All free, of course.
Works very well for me.