If you’re reading this tutorial, I’m going to assume you have a very specific goal in mind: get OpenVPN running on a Raspberry Pi behind an Ubuntu Server router using iptables as your firewall.
Other than firewall rules, the OpenVPN documentation is relatively comprehensive and you should look there for specific configuration options and general OpenVPN setup. It’s not particularly difficult to get OpenVPN installed with easy-rsa and configured with sane options following that guide.
This tutorial emphasizes the routing rules required on both the OpenVPN server and the Ubuntu Server router in order to make the VPN server reachable from the public internet so you can connect to it remotely, have your VPN -> LAN traffic routed properly, and have your LAN -> VPN traffic routed properly.
Think of this as a guide to the configuration required outside of OpenVPN itself to get it working behind your router, e.g. when it’s not installed directly on your router.
I’m currently running Raspbian Jessie on my Pis and for the sake of simplicity, you should run Jessie or later as well. Versions of Raspbian earlier than Jessie don’t include OpenVPN in the repositories so it ends up requiring some jankiness like adding backports from the Jessie repositories. It’s just not very clean.
You can find my comprehensive OpenVPN server and client configuration files in this repository.