Syncthing – Continuous File Synchronization
Introduction to Syncthing
Syncthing is a free, open-source, continuous file synchronization program that synchronizes files between two or more devices in real-time. Unlike cloud-based synchronization services, Syncthing operates on a peer-to-peer model where data is transferred directly between devices without passing through third-party servers. This approach ensures complete privacy and control over your data while eliminating concerns about cloud storage providers accessing your files.
Syncthing uses strong encryption (TLS) for all communications and employs the Block Exchange Protocol for efficient file transfer. The software automatically discovers devices on local networks and can connect devices across the internet using relay servers when direct connections aren’t possible. With support for Windows, macOS, Linux, BSD, and Android, Syncthing provides a truly cross-platform solution for keeping files synchronized across all your devices.
Key Features and Capabilities
Syncthing offers real-time synchronization with automatic conflict resolution, file versioning, and selective folder sharing. The software supports ignore patterns for excluding specific files or directories, send-only and receive-only folder modes, and file versioning for recovering previous versions. The web-based GUI provides easy configuration and monitoring, while the underlying protocol handles all the complexity of maintaining synchronization.
Advanced features include device introduction for easy network expansion, relay servers for NAT traversal, global and local discovery, and extensive API for integration with other tools. Syncthing is designed for resilience—devices can synchronize whenever they’re online, even if they’ve been offline for extended periods.
Installation on Linux
Syncthing is available for Linux through package managers and direct download.
Installing on Ubuntu/Debian
# Add official repository
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
# Add repository
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
# Install Syncthing
sudo apt update
sudo apt install syncthing
# Start Syncthing
syncthing
Installing via Flatpak
# Add Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Install Syncthing GTK wrapper
flatpak install flathub me.kozec.syncthingtk
# Or install via system package manager
Installing on Fedora
# Install Syncthing
sudo dnf install syncthing
# Start Syncthing
syncthing
Installing on Arch Linux
# Install from official repositories
sudo pacman -S syncthing
# Optional: Install GUI wrapper
sudo pacman -S syncthingtray
Running as Service
# Enable user service (runs as your user)
systemctl --user enable syncthing
systemctl --user start syncthing
# Check status
systemctl --user status syncthing
# View logs
journalctl --user -u syncthing
# Enable at boot (for user services)
loginctl enable-linger $USER
Installation on Windows
Syncthing for Windows is available through multiple installation methods.
Installing via Direct Download
# Download from syncthing.net
# Extract syncthing.exe to desired location
# Run syncthing.exe
# Web GUI opens automatically at http://127.0.0.1:8384
Installing via Winget
# Install using Windows Package Manager
winget install Syncthing.Syncthing
# Upgrade Syncthing
winget upgrade Syncthing.Syncthing
Installing via Chocolatey
# Install using Chocolatey
choco install syncthing
# Upgrade Syncthing
choco upgrade syncthing
SyncTrayzor (Windows Wrapper)
# SyncTrayzor provides:
# - System tray integration
# - Automatic startup
# - File browser integration
# - Notification support
# Install via Chocolatey
choco install synctrayzor
# Or download from GitHub:
# https://github.com/canton7/SyncTrayzor
Running as Windows Service
# Using NSSM (Non-Sucking Service Manager)
nssm install syncthing "C:\path\to\syncthing.exe"
nssm start syncthing
# Or use SyncTrayzor which handles this automatically
Installation on macOS
Syncthing is available for macOS through Homebrew or direct download.
Installing via Homebrew
# Install Syncthing
brew install syncthing
# Start Syncthing service
brew services start syncthing
# Or run manually
syncthing
Installing macOS Wrapper
# Install Syncthing macOS wrapper
brew install --cask syncthing
# Provides:
# - Menu bar integration
# - Automatic startup
# - Native notifications
Installation on Android
Syncthing is available for Android devices.
Installing from Play Store
# Search "Syncthing" in Google Play Store
# Install by Syncthing Community
# Alternative: Syncthing-Fork
# Enhanced version with additional features
# F-Droid:
# Available on F-Droid as well
Android Permissions
# Required permissions:
# - Storage access (for file sync)
# - Network access
# - Run in background
# Battery optimization:
# Disable battery optimization for Syncthing
# Settings > Apps > Syncthing > Battery > Unrestricted
Web GUI Overview
Navigating the Syncthing web interface.
Accessing Web GUI
# Default URL
http://127.0.0.1:8384
# Remote access (if configured)
http://device-ip:8384
# First launch:
# Prompted to set GUI password
# Recommended for security
Main Sections
# Folders (left panel)
# Shows configured shared folders
# Status, sync percentage, errors
# This Device (center)
# Current device information
# CPU, RAM, uptime
# Remote Devices (right panel)
# Connected devices
# Sync status, connection type
# Actions menu
# Add folder, add device
# Settings, logs
Connecting Devices
Setting up synchronization between devices.
Device ID
# View your device ID:
Actions > Show ID
# Device ID format:
# 7 groups of 7 characters separated by dashes
# Example: XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX
# Share device ID:
# QR code (for mobile)
# Copy text
Adding Remote Device
# Add device:
Remote Devices > Add Remote Device
# Enter device ID
# Set device name (friendly name)
# Configure options:
# - Introducer (auto-add shared devices)
# - Auto Accept folders
# - Compression (metadata/always/never)
# - Addresses (dynamic/specific)
# The remote device must also add your device ID
Device Discovery
# Discovery methods:
# - Local discovery (same network)
# - Global discovery (over internet)
# - Relay servers (when direct connection fails)
# Configure:
Settings > Connections
# Enable/disable discovery methods
Setting Up Folders
Configuring folders for synchronization.
Adding Shared Folder
# Add folder:
Folders > Add Folder
# Configure:
Folder Label: Friendly name
Folder ID: Unique identifier (auto-generated)
Folder Path: Local directory path
# Select devices to share with
# Each device must also add the folder
Folder Types
# Send & Receive (default)
# Full two-way synchronization
# Send Only
# Changes sent to others
# Changes from others ignored
# Useful for master copies
# Receive Only
# Receives changes from others
# Local changes not sent
# Useful for backup destinations
Advanced Folder Settings
# File Versioning:
# Simple - keeps old versions in .stversions
# Staggered - time-based retention
# Trash Can - moves deleted files to trash
# External - custom script
# Ignore patterns:
# Click "Ignore Patterns"
# Add patterns to exclude files
# Example:
*.tmp
.DS_Store
Thumbs.db
~*
# Scan interval:
# How often to check for changes
# Default: 3600 seconds (1 hour)
# 0 = disable periodic scanning (rely on filesystem watcher)
Ignore Patterns
Excluding files from synchronization.
Pattern Syntax
# .stignore file in folder root
# Or configure in Web GUI
# Basic patterns:
*.txt Match all .txt files
/foo Match foo in root only
foo/ Match foo directory
**/foo Match foo anywhere
# Negation:
!important.txt Don't ignore this file
# Comments:
// This is a comment
# This is also a comment
Common Ignore Patterns
# Temporary files
*.tmp
*.temp
~*
# System files
.DS_Store
Thumbs.db
desktop.ini
# IDE/Editor files
.idea/
.vscode/
*.swp
*~
# Build artifacts
node_modules/
__pycache__/
*.pyc
.git/
# Large files
*.iso
*.vmdk
File Versioning
Keeping previous versions of files.
Simple Versioning
# Configuration:
Folder Settings > File Versioning > Simple
# Parameters:
Keep Versions: Number to keep (default 5)
# Behavior:
# Old versions stored in .stversions folder
# Named: filename~date-time.ext
Staggered Versioning
# Configuration:
Folder Settings > File Versioning > Staggered
# Parameters:
Max Age: How long to keep versions (days)
Clean Interval: How often to clean (seconds)
Versions Path: Where to store versions
# Retention policy:
# First hour: one version per 30 seconds
# First day: one version per hour
# First 30 days: one version per day
# After 30 days: one version per week
External Versioning
# Configuration:
Folder Settings > File Versioning > External
# Command: Path to script
# Script receives:
# %FOLDER_PATH% - folder path
# %FILE_PATH% - file path
# Example script (backup to dated folder):
#!/bin/bash
BACKUP_DIR="$1/.backup/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
mv "$2" "$BACKUP_DIR/"
Command Line Interface
Using Syncthing from command line.
Basic Commands
# Start Syncthing
syncthing
# Start without GUI
syncthing --no-browser
# Specify config directory
syncthing --config=/path/to/config
# Generate device ID
syncthing --device-id
# Reset database
syncthing --reset-database
# Upgrade Syncthing
syncthing --upgrade
Configuration
# Config location:
# Linux: ~/.config/syncthing/
# Windows: %LOCALAPPDATA%\Syncthing\
# macOS: ~/Library/Application Support/Syncthing/
# Config files:
config.xml Main configuration
cert.pem Device certificate
key.pem Private key
index-*.db Database files
REST API
# API endpoint
http://127.0.0.1:8384/rest/
# Get API key
cat ~/.config/syncthing/config.xml | grep apikey
# Example API calls:
# Get system status
curl -H "X-API-Key: YOUR_API_KEY" http://localhost:8384/rest/system/status
# Get folder status
curl -H "X-API-Key: YOUR_API_KEY" http://localhost:8384/rest/db/status?folder=FOLDER_ID
# Trigger rescan
curl -X POST -H "X-API-Key: YOUR_API_KEY" http://localhost:8384/rest/db/scan?folder=FOLDER_ID
Security Configuration
Securing your Syncthing setup.
GUI Authentication
# Set GUI password:
Settings > GUI
# Enable "Use HTTPS for GUI"
# Set Username and Password
# Access control:
GUI Listen Address: 127.0.0.1:8384 (local only)
# Or 0.0.0.0:8384 for remote access (use with caution)
Device Authentication
# Devices authenticate via:
# - Device certificates
# - Device ID verification
# Introducer devices:
# Can automatically add new devices
# Use carefully - only for trusted devices
Network Security
# All traffic encrypted with TLS
# Perfect forward secrecy
# Relay servers:
# End-to-end encrypted
# Relay cannot read content
# Disable features for privacy:
Settings > Connections
# Disable: Global Discovery
# Disable: Enable Relaying
# Use only: Local Discovery
Troubleshooting
Common issues and solutions.
Connection Issues
# Devices not connecting:
# 1. Verify device IDs are correct on both sides
# 2. Check firewall (port 22000 TCP/UDP)
# 3. Ensure discovery is enabled
# 4. Check if relaying is needed
# Firewall rules (Linux):
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udp
sudo ufw allow 21027/udp # Local discovery
Sync Issues
# Folder not syncing:
# 1. Check folder is shared with device
# 2. Verify folder ID matches
# 3. Check ignore patterns
# 4. Review logs for errors
# Out of sync files:
# Click folder > "Override Changes" or "Revert Local Changes"
# Based on folder type
# Scan issues:
# Actions > Rescan folder
# Or restart Syncthing
Checking Logs
# View logs in GUI:
Actions > Logs
# Command line (systemd):
journalctl --user -u syncthing -f
# Log file location:
# Config directory / syncthing.log
Reset Configuration
# Backup config first
cp -r ~/.config/syncthing ~/.config/syncthing.bak
# Reset completely:
rm -rf ~/.config/syncthing
# Or just reset database:
syncthing --reset-database
Best Practices
Recommendations for optimal Syncthing usage.
Performance Tips
# For large folders:
# - Use ignore patterns liberally
# - Increase scan interval
# - Disable watch mode if causing issues
# For many small files:
# - Enable compression
# - Use SSD storage
# For slow networks:
# - Enable compression
# - Use bandwidth limits
Backup Strategy
# Syncthing is NOT a backup
# It synchronizes, including deletions
# For backup:
# - Use file versioning
# - Add receive-only backup device
# - Combine with traditional backup
Conclusion
Syncthing provides a powerful, privacy-respecting solution for file synchronization that puts users in complete control of their data. Its peer-to-peer architecture eliminates dependence on third-party cloud services while still providing seamless synchronization across devices. Whether synchronizing documents between computers, backing up mobile photos, or maintaining distributed copies of important files, Syncthing offers a robust, secure, and free solution that respects user privacy and data sovereignty.
Download Options
Download Syncthing – Continuous File Synchronization
Version 1.27.x
File Size: 15-30 MB
Download NowSafe & Secure
Verified and scanned for viruses
Regular Updates
Always get the latest version
24/7 Support
Help available when you need it