Although it has been done so many times by others, it’s still an annoying chore to set it up. Mainly because OpenVPN documentation is all over the places and not easy to know if certain options are still valid or not.
Building a VPN app? Start here.