Submitted by sudo moderator in freeAsInFreedom (edited )

Last week's thread (non-onion link).

This week's Open Source Application of the Week is Syncthing, a FOSS replacement for non-free synchronization apps like Dropbox. Unlike everything else I've reviewed so far, I've actually used Syncthing extensively before it was nominated. And, let me say, it is awesome.

So, what does it do? Well, it's kind of like Dropbox, in that you can synchronize the files in certain folders between multiple computers. So, if you create a new file in a shared folder, or you change one that already exists, your changes will be sent to the other computers you've shared the folder with. But, it's completely decentralized, and end-to-end encrypted. That means you don't have to trust anyone else with your data, and nobody can ""listen in" on what files you're sending back and forth.

When you start up Syncthing, it creates a web user interface accessible from port 8384. It also generates a 56 character device ID for your computer, which you can share with whatever other computers you want to use Syncthing with. You also can choose which folders you want to share (you can choose more than one). Once you start Syncthing on both computers, and choose which folders to share, Syncthing will then scan the folders for changes every 60 seconds, and synchronize the changes, if possible. You don't have to be on the same LAN for your folders to synchronize; Syncthing utilizes discovery servers, so that you can synchronize anytime both computers are online.

Do note that Syncthing isn't a service, so it won't automatically start when your computer starts. But, this is easily fixed; just open up your DE's settings manager, and find where it lets you autostart applications. Then, make a new entry, and have it run "syncthing -no-browser" at startup. Problem solved. As pointed out in the comments on reddit, it actually does come with a systemd user init. Run "systemctl --user enable syncthing.service", then "systemctl --user start syncthing.service".

That's mostly it - it does exactly what it says, and it does it really well. There are a couple of extra features, though. One is whether or not a folder is "Send Only" - that is, if it is marked as send only, then it will not receive changes to the files made by another computer. I can't see a situation where this would be useful, but maybe it is for someone else. Another is file versioning. Syncthing can be instructed to save older instances of a file whenever it's modified. One was is "Trash Can" versioning, where it stores the old version in a hidden folder. When another new version comes along, the old version in the trash can (the hidden folder, not the user's trash can) is deleted, and the previous version about to be replaced goes to the trash can instead. There's also simple versioning, where syncthing saves the last X versions, and staggered versioning, where versions are saved every X minutes, hours, or days. Seeing this, you might be tempted to use Syncthing as a backup utility - don't. It really isn't designed for it (restoring from a backup would be a giant pain), and there are much better tools out there that do backups.

The only criticism I have of Syncthing is that it isn't a service, and that it is limited to sharing entire folders - you cannot decide to share only one file in a folder. But other than that, it's great. If you haven't already, uninstall Dropbox, and start using this.


And that's it for this week's Open Source Application of the Week. What should I review next week? Let me know in the voting thread (non-onion link). Thanks for reading, and I'll see you all next Monday!

11

Comments

You must log in or register to comment.

Defasher wrote

It also generates a 56 character device ID for your computer, which you can share with whatever other computers you want to use Syncthing with.

How do you share the code with fellow activists securely?

4

AlexanderReidRoss wrote

I'd use a secure messaging app like https://tox.chat

5

Defasher wrote

I have Telegram installed, is that okay?

0

jhasse wrote

Telegram's default chats are not end-to-end encrypted, which means that the server (closed-source, owned by the company behind Telegram) can read those message, too. You could use a "secret chat" which is end-to-end encrypted, but the official Telegram desktop application still doesn't support them for example.

Sharing your Syncthing ID is okay though, as you still have to manually accept device requests in Syncthing's UI.

2

sudo OP wrote

You could use PGP, or better yet, i2p-bote. But it's not a huge deal if it falls into the hands of someone you don't want - the worst they could do is spam you with requests to share a folder, which you'd have to ignore.

3

BlackFlagged wrote

What are some possible usage scenarios for this?

3

SpiritOfTito wrote

Two I use are music and pictures.

Anytime I take a picture on my phone it'll send it to my pc. Anytime I update my music folder on my pc it'll update the albums on my phone.

4

sudo OP wrote

If you regularly use 2 computers (say, a desktop PC and a laptop), and you want to work on the same project on both of them (be it programming, a document of some sort, or whatever), then this would be highly useful.

3

zorblax wrote

I use it to keep stuff mirrored between my laptop and desktop

2