All apps · 0 apps
lftp-sync-manager
Docker app from cj0r's Repository
Overview
Readme
View on GitHubLFTP Sync Manager
lftp-sync-manager is a sleek, web-based control panel and automation manager for lftp transfers. It provides a modern Web GUI to orchestrate and monitor fast, multi-segmented, parallel file transfers (Push/Pull) over SFTP, complete with real-time file-watching and cron schedules.

🚀 Key Features
- Sleek Web GUI: Real-time progress bars, speed calculations (Mbps/MBs), log viewers, and 30-day transfer speed graphs.
- High-Performance Transfers: Leverages
lftp's powerful capabilities including segmented downloads (nsegment), parallel file queues (nfile), and automatic reconnects. - SSH Key Handshake Tool: Automatically generates SSH RSA keypairs and installs the public key to your remote SFTP host's
authorized_keysfile directly from the Web UI—eliminating the need to store passwords in your configuration files. - Real-Time Push Sync: Watches a local directory using
chokidarand automatically uploads new/modified files to the remote server instantly. - Cron-Scheduled Syncs: Run push or pull operations automatically at specific intervals using standard cron expressions.
- Bandwidth Throttling & Scheduling: Restrict download and upload speeds (in KB/s) either globally or on a custom schedule (time-of-day and day-of-week) to preserve network capacity.
- Wildcard Include/Exclude Filters: Fine-tune transfers by specifying comma-separated glob patterns (e.g.,
*.tmp,*.mkv) to target only the files you want. - Advanced Sync Options: Fine-grained transfer options including Delete Target Files (true mirroring), Dry Run Mode, Ignore Modification Time, and Only Sync Missing Files.
- Unraid Optimized: Easily deploys on Unraid servers or any standard Docker daemon.
🛠️ Docker Quickstart
The easiest way to run lftp-sync-manager is using Docker or Docker Compose.
Option 1: Docker Compose (Recommended)
- Download the sample compose.yaml file.
- Open the file and edit the volume host paths (
/path/to/local/...) to point to your desired configuration and storage directories on your system. - Run the container in detached mode:
docker compose up -d
Option 2: Docker Run CLI
docker run -d \
--name=lftp-sync-manager \
-p 9342:9342 \
-v /path/to/appdata/config:/config \
-v /path/to/local/upload:/local-push \
-v /path/to/local/download:/local-pull \
--restart unless-stopped \
cj0r/lftp-sync-manager:latest
⚙️ Directory Volume Mappings
| Container Path | Host Path Recommendation | Description |
|---|---|---|
/config |
/mnt/user/appdata/lftp-sync-manager |
Houses the config.json, SSH keys (id_rsa/id_rsa.pub), history database, and logs. |
/local-push |
/mnt/user/share/upload |
Files placed here are pushed/uploaded to the remote host. |
/local-pull |
/mnt/user/share/download |
Target directory where remote files are pulled/downloaded. |
📖 Step-by-Step Configuration Guide
Once your container is running, navigate to http://<your-server-ip>:9342 in your browser to access the Web GUI. Follow these steps to configure your synchronization tasks.
Step 1: Set Up Connection Details
- Go to the Settings tab.
- Enter your SFTP remote host details:
- Host: The domain name or IP address of your remote SFTP server (e.g.
sftp.example.comor192.168.1.100). - Port: The port used for SSH/SFTP (default is
22). - Login: The username of the remote account.
- Password: The password for the remote account. (Note: This password is only needed temporarily if you plan to configure the SSH Handshake tool).
- Host: The domain name or IP address of your remote SFTP server (e.g.
Step 2: Establish SSH Key Authentication (Highly Recommended)
Using SSH key pairs is the most secure method of file transfer and removes the need to store passwords in your application.
[ lftp-sync-manager Web GUI ]
│
1. Click "Generate SSH Keys"
│
2. Click "Authorize SSH Key"
│
┌──────────────┴──────────────┐
│ (Logs in using password) │
│ - Downloads authorized_keys │
│ - Appends new public key │
│ - Uploads updated keys │
└──────────────┬──────────────┘
│
3. Password is deleted from config
4. Subsequent syncs use /config/id_rsa
- In the Settings tab, scroll to the SSH Configuration section.
- Click Generate SSH Keys. This creates a secure 4096-bit RSA keypair inside your
/configvolume (/config/id_rsaand/config/id_rsa.pub). - Enter your remote connection details (Host, Username, and Password) and click Authorize SSH Key.
- The system will connect to the remote host, check if a
.ssh/folder exists, fetch the existing.ssh/authorized_keysfile, append your public key, upload it, and set secure600permissions. - Once authorization succeeds, the application automatically deletes the password from the configuration file. All future connections will use
/config/id_rsa.
Step 3: Configure Transfer Tuning, Filters, & Bandwidth Throttling (Optional)
Configure limits, filtering, and concurrency settings to optimize network throughput:
- Max Parallel Files (
nfile): The maximum number of fileslftpwill transfer simultaneously. - Max Segments (
nsegment): The number of concurrent connections per file. Setting this to8or16speeds up transfers over high-latency networks. - Min Chunk Size (
minchunk): The minimum chunk size (in megabytes) required to trigger segmented transfers. - Bandwidth Limits: Toggle throttling and set maximum Download and Upload limits (in KB/s). Optionally set a time window (e.g.,
08:00to17:00) and choose the active days of the week to throttle. - Wildcard Filters: Specify glob patterns to exclude (e.g.,
*.tmp,Thumbs.db) or to exclusively include (e.g.,*.mp4,*.mkv) files from the transfers. - Mirror Options: Turn on advanced flags:
- Delete Target Files: Removes files on the destination if they no longer exist on the source (true mirroring).
- Dry Run Mode: Executes the sync task but only logs what would be transferred (without writing any files).
- Ignore Modification Time: Matches files by presence and file size only, skipping the timestamp comparison.
- Only Sync Missing Files: Prevents overwriting any existing files on the destination.
Step 4: Configure Sync Tasks
⬆️ Push Configuration (Local to Remote)
- Remote Destination Directory: Specify where files uploaded from
/local-pushshould be stored on the remote host (e.g.,/home/username/uploads). - Real-time Watching: Check this box to enable instant transfers. Any file modified, added, or moved to
/local-pushwill trigger an automated push sync. - Cron Schedule: Enable this and set a cron schedule expression (e.g.
*/30 * * * *for every 30 minutes) to perform periodic sweeps.
⬇️ Pull Configuration (Remote to Local)
- Remote Source Directory: Specify the directory on the remote host containing files you want to retrieve (e.g.,
/home/username/downloads). - Cron Schedule: Enable this and write a cron schedule expression (e.g.
0 2 * * *for daily at 2:00 AM) to pull new files.
Click Save Config at the bottom of the page to apply your settings and start schedulers.
☕ Support the Project
If LFTP Sync Manager has simplified your transfers or automated your backups, consider supporting its continued development! Any contribution is highly appreciated.
- Buy Me A Coffee — Quick one-time support
- Ko-fi — Support via Ko-fi with 0% platform fees
📄 License
This project is licensed under the PolyForm Noncommercial License 1.0.0. Personal and non-commercial use is free, while commercial use requires a separate agreement. See the LICENSE file for details.
Install lftp-sync-manager on Unraid in a few clicks.
Find lftp-sync-manager in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Categories
Download Statistics
Related apps
Explore more like this
Explore allDetails
cj0r/lftp-sync-manager:latestRuntime arguments
- Web UI
http://[IP]:[PORT:9342]- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Web interface access port.
- Target
- 9342
- Default
- 9342
- Value
- 9342
Persistent configuration, history, and logs storage directory.
- Target
- /config
- Default
- /mnt/user/appdata/lftp-sync-manager
- Value
- /mnt/user/appdata/lftp-sync-manager
Local directory scanned for automatic file uploads (Push).
- Target
- /local-push
- Default
- /mnt/user/appdata/lftp-sync-manager/upload
- Value
- /mnt/user/appdata/lftp-sync-manager/upload
Directory where files will be pulled from remote hosts (Pull).
- Target
- /local-pull
- Default
- /mnt/user/appdata/lftp-sync-manager/download
- Value
- /mnt/user/appdata/lftp-sync-manager/download