Every connection in this setup has two directions. A request goes out, and its reply has to come back the same way with every change reversed. The diagrams show both directions.
Your devices don't run a VPN app. The phone encrypts their traffic, the home server decrypts it, and websites see your home IP.
Your ISP can change the home IP at any time. The server keeps Dynu's DNS record up to date, and the phone looks up the name before it connects. The two ends never contact each other directly; Dynu sits between them.
home-vpn.example.net as its host.name, so profiles you download from it point there.On the way in, each hop rewrites the destination address. On the way out, each hop undoes its own rewrite, so the phone gets the reply from the same address it dialed. If one rewrite goes missing, requests stop reaching the server.
AS0_DPFWD_UDP DNAT rule was missing, so UDP requests were refused at Docker's end.Addresses and names on this page are examples.
openvpn-as in Docker, Dynu updatervpnuser: one session at a timesacli ConfigQuerysacli --key K --value V ConfigPut/openvpn/etc/db/log.db, table log~/Desktop/home.ovpn/tmp/travelrouter/. openvpn.log is root-only.