Sort:  

I would suggest using a service like noip. You can create an account for free and get access to a static IP/sub-domain. They provide a linux (open source) client that you have to install on your machine that you want to reach from outside.

Or if you are behind a router you can just configure your router to work with noip and your router will always update noip with its current IP-address. Then all you have to do is configure port forwarding, that your router forwards outside packets to the desired machine and port.

It's really a great service and easy to use. Good luck!

Thanks!

I'm looking forward to the day you can just let your devices update their ip-addresses to a blockchain, where you can access them from anywhere.

SofEther VPN has an impressing set of features that stands out from OpenVPN.

This is one approach for what you need: Ad-hoc VPN

From Wikipedia:

SoftEther VPN is a free open-source, cross-platform, multi-protocol VPN solution developed as part of Daiyuu Nobori's master's thesis research at the University of Tsukuba. VPN protocols such as SSL VPN, L2TP/IPsec, OpenVPN and Microsoft Secure Socket Tunneling Protocol are provided in a single VPN server. It was released using the GPLv2 license on January 4, 2014.
The architecture of SoftEther VPN was designed for firewall penetration. Support for NAT traversal is provided, making it possible to set up a VPN server behind an organization's or government's firewall. Firewalls performing deep packet inspection are unable to detect SoftEther's VPN transport packets as a VPN tunnel because HTTPS is used to camouflage the connection.
Performance optimization was another objective for SoftEther VPN. It employs strategies such as full Ethernet frame utilization, reducing memory copy operations, parallel transmission, and clustering. Together, these reduce latency normally associated with VPN connections while increasing throughput.

Source code: https://github.com/SoftEtherVPN/SoftEtherVPN

I do have some Raspberry Pies located around the world with changing
IPs. In order to get them connected, I have them autoconnect into an
OpenVPN network. All of them are then accessible from my machine (after
joining the OpenVPN network) using 10.0.0.x addresses.

+1

You can also install openwrt (or dd-wrt) on most popular cheap wireless routers and auto scan for open access points (or what ever you want).

With the proper antenna, a waterproof case, battery and voltage regulator, and a small solar panel you can have gnu/linux autonomy faraway for years.

If your service provider supports IPv6, you could go that route. I've been using it for my hosts and it works like a champ.