Using Syncthing as a Backup Solution
What Is Syncthing (as a Backup Tool)?
Syncthing is primarily a file synchronization tool — it keeps folders in sync between multiple devices in real time. But with the right configuration, it doubles as a backup solution: enable file versioning, set up one-way “send only” folders, and you get continuous, encrypted, off-site backups without a separate backup tool. It replaces cloud backup services like Google Drive or iCloud backup for users who want full control over where their data lives.
Updated March 2026: Verified with latest Docker images and configurations.
Prerequisites
- Two Linux servers (or one server + one desktop/NAS) — source and backup destination
- Docker and Docker Compose installed on both (guide)
- 256 MB of free RAM per Syncthing instance
- Storage space on the backup destination matching your source data
- Network connectivity between both devices (LAN or internet)
Docker Compose Configuration — Backup Server
This is the backup destination server — where your backup copies are stored.
Create a docker-compose.yml file:
services:
syncthing:
image: syncthing/syncthing:2.0.15
container_name: syncthing-backup
hostname: backup-server
environment:
- PUID=1000
- PGID=1000
ports:
- "8384:8384" # Web UI
- "22000:22000/tcp" # File sync (TCP)
- "22000:22000/udp" # File sync (QUIC)
- "21027:21027/udp" # Local discovery
volumes:
- syncthing_config:/var/syncthing/config
- /mnt/backups:/var/syncthing/data
restart: unless-stopped
volumes:
syncthing_config:
The source device also needs Syncthing running (same Docker image, or native install). See our Syncthing setup guide for the full deployment.
Start the backup server:
docker compose up -d
Setting Up Backup Sync
Step 1: Connect the Devices
- Open the Syncthing web UI on both devices (port 8384)
- On each device, go to Actions → Show ID and copy the Device ID
- On each device, click Add Remote Device and paste the other device’s ID
- Accept the connection on both sides
Step 2: Configure Backup Folders
On the source device (the machine you want to back up):
- Click Add Folder
- Set the Folder Path to the directory you want to back up (e.g.,
/home/user/documents) - Set Folder Type to Send Only — this prevents the backup server from pushing changes back
- Share it with the backup server device
- Under File Versioning, select Staggered File Versioning
On the backup server:
- Accept the folder share request
- Set Folder Type to Receive Only — this prevents local changes from syncing back
- Set the folder path to your backup storage (e.g.,
/var/syncthing/data/documents) - Enable File Versioning on this side too (belt and suspenders)
Step 3: Configure Versioning
File versioning is what turns Syncthing from “sync” into “backup.” Configure it on the backup server:
| Versioning Type | Best For | How It Works |
|---|---|---|
| Staggered | Most backup use cases | Keeps versions at increasing intervals: 1/hour for 24h, 1/day for 30 days, 1/week for older |
| Simple | Maximum version retention | Keeps N copies of each changed file |
| Trashcan | Deleted file recovery | Moves deleted files to a .stversions folder |
| External | Custom workflows | Calls an external script on file changes |
Recommended settings for backup:
Type: Staggered File Versioning
Max Age: 365 days
Clean Out After: 365 days
Versioning Path: (leave empty — uses .stversions in the folder)
Backup Architecture Patterns
Pattern 1: Desktop → Server (Most Common)
Desktop (Send Only) → VPS/NAS (Receive Only + Versioning)
Your desktop pushes files to the server. The server stores current files plus versioned history. If your desktop drive fails, restore from the server.
Pattern 2: Server → Off-Site NAS
VPS (Send Only) → Home NAS (Receive Only + Versioning)
Back up your VPS data to a home NAS. Provides geographic separation.
Pattern 3: 3-2-1 with Syncthing
Desktop → Local NAS (Receive Only)
Desktop → Remote VPS (Receive Only)
Two backup destinations: one local (fast restores) and one remote (disaster recovery). Both set to Receive Only with versioning.
Advanced Configuration
Ignore Patterns
Create a .stignore file in each synced folder to exclude files from backup:
// Exclude temporary files
*.tmp
*.swp
*~
// Exclude OS metadata
.DS_Store
Thumbs.db
desktop.ini
// Exclude node_modules and build artifacts
node_modules
.git
dist
build
__pycache__
Bandwidth Limiting
Limit Syncthing’s bandwidth on the backup server so it doesn’t saturate your connection:
- Go to Actions → Settings → Connections
- Set Incoming Rate Limit and Outgoing Rate Limit (in KiB/s)
- A value of
10240limits to ~10 MB/s
Encrypted Backup (Untrusted Server)
Syncthing supports encrypted folders for backing up to a server you don’t fully trust:
- On the source device, share the folder with encryption enabled
- The backup server stores encrypted data — it cannot read your files
- Only devices with the encryption password can decrypt
This is ideal for backing up to a friend’s server or a cheap VPS.
Backup Verification
Syncthing does not verify backup integrity automatically. Set up periodic checks:
# Compare file counts between source and backup
SOURCE_COUNT=$(find /path/to/source -type f | wc -l)
BACKUP_COUNT=$(find /mnt/backups/folder -type f | wc -l)
echo "Source: $SOURCE_COUNT files, Backup: $BACKUP_COUNT files"
Check the Syncthing web UI for:
- Out of Sync Items: should be 0 when idle
- Last Scan: confirms the folder is being monitored
- Folder Status: “Up to Date” on both sides
Syncthing vs Dedicated Backup Tools
| Feature | Syncthing (as backup) | Restic | BorgBackup |
|---|---|---|---|
| Real-time sync | Yes | No (scheduled) | No (scheduled) |
| Deduplication | No | Yes (block-level) | Yes (block-level) |
| Compression | No | Yes | Yes (lz4/zstd) |
| Encryption at rest | Optional (per-folder) | Always | Always |
| Point-in-time restore | Via versioning | Yes (snapshots) | Yes (archives) |
| Bandwidth efficiency | Syncs entire changed files | Syncs only changed blocks | Syncs only changed blocks |
| Cloud storage backends | No (device-to-device) | S3, B2, SFTP, rest-server | SSH/SFTP only |
| Web UI | Yes | No | No |
| Setup complexity | Low | Medium | Medium |
Use Syncthing for backup when: you want real-time protection (every save is backed up immediately), your files change infrequently, or you already run Syncthing for sync.
Use a dedicated tool when: you have large datasets (deduplication saves significant space), you need cloud storage backends, or you want guaranteed point-in-time snapshots.
Troubleshooting
Files Not Syncing
Symptom: Source shows changes but backup server remains stale.
Fix: Check that both devices show “Connected” in the web UI. Verify the folder is shared with the correct device. Check .stignore isn’t excluding the files.
Conflict Files Appearing
Symptom: Files named filename.sync-conflict-*.ext appearing.
Fix: This happens when both sides modify the same file. If using Send Only / Receive Only correctly, conflicts shouldn’t occur. Check that the backup server folder is set to “Receive Only.”
High CPU Usage
Symptom: Syncthing using excessive CPU during initial sync.
Fix: On first sync with large folders, Syncthing hashes every file. This is a one-time operation. Reduce fsWatcherDelayS to a higher value (e.g., 60) in advanced folder settings to decrease file system polling frequency.
Resource Requirements
- RAM: ~100 MB idle per instance, ~300 MB during large syncs
- CPU: Moderate during initial sync (file hashing), minimal afterward
- Disk: Mirrors source data 1:1, plus versioned copies (plan for 1.5-2x source size)
Verdict
Syncthing is the easiest way to add real-time backup if you’re already using it for file sync. The Send Only / Receive Only pattern with staggered versioning gives you genuine backup protection with minimal setup. For most home users backing up documents, photos, and configs, this is sufficient. For large-scale or enterprise backup needs, Restic or BorgBackup are purpose-built and more storage-efficient.
Frequently Asked Questions
Is Syncthing a real backup solution?
Syncthing with file versioning provides real-time continuous backup, but it’s not a traditional backup tool. It lacks deduplication, compression, and scheduled snapshots. For documents and config files that change occasionally, the Send Only / Receive Only pattern with staggered versioning is genuine backup protection. For large datasets or enterprise needs, use Restic or BorgBackup instead.
How much extra disk space does versioning need?
Plan for 1.5-2x your source data size on the backup destination. Staggered versioning keeps one version per hour for 24 hours, one per day for 30 days, and one per week for older files. Actual overhead depends on how frequently your files change — rarely-changed files use almost no extra space.
Can I back up to an untrusted server?
Yes. Syncthing supports encrypted folders — the backup server stores encrypted data and cannot read your files. Only devices with the encryption password can decrypt. This is ideal for backing up to a friend’s server or a cheap VPS where you don’t control physical access.
Does Syncthing work over the internet?
Yes. Syncthing uses relay servers to establish connections when direct connections aren’t possible, and supports NAT traversal. For best performance, open port 22000 (TCP and UDP) on your firewall. Syncthing encrypts all data in transit with TLS.
How do I restore files from a Syncthing backup?
Navigate to the .stversions folder inside your synced directory on the backup server. Versioned files are stored with timestamps in their filenames. Copy the version you need back to the original location. There’s no automated restore wizard — it’s manual file recovery.
Can I use Syncthing alongside a dedicated backup tool?
Yes, and this is a common pattern. Use Syncthing for real-time file sync and immediate protection, and run Restic or BorgBackup on a schedule for deduplicated, compressed snapshots. The combination gives you both instant protection and space-efficient long-term history.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments