I’ve been looking at syncthing, which seems pretty cool. What I’d like to do is list how I want my chosen syncing thing to work, and ask the question: is syncthing the tool I want? This is not a list of complaints that syncthing doesn’t do this stuff: it’s more a list of questions about how I’d best do this stuff with syncthing. “We don’t do that; we’re not going to do that; go find another tool” is a perfectly acceptable answer here! So, a list:
Sync multiple folders from my desktop machine to my server
I have a desktop Ubuntu machine, and I care a lot about the Documents, Pictures, and Work folders in my home directory. I’d like those to all be synced to my server, which is on the same LAN in my flat as the desktop machine; when I change a file on my desktop, that file should be copied to the server.
This seems to be doable, especially now that 0.7x supports multiple repositories, so I can make each of those folders be its own repository. I don’t really want the symlink approach, because it means that I have to set up the symlink farm on any other machines that I set up as well, but obviously I could do that if required.
Get at individual files from my phone
I’d like to be able to, from my phone, browse a list of the files that syncthing knows about, and explicitly choose one and download it to the phone. I don’t want to sync everything to the phone always. That way, if I’m on the road with just my phone, I can still browse and view any of the files I have synced. I don’t need to be able to add files from the phone to syncthing’s repositories – it’s download-to-phone only, not upload-from-phone.
This… doesn’t seem doable, as far as I can tell. Syncthing doesn’t have mobile clients, which is mostly OK (I can always write one which talks to the HTTP API, and I’d be happy to contribute that), but there are two other things there: the first is that there doesn’t seem to be an API way to list the contents of a repository and fetch them. There’s only the ability to change the metadata about a repository; I can add new repos through the web UI, but not see the contents of a repo. Maybe to do this I should be adding some other service which exposes the contents of a syncthing repository to the outside world – a webdav server? don’t know – but then having the syncthing repos ID isn’t all that useful. Does the global syncthing announce server let me ask it about a repos ID and then get a list of nodes and their global IPs so a mobile client can know where this webdav server is?
Secondly… as far as I can tell I’d need to expose port 22000 and the web UI port 8080 to the outside world in order to do this: that means that it’ll get hammered by scripts and so on. Is syncthing robust against this sort of thing? How do I, for example, password-protect it? Quite possibly this isn’t viewed as syncthing’s problem – if I want to expose syncthing to the outside world then I should be putting it in a chroot, putting a password-checking SSL proxy in front of it, and so on – but that sounds worrying.
Graphical view on sync status
As an Ubuntu person, I’d like to have an indicator in the menu bar showing when syncing’s happening, what’s been synced and what hasn’t, and so on. Obviously I can always open the web UI for a detailed view, but it’d be nice to have something there in my status menus. This seems like a fairly obvious client of the API, and that sounds like something I’d be fine with writing, if it’s doable.
I’d be interested in thoughts on these points, whether they’re “no you don’t want syncthing” thoughts or “yes! this is how you should set things up” thoughts…