Syncthing is a serverless, peer-to-peer file synchronization tool. It is often compared to Dropbox. However, unlike Dropbox, there is no central server with Syncthing; your devices talk directly to each other to sync data. Syncthing has various effective methods for firewall traversal, including public relays for the worst case. All Syncthing traffic is fully encrypted and authenticated.
Syncthing as an Asynchronous Mesh
Syncthing actually can operate fully asynchronously. For instance, if you have a house and a shed, with a Raspberry Pi at the shed that has no Internet access, you can still sync files between them. You can set up a phone to sync the directory with them both. When the phone is near either the house or the shed, it will sync data with whatever network it can join. When it travels to the other location, it will propagate the changes to it.
I wrote more about this use of Syncthing, and its use with NNCP, in my blog post A simple, delay-tolerant, offline-capable mesh network with Syncthing (+ optional NNCP). Yes, it is a form of a Mesh Network!
Links to this note
Asynchronous communication is communication between two endpoints that doesn’t have to happen in real time or near-real-time.
A network in which the nodes typically discover each other and the routes between each other automatically.
Anything that uses encryption to keep content away from spying eyes.
This started out at a post on my blog. This edited version is intended to be kept more up-to-date.
NNCP has built-in support for running over TCP, with nncp-daemon and nncp-call/caller. NNCP’s own use cases page talks about various use cases for NNCP. Some of them, such as the no link page, cover use of nncp-xfer; others, such as the one-way broadcasting page go over nncp-bundle.
When things are difficult – maybe there’s been a disaster, or an invasion (this page is being written in 2022 just after Russia invaded Ukraine), or maybe you’re just backpacking off the grid – there are tools that can help you keep in touch, or move your data around. This page aims to survey some of them, roughly in order from easiest to more complex.
This page describes some basic concepts of NNCP.
NNCP lets you securely send files, or request remote execution, between systems. It uses asynchronous communication, so the source and destination need never be online simultaneously. NNCP can route requests via intermediate devices – other NNCP nodes, USB sticks, tapes, radios, phones, cloud services, whatever – leading to a network that is highly resilient and flexible. NNCP makes it much easier to communicate with devices that lack Internet connectivity, or have poor Internet.