## Introduction to Syncthing ![Syncthing logo][syncthing] * About me * Alex * arekkusu@r42.ch / alex@r42.ch [syncthing]: img/syncthing_logo.png
## Tokyo Hackerspace ![Tokyo Hackerspace][thslogo] * [Events (Meetup)](https://www.meetup.com/TokyoHackerSpace/) * [TokyoHackerspace.org](https://www.tokyohackerspace.org) [thslogo]: img/thslogo.png
## Syncthing ![Syncthing logo][syncthing_logo] * Syncthing * https://syncthing.net/ * https://docs.syncthing.net/ [syncthing_logo]: img/syncthing_logo.png
![Syncthing logo][syncthing_logo] > Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized > Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet. [syncthing_logo]: img/syncthing_logo.png
## Where does it fit? ![Many possibilities][solutions] [solutions]: img/solutions.png
* https://en.wikipedia.org/wiki/Comparison_of_file_synchronization_software * https://en.wikipedia.org/wiki/Zero-knowledge_proof
## What is Syncthing? * Open Source file synchronization agent * Cross-platform * Decentralized * Encrypted / authenticated
## What can Syncthing do? * Synchronize folder(s) between devices * Not a backup solution
## Demo
## Let's break things ! * Delete Sync folder * Conflict * Connectivity * Nested Sync folder (don't do this) * ...
# How does it work? * Open Protocol * No central server
## Synchronization * Folder ID * File Versioning * Conflict handling * Ignore pattern
## Synchronization * Send/Receive or Send only * Scan at fixed interval * Hidden folder * '.stfolder' * '.stversions' * '.stignore'
## Synchronization * What is synchronized? * File contents / modification time * What is not? * POSIX/NFS ACL, hard link... * How? * File are segmented into blocks * Renaming / moving file * Partially transfered data
## The introducer * Remote device can be set as introducer * Can automatically add new devices * Only in caes of mutually shared folders * About automatically added devices
## Configuration * Web GUI * Listen to localhost by default * Consider security * Local config * xml * Private/public key
## Security * Encryption and Authentication using TLS * Both device authenticate using certificate * Device ID = TLS cert hash * Devices must be explicitly allowed
## Connectivity * TLS over 22000/TCP * Local discovery * 21027/UDP * Global discovery * UPnP / port forwarding * Relaying
## Server? * Syncthing Relay Server * Syncthing Discovery Server
## Privacy * Relay Server * Knows IP, device ID * Disvovery Server * Annoucement sent every 30min * Mapping between device ID and IP * Eavesdropper can know: * Machine running Syncthing * Their device IDs
## Reading Push Away Your Privacy: Precise User Tracking Based on TLS Client Certificate Authentication * [Paper](http://tma.ifip.org/wordpress/wp-content/uploads/2017/06/tma2017_paper2.pdf)
## Other features * Logs * stdout by default or file * Auditing log ('-audit')
## Syncthing versions * Syncthing Core * Syncthing-android * Syncthing-GTK * SyncTrayzor * Updates
## Starting Syncthing * As service * Windows * Task Scheduler * Start on Login * Linux * systemd server user/system * ...
# The good
# The bad
# The ugly
## Getting started * https://docs.syncthing.net/intro/getting-started.html#getting-started * https://docs.syncthing.net/users/autostart.html
## Stats * https://data.syncthing.net/