Works at home but nowhere else

I have Syncthing running between a laptop and my Android phone (Nexus 6). I have Global Discovery and uPNP enabled. Everything works great b/w the two devices when I am at home on my local area network; however, the two devices fail to connect/sync when I’m on ANY other network! Hotel WiFi, airport WiFi, hotels, etc.

Any suggestions?


Hotels and airports generally don’t allow traffic between two devices on wifi, in order to protect their users from each other.

If you mean your mobile on hire wifi can’t connect to your laptop at home, verify that the laptop actually managed to get an upnp port mapping.

Hhhmm…So is there a use case / way for business travellers to use Syncthing on public WiFi hotspots? A VPN connection perhaps?

I also have a home PC that’s part of the peer-2-per network that I didn’t mention in my OP. When away from home, neither my phone nor my laptop will sync over public WiFi to my home device. This seems to be different problem than public WiFi restricting device-to-device connections on their network…

Oh, and the phone sync doesn’t seem to work over a T-Mobile data connection either…

That could work


Are probably the same issue. Check out, one of your devices needs a publicly reachable ip address in order to sync.

Finally got some time to work on this - I now have Syncthing running successfully on two Linux machines and an Android phone. I’ve setup port-forwarding to one of the Linux machines and can sync from both LAN and WAN addresses.

My general use case is for 10-15 devices (~5 users) to be able to share a folder and sync all changes. The users are business travellers who will be using public WiFi hotspots / 4G LTE.

With one machine publicly-visible (my Linux box above) will (1) all sync operations route through that machine, creating a bottleneck, or (2) will my machine just provide the “swarm map” that will allow all the other online devices to connect with each other directly?


This. Unless the other can also reach each other, in which case they will.

Well, not “route through”, they’ll sync with that device.

OK, So EACH machine in the cluster has to be publicly accessible either via port-forwarding or uPNP (which I couldn’t get to work).

  1. Why doesn’t Syncthing use STUN? Or more generally, why is it that a protocol like Bittorrent can connect peers behind NAT even with uPNP disabled and why doesn’t Syncthing work that way?

  2. How would you recommend I configure Syncthing for my use case (multiple nodes on public WiFi hotspots)? I would like each node to be able to communicate with all other online nodes so that file transfers aren’t bottlenecked behind a single device. For example, my phone over 4G LTE syncing to a laptop in a hotel on WiFi.

Thanks for your help (and patience)! :smile:

Because someone needs to reimplement a procotol which is able to get around NATs in go. That requires effort.

It would be great if this could be accomplished via Bluetooth/wifi-direct/something else. It’s rather annoying that two Android devices can be sitting next to each other, but unable to sync merely because they are on a corporate wifi network which precludes them from connecting directly to each other.

V12 has relays which should solve this.

Setting one device as WiFi access point and connecting the other to it should enable them to sync with each other.

When two devices connect with each other through a relay could it be possible to negotiate something like these STUN, TURN,… things for establishing direct connection between peers?

No, becuase we use TCP which is hard if even possible to punch through with.