Continuing the discussion from Firewalls and port settings:
There would be a few steps to do this and the details of each are somewhat opaque, but I can outline a way to do what you are interested in.
The basic gist of it is that you need to have some way to create a subnet where all nodes can interface with the controller or cluster node. One such way is to have all nodes on a subnet created by an OpenVPN tunnel. The way you would do this is to setup an OpenVPN server, probably the easiest way to do that is to use a router running OpenWRT ()[OpenWrt Wiki] OpenVPN server) or DD-WRT, then to make your ip address static use a DDNS client ([OpenWrt Wiki] DDNS Client DuckDNS). You then configure your node machines as OpenVPN clients that connect to your OpenVPN server, exposing the necessary ports for your docker instance. You should then be able to “see” the nodes from an interface like WebODM.
Each step can be a little finicky to get right but there are existing writeups that you can follow for all of them. I’m sure there are other ways to do what you’re asking about, perhaps using a dedicated machine or a docker instance for the OpenVPN server instead of a router running OpenWRT for example, but I imagine that most methods would use similar concepts.
You could also use docker for everything if you aren’t behind any firewalls that you don’t control (https://gist.github.com/danguita/21e6f9050ef556e5e2177d8407f5a72e).