{"id":42034180,"url":"https://github.com/nitrobass24/seedsync","last_synced_at":"2026-04-30T23:00:47.671Z","repository":{"id":334641770,"uuid":"896322980","full_name":"nitrobass24/seedsync","owner":"nitrobass24","description":"SeedSync - Fast seedbox file synchronization. Modernized fork with Docker-only deployment, Python 3.12","archived":false,"fork":false,"pushed_at":"2026-04-30T21:26:41.000Z","size":19252,"stargazers_count":46,"open_issues_count":3,"forks_count":5,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2026-04-30T22:09:20.345Z","etag":null,"topics":["docker","file-sync","lftp","python","seedbox","self-hosted"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"ipsingh06/seedsync","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nitrobass24.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-30T03:52:55.000Z","updated_at":"2026-04-30T21:26:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nitrobass24/seedsync","commit_stats":null,"previous_names":["nitrobass24/seedsync"],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/nitrobass24/seedsync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitrobass24%2Fseedsync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitrobass24%2Fseedsync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitrobass24%2Fseedsync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitrobass24%2Fseedsync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nitrobass24","download_url":"https://codeload.github.com/nitrobass24/seedsync/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitrobass24%2Fseedsync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32479448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","file-sync","lftp","python","seedbox","self-hosted"],"created_at":"2026-01-26T05:02:19.779Z","updated_at":"2026-04-30T23:00:47.659Z","avatar_url":"https://github.com/nitrobass24.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/12875506/85908858-c637a100-b7cb-11ea-8ab3-75c0c0ddf756.png\" alt=\"SeedSync\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/nitrobass24/seedsync/actions/workflows/ci.yml\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/nitrobass24/seedsync/ci.yml?branch=master\u0026label=CI\" alt=\"CI Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/nitrobass24/seedsync/releases/latest\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/nitrobass24/seedsync\" alt=\"Latest Release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/nitrobass24/seedsync\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/nitrobass24/seedsync\" alt=\"Stars\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/nitrobass24/seedsync/pkgs/container/seedsync\"\u003e\n    \u003cimg src=\"https://ghcr-badge.elias.eu.org/shield/nitrobass24/seedsync/seedsync\" alt=\"Docker Pulls\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/nitrobass24/seedsync/pkgs/container/seedsync\"\u003e\n    \u003cimg src=\"https://ghcr-badge.egpl.dev/nitrobass24/seedsync/size\" alt=\"Image Size\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/nitrobass24/seedsync/blob/master/LICENSE.txt\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/nitrobass24/seedsync\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://nitrobass24.github.io/seedsync/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/docs-website-blue\" alt=\"Documentation\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Angular-21-dd0031\" alt=\"Angular 21\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Python-3.12-3776ab\" alt=\"Python 3.12\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-amd64%20%7C%20arm64-lightgrey\" alt=\"Platform\"\u003e\n\u003c/p\u003e\n\nSeedSync is a tool to sync files from a remote Linux server (like your seedbox) to your local machine.\nIt uses LFTP to transfer files fast!\n\n\u003e **Note**: This is a modernized fork of [ipsingh06/seedsync](https://github.com/ipsingh06/seedsync) with updated dependencies and Docker-only deployment.\n\n## Features\n\n* Built on top of [LFTP](http://lftp.tech/), the fastest file transfer program\n* Web UI — track and control your transfers from anywhere\n* **Multiple path pairs** — sync from multiple remote directories independently\n* **Exclude patterns** — filter out unwanted files with glob patterns\n* **Multi-select** — select multiple files for bulk queue/stop/delete\n* Auto-Queue — only sync the files you want based on pattern matching\n* Automatically extract your files after sync\n* **Webhook notifications** — HTTP POST on download/extract events\n* Delete local and remote files easily\n* Dark mode, staging directory, bandwidth limiting, and more\n* **Lightweight Docker image** — ~45 MB Alpine-based, multi-arch (amd64/arm64)\n* Fully open source!\n\n## Documentation\n\nFull documentation is available at **[nitrobass24.github.io/seedsync](https://nitrobass24.github.io/seedsync/)**\n\n## Quick Start (Docker)\n\n### Using Docker Compose (Recommended)\n\n1. Create a `docker-compose.yml`:\n\n```yaml\nservices:\n  seedsync:\n    image: ghcr.io/nitrobass24/seedsync:latest\n    container_name: seedsync\n    ports:\n      - \"8800:8800\"\n    environment:\n      - PUID=1000  # Your user ID (run 'id' to find)\n      - PGID=1000  # Your group ID\n      # - UMASK=002  # Optional: file permission mask (002 for 775/664)\n    volumes:\n      - ./config:/config\n      - /path/to/downloads:/downloads\n      # Uncomment below to use SSH key authentication\n      # - ~/.ssh/id_rsa:/home/seedsync/.ssh/id_rsa:ro\n    restart: unless-stopped\n```\n\n2. Start the container:\n\n```bash\ndocker compose up -d\n```\n\n3. Access the web UI at **http://localhost:8800**\n\n### Using Docker Run\n\n```bash\ndocker run -d \\\n  --name seedsync \\\n  -p 8800:8800 \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -v /path/to/config:/config \\\n  -v /path/to/downloads:/downloads \\\n  ghcr.io/nitrobass24/seedsync:latest\n\n# Optional: control file permissions with UMASK\n# -e UMASK=002  # 775/664 permissions\n```\n\n\u003e **SSH Key Auth**: To use key-based authentication, mount your private key:\n\u003e `-v ~/.ssh/id_rsa:/home/seedsync/.ssh/id_rsa:ro`\n\n### Unraid\n\nSeedSync is available as a Community Application on Unraid.\n\n1. In the Unraid web UI, go to **Docker → Template Repositories** and add:\n   ```\n   https://github.com/nitrobass24/unraid-templates\n   ```\n2. Go to the **Apps** tab, search for **SeedSync**, and click **Install**.\n3. Review the default paths and click **Apply**:\n   - **Config**: `/mnt/user/appdata/seedsync`\n   - **Downloads**: `/mnt/user/downloads/seedsync`\n4. Access the web UI at `http://\u003cyour-unraid-ip\u003e:8800`\n\n\u003e **Note**: PUID/PGID default to `99`/`100` (Unraid's `nobody`/`users`), which is correct for most Unraid setups.\n\n## Configuration\n\nOn first run, access the web UI and configure:\n\n1. **Remote Server**: Your seedbox SSH hostname/IP\n2. **SSH Credentials**: Username and password\n3. **Remote Path**: Directory on the seedbox to sync from\n4. **Local Path**: Maps to `/downloads` in the container\n\n### Multiple Path Pairs\n\nTo sync from multiple remote directories, use **Path Pairs** in Settings. Each pair has its own remote path, local path, auto-queue toggle, and exclude patterns. Path pairs run independent LFTP and scanner instances.\n\n### SSH Key Authentication\n\nTo use password-less SSH key authentication:\n\n1. Mount your private key into the container (see volume examples above)\n2. In the web UI Settings, enable **\"Use password-less key-based authentication\"**\n3. The password field can be left blank when key auth is enabled\n\n### Bandwidth Limiting\n\nYou can limit download speed in Settings under the **Connections** section. The **Bandwidth Limit** field accepts:\n- Numeric values in bytes/sec (e.g., `102400` for 100 KB/s)\n- Values with suffixes: `K` for KB/s, `M` for MB/s (e.g., `500K`, `2M`)\n- `0` or empty for unlimited\n\n## Recommended Workflow\n\nThe best way to use SeedSync is with **hard links** and a dedicated completion directory:\n\n1. **Configure your torrent client** (qBittorrent, ruTorrent, etc.) to hard link completed downloads into a separate folder (e.g., `/downloads/complete`). Hard links don't use extra disk space — your originals stay intact for seeding.\n2. **Point SeedSync** at the completion directory.\n3. **Enable Auto-Queue** and turn on **\"Delete remote file after syncing\"** in Settings.\n\nThis way, each file is downloaded exactly once. After SeedSync syncs it, the hard link is removed from the completion directory, so it's never re-downloaded — even after a container restart. Your originals remain untouched for seeding.\n\n\u003e **Note**: Both directories must be on the same filesystem for hard links to work.\n\nSee the [full setup guide](https://nitrobass24.github.io/seedsync/usage#recommended-setup) in the docs for directory layout examples and torrent client configuration.\n\n## Building from Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/nitrobass24/seedsync.git\ncd seedsync\n\n# Build and run\nmake build\nmake run\n\n# View logs\nmake logs\n```\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PUID` | 1000 | User ID for file permissions |\n| `PGID` | 1000 | Group ID for file permissions |\n| `UMASK` | *(unset)* | File permission mask (e.g. `002` for 775/664, `000` for 777/666) |\n\n## Volumes\n\n| Path | Description |\n|------|-------------|\n| `/config` | Configuration and state files |\n| `/downloads` | Download destination directory |\n| `/home/seedsync/.ssh/id_rsa` | SSH private key (optional, for key-based auth) |\n\n## Ports\n\n| Port | Description |\n|------|-------------|\n| 8800 | Web UI |\n\n## Troubleshooting\n\n### View Logs\n\n```bash\ndocker logs seedsync\n```\n\n### Permission Issues\n\nEnsure your `PUID` and `PGID` match your host user:\n\n```bash\nid  # Shows your UID and GID\n```\n\n### SSH Connection Issues\n\n- Verify your seedbox allows SSH connections\n- Check that the SSH port is correct (default: 22)\n- Ensure your credentials are correct\n- If using SSH key auth, ensure the key is mounted at `/home/seedsync/.ssh/id_rsa` (read-only is fine)\n\n### Custom Python Path on Remote Server\n\nIf your seedbox has Python 3 installed at a non-standard location (e.g. a custom build in your home directory), set **Remote Python Path** in Settings to the full path to the Python 3 binary. For example: `~/python3/bin/python3`. Leave empty to use the default `python3`.\n\n### Remote Shell Not Found\n\nIf you see an error about `/bin/bash` not found, SeedSync will attempt to auto-detect the available shell on your remote server. Check the logs for the detected shell path. If detection fails, create a symlink on the remote server:\n\n```bash\nsudo ln -s /usr/bin/bash /bin/bash\n```\n\n### SCP Permission Denied (scanner can't copy to /tmp)\n\nIf you see `scp: dest open '/tmp/scanfs': Permission denied` in the logs, your remote server doesn't allow writes to `/tmp`. SeedSync copies its scanner utility there by default.\n\nFix: open the web UI **Settings**, find **Server Script Path**, and change it to a directory you own on the remote server — for example `~` or `~/.local`. Save and restart the container.\n\n### Server Script Path Is a Directory\n\nIf you see `Server Script Path '...' is a directory on the remote server`, the configured path overlaps with your sync directory and a folder named `scanfs` already exists there.\n\nFix:\n1. Change **Server Script Path** to a location outside your sync tree (`~` or `~/.local`)\n2. Remove the conflicting directory from the remote server: `rm -rf /your/sync/path/scanfs`\n3. Restart the container\n\n## Report an Issue\n\nPlease report issues on the [issues page](https://github.com/nitrobass24/seedsync/issues).\nInclude container logs: `docker logs seedsync`\n\n## License\n\nSeedSync is distributed under Apache License Version 2.0.\nSee [LICENSE.txt](LICENSE.txt) for more information.\n\n---\n\n![SeedSync Screenshot](https://user-images.githubusercontent.com/12875506/37031587-3a5df834-20f4-11e8-98a0-e42ee764f2ea.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitrobass24%2Fseedsync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitrobass24%2Fseedsync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitrobass24%2Fseedsync/lists"}