I have to keep 800 machines in sync with one another with very rare internet connectivity.

(Chamunks) #1

I’m curious if my eventual network topology is similar to yours @kubistika

Google Docs

Network Topology

Syncthing main server with read-only share Internet Blackbox server Syncthing LAN Only 30+ Windows10 Laptops LAN only Syncthing Location router, LAN only Location router, Internet Windows10 Laptop Some Inet/Lan Only Syncthing

My usage case is I have a number of classrooms that require all of the curriculum material and installer files on each machine, however the issue is that theres a limited number of internet accounts that we get at each location. Syncthing appears to be something that accomplishes all of the goals that we’re looking for and any experiences you can share with your setup might help me accomplish my goals as well.

I was thinking of explicitly using static IP’s for network infrastructure and then defining Hosts files or a central DNS server within the network of some kind.

(Jakob Borg) #2

As far as I understand this should work.

If you can avoid it, you probably don’t want to hang all 800 clients off a single laptop/small server. Divide them into smaller groups and interconnect those groups, letting someone in each group get a connection to the server. Otherwise you risk a “stampede” on that server when it announces an update to everybody.

1 Like
(Chamunks) #3

This is basically what I’m planning my drawing only showed one branch.

The biggest concern then at this point that I have is it doesn’t seem obvious how to auto provision a headless install and connect it automagically to a share.

(Jakob Borg) #4

You can give your clients a pre-populated config.xml that points to some central server and share. The client’s own device ID doesn’t have to be in there; it’ll add it itself when it knows it. What remains is accepting the new device ID on the other side. You can use something that talks to the API to auto accept devices, if you trust your network enough. Or you can use some provisioning solution (ansible, chef, Arigi, etc).

1 Like
(Chamunks) #5

@calmh, Wont the device need its ID set manually?

(uok) #6

800 computers? Is this a typo? :open_mouth:
I love Syncthing but personally I would go for a simple solution like robocopy, rsync, etc. as soon there is a bunch of computers in the same LAN. Then just run a script when clients boot or users log on to get current file sets.

(Jakob Borg) #7

On first startup, if there is no keypair, one is generated and populated into the config as appropriate. So starting a new device with a skeleton config pointing at the central server and no device ID is fine. The issue is just when the unknown connection comes in to the other side.

There are much larger Syncthing clusters than that out there. :slight_smile:

(Chamunks) #8

Sometimes I wish that it was a typo…

thank you for the clarity!

Thank you for the is also good to know that it holds up!

(Chamunks) #9

I’m curious if you have a more explicit example you can post in a code block so there’s no mistaking what exactly needs to be omitted.

The reason I ask is because I’m looking at the config.xml that was generated on my dev setup and the config.xml’s Device ID for the machine itself looks exactly the same to me as the target machines ID block.

(Audrius Butkevicius) #10

It’s essentially a config with just the device/folders having master device id (no “self” id, that would be generated and added on startup).