Syncthing

syncthing.net
Syncthing

Continuous file synchronization between 2 or more clients. It is simple, yet powerful, and fully-encrypted and private. Syncthing can be deployed with Docker, and there are native clients for Windows, Mac, Linux, BSD and Android.

Open Source

Syncthing Source Code

Author

syncthing

Description

Open Source Continuous File Synchronization

#go#p2p#peer-to-peer#synchronization

Homepage

https://syncthing.net/

License

MPL-2.0

Created

26 Nov 13

Last Updated

12 Jul 26

Latest version

v2.1.2

Primary Language

Go

Size

125,345 KB

Stars

86,284

Forks

5,351

Watchers

86,284

Language Usage

Language Usage

Star History

Star History

Recent Commits

  • Syncthing Release Automation (06 Jul 26)

    chore(gui, man, authors): update docs, translations, and contributors

  • Jakob Borg (01 Jul 26)

    chore(model): simplify FileInfoBatch size computation (#10776) We used a size computation to generate reasonably sized batches, but the ProtoSize call is fairly expensive as it requires a conversion to a wire type etc. We don't need that much precision. Instead, just limit to 1000 files or 5000 blocks, which is likely approximately that much data anyway. Closes #10707 Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (01 Jul 26)

    chore(stcrashreceiver): the "internal" directory exists Closes #10729 Signed-off-by: Jakob Borg <[email protected]>

  • Syncthing Release Automation (29 Jun 26)

    chore(gui, man, authors): update docs, translations, and contributors

  • greatroar (28 Jun 26)

    chore(fs): use x/sys/windows where possible (#10766) Gets rid of an import of "unsafe". --------- Signed-off-by: greatroar <[email protected]> Signed-off-by: Jakob Borg <[email protected]> Co-authored-by: Jakob Borg <[email protected]>

  • Jakob Borg (26 Jun 26)

    fix(sqlite): update last migration to set schema version, counts (#10768) The counts needs to be modified manually since we're not running triggers during migrations. The schema version needed to be bumped. Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (23 Jun 26)

    fix(config): remove extraneous defaults setting while unmarshalling folder options (fixes #10746, fixes #10389) (#10763) This broke PATCH on folders. Any place that needs the defaults should set them prior to unmarshal. Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (23 Jun 26)

    chore(versioner): attempt to prevent blatantly unsafe external versioner commands (fixes #10721) (#10722) While preparing the command, attempt to verify that the template expansion happens in a way that will result in a non-shell-injection command. I don't presume to say that this is a 100% prevention, and the script itself can always do dumb shit with the file path later. Nonetheless, we should make a best-effort attempt. Equally, this could generate false positives for commands that are strangely written but in fact safe. I think this is acceptable; external versioning is currently used by approximately 0.02% of users, and presumably most of them have a setup that is sane. --------- Signed-off-by: Jakob Borg <[email protected]>

  • Simon Frei (22 Jun 26)

    chore: stop treating dirs as having size 128 (#10750) Resp. directories for the database, and both dirs and symlinks for `FileInfo.FileSize`. Instead handle it in the UI progress percentage. We even already have special cases there for deletions, might as well handle directories just like any other zero-sized needed item there. This went through the very thorough testing of running it on my laptop, the migration was applied and it seemed to be working fine after. --------- Signed-off-by: Simon Frei <[email protected]>

  • Jakob Borg (22 Jun 26)

    chore(model): increase default value for num hashers (#10761)

  • Syncthing Release Automation (22 Jun 26)

    chore(gui, man, authors): update docs, translations, and contributors

  • Jakob Borg (21 Jun 26)

    chore(osutil): fixup test for symlinked folder root (#10758) This test was incorrectly rewritten to use fakefs, which doesn't really test what it's supposed to test. Signed-off-by: Jakob Borg <[email protected]>

  • Henrik Bråthen (21 Jun 26)

    fix(folder): check if context canceled when scanning (fixes #10363) (#10757) During initial folder scan and the scan is interrupted with a context.Canceled error, it was previously logged as a "Failed initial scan" error, which can be misleading The change adds a explicit check for context.Canceled and silently ignores it (fixes #10363) Signed-off-by: Henrik Bråthen <[email protected]>

  • Syncthing Release Automation (15 Jun 26)

    chore(gui, man, authors): update docs, translations, and contributors

  • Jakob Borg (13 Jun 26)

    build: use Go 1.26 for Windows as well (#10744) Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (13 Jun 26)

    fix(protocol): loosen restriction on size of directory entries (#10743) The synthetic directory size must be permitted. Ref #10737. --------- Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (12 Jun 26)

    build(deps): update dependencies (#10740) Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (11 Jun 26)

    fix(protocol): be more stringent about blocks in non-file entries (#10737) Directories, but also symlinks, should not have blocks or a size. Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (11 Jun 26)

    fix(protocol): always expect & validate block hash in requests (#10738) Verify that block requests have a hash and that it's correct. This helps prevent certain races and ensure that only expected data is ever returned in response to a request. (In Syncthing prior to 1.28.1 the block hash was omitted for encrypted requests from trusted devices. This breaks compatibility with that specific config on those versions.) --------- Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (11 Jun 26)

    fix(fs, model): improve symlink resilience in file shortcut (#10739) Ensure file was a file before the shortcut as well as after... (This was implied when talking to a correct implementation, but not enforced.) Make our file opening operations safe by default by ensuring the last path component is not a symlink. --------- Signed-off-by: Jakob Borg <[email protected]>

  • Syncthing Release Automation (08 Jun 26)

    chore(gui, man, authors): update docs, translations, and contributors

  • Simon Frei (04 Jun 26)

    chore(db, model): separate methods to drop a device vs its files (#10480) Fixes #10469 --------- Signed-off-by: Simon Frei <[email protected]> Signed-off-by: Jakob Borg <[email protected]> Co-authored-by: Marcus B Spencer <[email protected]> Co-authored-by: Jakob Borg <[email protected]>

  • Jakob Borg (03 Jun 26)

    fix: let umask do the thing (#10723) We had a few places where we had perhaps too much of an opinion on the permissions on created files and directories, sometimes fuled by a misconception about how permissions work in both Unix and Windows. Recap on the ground rules: - On all unixes, all file & directory creation (`Mkdir`, `MkdirAll`, `Create`, `WriteFile`, `Open`) has the given permission bits filtered via the user's umask. The proper permissions for us to use are in almost all cases 0o666 for files and 0o777 for directories, strange as that may look at the call site. - On Windows, there is no umask but in turn all of the permission bits except the user write bit are ignored. The absence of user write bit is converted into the read only attribute. This means that what is proper for Unix above is also proper for Windows. - We make an exception when creating files for certificate keys and the config / database directories, as those contain secrets we think should remain closed even if the user generally collaborates with other users on the system. (Also removal of a bugfixed copy of MkdirAll for Windows that hasn't been necessary for a few years.) --------- Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (02 Jun 26)

    fix(gui): properly escape filenames in fancytree Signed-off-by: Jakob Borg <[email protected]>

  • Jakob Borg (02 Jun 26)

    fix(connections): do not report connection metrics for self (ref #10509) (#10724) Makes the metrics easier to interpret. Signed-off-by: Jakob Borg <[email protected]>

  • Shablone (02 Jun 26)

    fix: on Windows don't allocate console if not opened inside one (#10726) This change allows Syncthing to be launched from Explorer without showing a console window, while preserving the existing command-line behavior. Previously, launching syncthing.exe from Explorer would always allocate a console window, which could only be hidden later by using `--no-console`. It was not possible to avoid console allocation entirely without introducing other issues. On Windows 24H2 and later a new application manifest allows us to achieve it. See [console allocation policy](https://learn.microsoft.com/en-us/windows/console/console-allocation-policy) This manifest is built into a syso-file by `goversioninfo`, which is already used to generate Windows resource files consumed by the Go compiler. **Note1:** On Windows 24H2 and later, no console is allocated when Syncthing is launched from Explorer, even if `--no-console` is set to `False`. It can still be used as a CLI tool as usual if you call it from console. **Note2:** The content of the manifest file may not be formatted. Even a `newline` would break it. ### Testing Tested on Windows 11 25H2: No console visible from explorer. CLI works as usual. Ref #8046, ref #10633, ref #10481, ref #10600 Signed-off-by: Elias <[email protected]> Co-authored-by: Elias <[email protected]>

  • Syncthing Release Automation (01 Jun 26)

    chore(gui, man, authors): update docs, translations, and contributors

  • Shablone (25 May 26)

    chore(syncthing): open URLs via Windows API instead via cmd.exe (#10712) ### Purpose On Windows replace `cmd.exe /C start` with direct `ShellExecute` API for opening the webpage. The previous implementation used `exec.Command("cmd.exe", "/C", "start "+url)` which spawns two extra processes (cmd.exe → start). Launching cmd.exe resulted in a shortly visible terminal. Both -`start` -and another alternative `exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start()` are just wrappers for `ShellExecute`. So this implementation is even more direct ### Testing I executed the compiled syncthing.exe on Windows 11, both from explorer and console. The webpage opened as expected. ### Screenshots N/A. ### Documentation N/A ## Authorship Name: Elias @Shablone Email: [[email protected]](mailto:[email protected]) Signed-off-by: Elias <[email protected]> Co-authored-by: Elias <[email protected]>

  • Jakob Borg (25 May 26)

    fix(protocol): handle zero-size requests (fixes #10709) (#10710) - Allow zero-sized requests since they are sent by all current versions of Syncthing. - Stop sending zero-sized requests since that's stupid. --------- Signed-off-by: Jakob Borg <[email protected]>

  • Syncthing Release Automation (25 May 26)

    chore(gui, man, authors): update docs, translations, and contributors

Syncthing Security

6/10

Repo Security Summary

Updated 29 Jun 26

  • Code-Review 3/10
  • Maintained 10/10
  • Security-Policy 10/10
  • Dangerous-Workflow 10/10
  • Token-Permissions 0/10
  • Binary-Artifacts 10/10
  • CII-Best-Practices 5/10
  • License 10/10
  • Fuzzing 0/10
  • Branch-Protection 3/10
  • Signed-Releases 8/10
  • SAST 0/10
  • Packaging 10/10
  • Pinned-Dependencies 3/10

Security Advisories (2)

  • medium Patched

    CVE-2022-46165 Cross-site Scripting (XSS) in Web GUI

  • medium Patched

    CVE-2021-21404 Crash due to malformed relay protocol message

Syncthing Website

Website

Syncthing

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address 185.199.110.153
  • Hostname cdn-185-199-110-153.github.com
  • Location California, Pennsylvania, United States of America, NA
  • ISP GitHub Inc.
  • ASN AS54113

Associated Countries

  • DE DE
  • US US
  • IE IE

Safety Score

Website marked as safe

100%

Blacklist Check

syncthing.net was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Syncthing Docker

Container Info

syncthing

Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers in real time, safely protected from prying eyes.

#Backup#Cloud#Other#Tools linuxserver/syncthing:latest

Run Command

docker run -d \
  -p 8384:8384/tcp \
  -p 21027:21027/udp \
  -p 22000:22000/tcp \
  -e PUID=${PUID} \
  -e PGID=${PGID} \
  -v /portainer/Files/AppData/Config/Syncthing:/config \
  -v /sync \
  --restart=unless-stopped \
  linuxserver/syncthing:latest

Compose File

version: 3.8
services:
  syncthing-container:
    image: "linuxserver/syncthing:latest"
    ports:
      - "8384:8384/tcp"
      - "21027:21027/udp"
      - "22000:22000/tcp"
    environment:
      PUID: 1000
      PGID: 100
    volumes:
      - "/portainer/Files/AppData/Config/Syncthing:/config"
      - /sync
    restart: unless-stopped

Environment Variables

  • Var Name Default
  • PUID 1000
  • PGID 100

Port List

  • 8384:8384/tcp
  • 21027:21027/udp
  • 22000:22000/tcp

Volume Mounting

  • /portainer/Files/AppData/Config/Syncthing /config
  • /sync

Syncthing Reviews

More Backup and Sync

  • Modern and simpler alternative to Nextcloud/ownCloud crafted with TypeScript. Unifies file management, sync, sharing, notes, RSS, expenses, calendars, contacts, and photos, with MFA, WebDAV, CalDAV, CardDAV, SSO, and more.

  • NextCloud

    NextCloud

    nextcloud.com

    Feature-rich productivity platform, that can be used to backup and selectively sync encrypted files and folders between 1 or more clients. A key benefit the wide range of plug-ins in the NextCloud App Store, maintained by the community. NextCloud was a hard fork off OwnCloud.

  • SeaFile

    SeaFile

    seafile.com

    An open source cloud storage and sync solution. Files are grouped into Libraries, which can be individually encrypted, shared of synced. Docker image available for easy deployment, and native clients for Windows, Mac, Linux, Android and iOS.

About the Data: Syncthing

API

You can access Syncthing's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/syncthing

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share Syncthing

Help your friends compare Backup and Sync, and pick privacy-respecting software and services.
Share Syncthing and Awesome Privacy with your network!

View Backup and Sync (4)