SSH tunnel or OpenVPN. Keep in mind that you need enough bandwidth to effectively use it. It most likely will not work with satellite ISPs as you're lucky to get 1 Mbps upstream. Most broadband connections typically have enough bandwidth. The reverse goes where you are. If you don't have decent WiFi, it won't work either. You will also need the appropriate rules in your firewall. I'm sure there's an OpenVPN guide, handbook and (*channeling Carl Sagan*) billions and billions of YouTube videos on how to configure your firewall. VPN is pretty much the industry standard solution.
Setting up VPN is pretty straight forward; especially now with the OpenVPN community plugin, not that I've ever tried the plugin myself, but setting up and maintaining a secure owncloud installation is probably a lot more difficult. WireGuard, as mention by @Kris Moore, is also an alternative (which I will be looking into myself).
Well, OpenVPN works just fine natively in a FreeBSD jail. I only run VMs if the application absolutely demands a different OS. E.g. for me currently two instances of Confluence (Linux) and one Windows VM for tax declaration software and stuff.
Check to see if your modem has VPN server functionality already built-in. Mine does (Fritz!Box series). It works well and trivial to set up for Windows and Android clients. Also for MacOS and others, but I haven't tried.