SeedboxSync: Synchronise automatiquement ta seedbox avec ton NAS

SeedBoxSync

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.

Commentaires

Il n'y a pas encore de commentaire, soyez le premier.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

Réseaux sociaux