Si tu utilises une seedbox pour tes téléchargements torrents, tu sais à quel point ça peut être pénible de devoir transférer les fichiers manuellement vers ton NAS. C’est exactement pour ça que j’ai créé SeedboxSync : un outil simple et léger qui automatise cette étape.
SeedboxSync se connecte à ta seedbox via SFTP, et copie automatiquement les fichiers sur ton NAS. Fini les transferts manuels ou les scripts maison bricolés.
L’avantage de SeedboxSync, c’est qu’il ne télécharge un fichier qu’une seule fois. Même si tu as un script qui le renomme ou le déplace ensuite (un soft de type *arr), il ne sera pas téléchargé à nouveau. Tout ça grâce à une base de données SQLite intégrée qui garde en mémoire les fichiers déjà récupérés.
Installation avec Docker
Depuis la version 3.1, SeedboxSync intègre un support complet de Docker. Docker est désormais la méthode d’installation recommandée.
Le conteneur utilise s6-overlay pour une gestion propre des services, des logs, et des tâches planifiées.
Pas besoin de cron externe : la synchronisation est directement intégrée dans le conteneur :
- La tâche de synchronisation « blackhole » s’exécute toutes les minutes
- La tâche de synchronisation depuis la seedbox s’exécute toutes les 15 minutes
De plus, le container permet de choisir l’utilisateur et le groupe (PUID
& PGID
) qui va faire tourner le service.
services:
seedboxsync:
container_name: seedboxsync
hostname: seedboxsync
image: ghcr.io/llaumgui/seedboxsync:latest
restart: unless-stopped
environment:
TZ: 'Europe/Paris'
PUID: 1000
PGID: 100
volumes:
- /data/seedboxsync/config:/config
- /data/seedboxsync/watch:/watch
- /data/seedboxsync/downloads:/downloads
Lors du premier démarrage, un fichier config.yaml
est automatiquement généré dans le dossier /config
. Il contient une configuration par défaut que tu peux adapter à ta seedbox. Pas besoin de créer quoi que ce soit à la main : il suffit de modifier les valeurs selon ton environnement.
### SeedboxSync Configuration Settings
---
#
# Information about your seedbox
#
seedbox:
### Information about your seedbox connection
# host: my-seedbox.ltd
# port: 22
# login: me
# password: p4sw0rd
# timeout: false
### For the moment, only sftp
# protocol: sftp
### Chmod torrent after upload (false : disable)
### Use octal notation like https://docs.python.org/3.4/library/os.html#os.chmod
# chmod: 0o777
# chmod: false
### Use a tempory directory (you must create it !)
# tmp_path: ./tmp
### Your "watch" folder you must create it!)
# watch_path: ./watch
### Your finished folder you must create it!)
# finished_path: ./files
### Exclude part files
# part_suffix: .part
### Exclude pattern from sync
### Use re syntaxe: https://docs.python.org/3/library/re.html
### Example: .*missing$|^\..*\.swap$
# exclude_syncing:
#
# Information about local environment (NAS ?)
#
local:
### Your local "watch" folder
watch_path: /watch
### Path where download files
download_path: /downloads/
### Use local sqlite database for store downloaded files
db_file: /config/seedboxsync.db
#
# PID and lock management to prevent several launches
#
pid:
### PID for blackhole sync
blackhole_path: /config/lock/blackhole.pid
### PID for seedbox downloaded sync
download_path: /config/lock/download.pid
#
# Healthchecks ping service
#
healthchecks:
### sync seedbox part
sync_seedbox:
## Enable or disable service
enabled: false
## Ping URL
# ping_url:
### sync blackhole part
sync_blackhole:
## Enable or disable service
enabled: false
## Ping URL
# ping_url:
#
# SeedboxSync tuning
#
seedboxsync:
### Toggle application level debug (does not toggle framework debugging)
# debug: false
### Where external (third-party) plugins are loaded from
# plugin_dir: /var/lib/seedboxsync/plugins/
### Where all plugin configurations are loaded from
# plugin_config_dir: /etc/seedboxsync/plugins.d/
### The log handler label
# log_handler: colorlog
log.colorlog:
### Where the log file lives (no log file by default)
# file: null
### The level for which to log. One of: info, warning, error, fatal, debug
# level: info
### Whether or not to log to console
# to_console: true
### Whether or not to rotate the log file when it reaches `max_bytes`
# rotate: false
### Max size in bytes that a log file can grow until it is rotated.
# max_bytes: 512000
### The maximum number of log files to maintain when rotating
# max_files: 4
Utiliser SeedboxSync en ligne de commande
Si tu souhaites utiliser SeeeboxSync en ligne de commande, tu peux te faire un alias ou utiliser un script :
#!/bin/bash
CONTAINER_NAME="seedboxsync"
UUID=1000
COMMAND="$@"
docker exec -it -u ${UUID} ${CONTAINER_NAME} seedboxsync ${COMMAND}
Une fois ce script en place, tu peux utiliser la commande seedboxsync
pour plein de choses :
- Lister les 20 derniers fichiers téléchargés depuis la seedbox
$ seedboxsync search downloaded -n 20
| Id | Path | Finished | Size |
|------+-----------------------------+----------------------------+----------|
| 592 | JustoEtiamPretium.xls | 2020-05-25 18:38:40.566157 | 197.9KiB |
| 593 | Justo.mp3 | 2020-05-25 18:38:40.621168 | 195.8KiB |
| 594 | Eget.txt | 2020-05-25 18:38:40.676978 | 103.7KiB |
| 595 | Porttitor.tiff | 2020-05-25 18:38:40.735913 | 165.7KiB |
| 596 | Curae.xls | 2020-05-25 18:38:40.816887 | 118.7KiB |
| 597 | SemSedSagittis.gif | 2020-05-25 18:38:40.895089 | 308.1KiB |
| 598 | Pellentesque.ppt | 2020-05-25 18:38:40.961770 | 127.8KiB |
| 599 | CommodoVulputateJusto.tiff | 2020-05-25 18:38:41.024448 | 130.0KiB |
| 600 | MorbiVestibulumVelit.txt | 2020-05-25 18:38:41.079963 | 63.4KiB |
| 601 | HabitassePlateaDictumst.png | 2020-05-25 18:38:41.129177 | 91.5KiB |
| 602 | LiberoNullam.tiff | 2020-05-25 18:38:41.190858 | 385.8KiB |
| 603 | CondimentumNeque.ppt | 2020-05-25 18:38:41.259061 | 181.2KiB |
| 604 | AOdio.avi | 2020-05-25 18:38:41.320748 | 112.3KiB |
| 605 | CubiliaCurae.ppt | 2020-05-25 18:38:41.369097 | 126.9KiB |
| 607 | SedNislNunc.xls | 2020-05-25 18:38:41.487873 | 184.2KiB |
| 608 | DonecDiamNeque.xls | 2020-05-25 18:38:41.537864 | 167.6KiB |
| 609 | Nulla.xls | 2020-05-25 18:38:41.599253 | 129.8KiB |
| 610 | LacusMorbiSem.ppt | 2020-05-25 18:38:41.662167 | 142.9KiB |
| 611 | Nulla.avi | 2020-05-25 18:38:41.719521 | 57.9KiB |
| 612 | CuraeDonec.avi | 2020-05-25 18:38:41.780194 | 116.1KiB |
- Lister les 10 derniers torrents envoyés à la seedbox:
$ seedboxsync search uploaded
| Id | Name | Sent datetime |
|------+--------------------------+----------------------------|
| 241 | Imperdiet.torrent | 2017-10-16 16:09:02.713701 |
| 242 | ConsequatIn.torrent | 2017-10-16 18:46:02.192430 |
| 243 | Porttitor.torrent | 2017-10-16 21:10:03.878288 |
| 244 | AcLobortisVel.torrent | 2017-10-16 21:10:04.545168 |
| 245 | MolestieNibh.torrent | 2017-10-16 21:12:03.441145 |
| 246 | TurpisDonec.torrent | 2017-10-16 21:12:04.064668 |
| 247 | SuscipitLigulaIn.torrent | 2017-10-16 21:13:02.851925 |
| 248 | Volutpat.torrent | 2017-10-16 21:14:02.620927 |
| 249 | UtOdioCras.torrent | 2017-10-16 21:17:02.942154 |
| 250 | DolorMorbi.torrent | 2017-10-16 21:20:03.583827 |
- Lister les téléchargements en cours :
$ seedboxsync search progress
| Id | Path | Started | Size | Progress | ETA |
|------+----------------------+----------------------------+----------+------------+-------|
| 588 | Ante.doc | 2020-05-25 18:38:40.084515 | 10.5MiB | 0% | - |
| 606 | EgetSemperRutrum.avi | 2020-05-25 18:38:41.407392 | 461.6KiB | 0% | - |
- Nettoyer la liste des téléchargements en cours :
$ seedboxsync clean progress
In progress list cleaned. 2 line(s) deleted
- Effacer un fichier de la liste des téléchargements pour pouvoir relance le rapatriement de ce dernier :
$ seedboxsync clean downloaded 612
Torrent with id 612 was removed
Et la version 3.2 qui arrive bientôt (à vrai dire, c’est déjà la branche main) offrira des outils de stats :
$ seedboxsync stats by-month
| Month | Nb files | Total size |
|---------+----------+--------------|
| 2017-08 | 567 | 427.8GiB |
...
| 2025-04 | 226 | 441.6GiB |
| 2025-05 | 380 | 396.1GiB |
$ seedboxsync stats by-year
| Year | Nb files | Total size |
|------+----------+------------|
| 2017 | 1453 | 964.6GiB |
| 2018 | 4989 | 1.4TiB |
| 2019 | 2135 | 2.3TiB |
| 2020 | 3159 | 1.7TiB |
| 2021 | 3023 | 2.7TiB |
| 2022 | 2938 | 2.8TiB |
| 2023 | 2965 | 2.5TiB |
| 2024 | 4529 | 4.0TiB |
| 2025 | 2306 | 1.8TiB |
Alors oui, il existe d’autres outils comme Syncthing, mais je trouve que le mien est plus simple et offre une bonne alternative, surtout si tu veux juste synchroniser proprement une seedbox avec un NAS.
Et si tu regardes mes stats : je l’utilise depuis 2017 sans souci. Le plus gros frein à son adoption, c’était clairement l’installation… Mais depuis la version 3.1 et grâce à Docker, c’est devenu ultra simple à mettre en place !
Pour la suite ça se passe sur le site officiel ou sur la page Gitub.
Laisser un commentaire