Remote debugging over internet

How do I start a remote debugging session over the internet? The user guide only describes local remote debugging. I only found an old forum post but nothing concrete. The IP address in the Remote Debugger Desktop app is only local.

using a vpn to the remote machine ?
this way the two IP addresses remains local

Yes, and how do I do that? What do I need to do on my machine and what on the other side? I need the idiot guide. I know what a VPN is and how to start it. But what do I need to do in Xojo and the Remote Debugger app?

If you can get a VPN going, you shouldn’t need to do anything else - your development computer and the remote debug computer should be able to talk to each other.

If you can’t use a VPN, another way is to open the port in the firewall/router at the remote site. Depending on the remote site, you may need their network administrators to do this for you.

I understand your frustration - getting this to work requires network management skills. Every network and router is different so there are no easy set of steps to follow. If you can provide more details of the configuration and any error messages you’re seeing, I might be able to point you in the right direction.

VPNs are not the simplest of things to set up and configure. I suggest using a service like ZeroTier where you install their client and connect your computers through a network configured in their web-based control panel.

How do my computer and the computer at the other side talk to each other? I don’t understand.

To simulate me being the other side I started my VPN and the Remote Debugger app on one computer. The Remote Debugger app still shows the local IP address 192.168.2.105. What do I need to do on my other computer to connect?

I really really really need the idiots guide. Click here - do that - with screenshots.

ZeroTier look interesting.

It’s actually not THAT hard to setup. Just follow the guides for your DSL Router to act as a VPN Server (in Fritz!Boxes f.e. you just add the right to open a VPN Connection to your Router…) or install a IP SEC VPN server on your local NAS.
Add this connection to the external Computer which you want to connect to your LAN. Activate the Option to route EVERYTHING over this VPN connection. Then this Computer will get an IP from your Router within your own LAN IP Range (assuming your Router is the DHCP Server).

No need to change anything else. But be aware that VPN connections tend to be much slower than open connections and that this can affect the debugging.

A Tutorial for Fritz!Boxes: https://www.pcwelt.de/a/sicheres-vpn-mit-der-fritzbox-in-fuenf-schritten,3423608 (Source: PC Welt)

Sigh… I HAVE a VPN. What do I need to do in Xojo on one side and the Remote Debugger on the other side?

Nothing on the Client Side, but within the Xojo IDE make sure the Client’s IP is used for the Client.
Make sure both Machines are within the same Subnet.

In some situations a VPN will not result in both machines getting an IP Address within the same Subnet. In such cases, both machines can use a Proxy to be able to talk to each other.
In some cases you need to allow communication through the Firewall for the debugging Port.

If it still does not work, start with simpler tests like PINGing the other side and trace the route (tracert) from one machine to the other.

If I have the VPN on I see an IP address. This is the IP address that I need on the Xojo side as IP address to connect to, correct? I’ll try tomorrow to connect my 2 computers with the VPN.

Exactly. If all went fine it’ll just work. But if not, start with simple tests like PINGing the other side and trace the route (tracert) from one machine to the other.

Trace Route will show you the route the traffic goes trough your network and via the Internet. There you can see if you reach the other side or where it gets stuck.

How to Use the Tracert Command in Windows (Source: Lifewire.com)

I think you may be confused. The address from the VPN is usually your computer’s address. You need to enter the address of the remote computer in the Xojo Run Remotely setup.

Some additional info - I hope its helpful. Your computer has an address. If its a home computer, typical address begin with 192.168.0 or 192.168.1. When you connect to a VPN your computer gets another address, and it can use both while the VPN is active. If the first 3 numbers of your regular (not VPN) address match the first 3 of the remote, then the VPN may connect but will not work properly. (This is a simplified explanation - I’m trying not to get too technical.)

If you’re still having trouble, maybe you can post some of the network addresses you’re seeing, and any error messages.

Are you able to SSH in? For my remote Linux machines, I create an SSH tunnel to the port of the remote debugger, and then it is completely transparent to the IDE. Works well for deployed Raspberry Pi’s.

ssh -L <port>:127.0.0.1:<port> <user>@<remote_address>
1 Like

The remote debugger needs to be set to listen to the VPN IP address on that end.
Sometimes that is not the interface that gets chosen automatically.
Once that is done, you should be able to put that (remote) address in the IDE.

@Eric Bloom: I’m pretty sure I’m confused. The answers here so far weren’t helping much.

@Alex Bombay : no clue what you mean.

Because you havenÂ’t specified, I am assuming that you are using the desktop stub.
Further assuming your VPN is set up, configured properly and turned on, you should be able to launch the remote debugger and then in preferences, set the interface it is listening on. After doing that, quit and relaunch the stub. The window will show you the IP address if the stub.

On your computer, make sure the VPN is connected and go to the remote debugging preferences and add a new target. It will most likely not appear in the list, so youÂ’ll need to enter the IP address for the other endpoint manually. Give the target a meaningful name, and save your changes.

Now when you want to remote debug, just select that machine using the name you gave it from the list. The IDE should automatically build, transfer and launch your app.