Setting up GRE over IPSec between Ubuntu Server and Vyatta router

So basically, my goal here is to set up a network-wide VPN which encapsulates ALL traffic between a KVM VPS that I control, and my home router which is a Ubiquiti Edgerouter Lite.

This Ubiquiti router runs Ubiquiti's own "EdgeOS", which sits on top of Vyatta, so I can basically take full advantage of Vyatta through the CLI. At first I was looking into setting this up with OpenVPN, which would have been easy since people have done that before, however, this won't work for me. Unfortunately, the overhead with OpenVPN on the router cuts bandwidth down to about 30mb/s max which isn't acceptable. With the way that Ubiquiti has implemented the operating system, IPSec encryption has special optimizations which allow it to perform at near-line bandwidth speeds, so the overhead with IPSec is minimal, leading me to believe I can use that.

After reading around a bit, it seems like I can accomplish my goal by setting up a GRE tunnel over IPSec, then use the GRE tunnel interface for routing.

Now I need to know where to start on the VPS side. I currently have Ubuntu Server 16.04 installed (although this can be changed if needed), and I've looked around a bit, but I can't seem to find a good starting point for setting up a GRE tunnel over IPSec on linux. Can someone explain where I should be looking to start for this?

All info and feedback is appreciated!