Seafile ou Nextcloud : quel choix pour synchroniser ?
Comparez Seafile 13 et Nextcloud 34 : vitesse de sync, RAM, sauvegardes et chiffrement, avec la différence clé entre blocs et fichiers lisibles sur disque.
Seafile ou Nextcloud : réponse courte
La comparaison entre Seafile et Nextcloud repose sur une différence : ce qu’est un fichier une fois arrivé sur le serveur. Seafile découpe chaque fichier en blocs et les stocke dans un object store que seul Seafile peut lire. La synchronisation est donc rapide, mais les sauvegardes deviennent une opération en deux parties. Nextcloud écrit votre fichier sur le disque en tant que fichier et considère la synchronisation comme une fonctionnalité d’une plateforme qui gère aussi les calendriers, les contacts, les documents et les liens de partage. Prenez cette différence comme point de décision, car tout le reste en découle.
En août 2026, Seafile est en version 13.0 et Nextcloud en version 34. Les deux solutions sont matures, et aucune ne va modifier prochainement son modèle de stockage.
Comment Seafile stocke vos fichiers
Seafile modélise une library comme git modélise un repository. Le manuel d’administration présente le modèle interne sous la forme Repo, Commit, FS et Block, et précise qu’un repo est aussi appelé une library. Chaque fichier est découpé en blocks de longueur variable par découpage défini par le contenu (CDC, un algorithme qui détermine les limites des blocks à partir des données elles-mêmes). Le manuel indique une taille moyenne d’environ 8 MB par block. Les blocks sont nommés d’après leur contenu. Ainsi, deux versions d’un même fichier volumineux partagent tous les blocks qui n’ont pas changé. Deux libraries partagent également les blocks identiques.
La base de données relationnelle ne contient qu’une petite quantité de métadonnées sur les libraries. Tout le reste, c’est-à-dire les commits, les objets de répertoire et les blocks, se trouve sous le data directory. Dans la structure Docker utilisée par les séries 12 et 13, il s’agit de /opt/seafile-data/seafile/seafile-data. Si vous exécutez ls à cet endroit, le résultat n’est pas utile : vous voyez des répertoires remplis de noms de hash, et non Invoices/2026/march.pdf.
La synchronisation suit le même modèle. Le client demande au serveur ce qui a changé, reçoit une liste de hash de blocks, puis récupère uniquement les blocks qu’il ne possède pas déjà. C’est pourquoi Seafile reste efficace avec une library volumineuse : le nombre d’octets transférés est proportionnel aux blocks modifiés, et non à la taille du fichier qui les contient.
Stockage des fichiers par Nextcloud
Nextcloud stocke le fichier sur le disque à l’emplacement attendu. Le chemin data/<username>/files/ correspond à ce que l’utilisateur voit dans l’interface web. Une table de base de données, oc_filecache, reproduit cette même arborescence avec les tailles, les dates de modification et les etag, et Nextcloud fait confiance à cette table plutôt qu’au disque.
Le client desktop utilise WebDAV (web distributed authoring and versioning) sur HTTPS. Chaque fichier nécessite au moins une requête, ce qui a conduit Nextcloud à ajouter une API d’upload groupé : le manuel développeur explique que l’upload de nombreux petits fichiers est plus lent qu’il ne devrait l’être, car la bande passante réseau n’est pas pleinement utilisée. Les petits fichiers sont donc regroupés. Les fichiers volumineux passent à la place par l’API de chunking, et la taille de chunk par défaut du client desktop est de 5 MiB (OWNCLOUD_CHUNK_SIZE correspond par défaut à 5242880 octets).
L’avantage du stockage des fichiers sur le disque est que tous les outils dont vous disposez déjà peuvent lire vos données. En contrepartie, Nextcloud ne détecte pas les modifications effectuées en dehors de lui. Copiez directement les fichiers dans le répertoire de données : ils restent invisibles dans l’interface web jusqu’à l’exécution d’un scan :
sudo -E -u www-data php occ files:scan --all -vvLe manuel d’administration indique précisément les cas qui nécessitent un rescan : après la copie directe de fichiers dans le répertoire de données, après une migration et lors de l’analyse d’incohérences du cache de fichiers.
Lequel synchronise une bibliothèque volumineuse le plus rapidement ?
Seafile, dans les deux cas les plus pénalisants : des dizaines de milliers de petits fichiers et des modifications répétées de fichiers volumineux. Le mécanisme utilisé est la déduplication au niveau des blocs. Ainsi, si le milieu d’une image disque de 4 GB a été modifié, seuls quelques blocs sont envoyés. Nextcloud réduit l’écart sur les petits fichiers avec l’envoi groupé, mais ne peut pas combler l’écart sur les fichiers volumineux, car son unité de transfert est le fichier entier.
Ne vous fiez ni à mon estimation de l’écart ni à un benchmark fourni par un éditeur. Créez une bibliothèque représentative de la vôtre et mesurez le temps nécessaire :
mkdir -p ~/synctest && cd ~/synctest
for i in $(seq 1 20000); do head -c 4096 /dev/urandom > "file_$i.bin"; done
du -sh ~/synctestCopiez ce répertoire dans un dossier synchronisé sur chaque serveur et surveillez la fin de la synchronisation du client. La fiabilité compte autant que la vitesse. Un client Seafile envoie d’abord les blocs et écrit en dernier le commit qui les référence. Ainsi, une interruption de l’envoi laisse la bibliothèque sur son commit précédent, au lieu de laisser une arborescence partiellement écrite.
Ce dont chaque solution a besoin sur un petit VPS
La documentation de Seafile demande « au moins 2G de RAM et un CPU à 2 cœurs (> 2GHz) ». Nextcloud documente plutôt la mémoire par processus PHP : 128 MB au minimum et 512 MB par processus selon la recommandation. Vous devez multiplier cette valeur par le nombre de workers avant d’ajouter la base de données, le cache et la génération des aperçus. Voici les points de départ que j’utiliserais pour une petite équipe. Ce sont des points de départ, pas des mesures.
The data behind this chart
[
{
"label": "Seafile CE 13",
"start_ram_gb": 4,
"start_cpu_cores": 2,
"sql_databases": 3
},
{
"label": "Nextcloud 34",
"start_ram_gb": 4,
"start_cpu_cores": 2,
"sql_databases": 1
},
{
"label": "Syncthing 2",
"start_ram_gb": 1,
"start_cpu_cores": 1,
"sql_databases": 0
}
]Les deux solutions appartiennent à la même catégorie, avec 4 GB de RAM et 2 cœurs. La consommation de ressources ne permet donc pas de les départager. Syncthing fonctionne avec 1 GB sur 1 cœur. C’est la raison objective de l’envisager. Les différences portent davantage sur les composants que sur la mémoire. Seafile utilise 3 bases de données SQL, tandis que Nextcloud en utilise 1. Le déploiement Docker par défaut de Seafile démarre le serveur, MariaDB, Memcached, SeaDoc et Caddy à partir des fichiers que vous téléchargez d’abord :
mkdir /opt/seafile
cd /opt/seafile
wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env
wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/13.0/repo/docker/caddy.yml
nano .envDans .env, définissez SEAFILE_SERVER_HOSTNAME, les mots de passe root MySQL et des bases de données, le compte administrateur initial et JWT_PRIVATE_KEY. Le manuel exige une chaîne aléatoire d’au moins 32 caractères pour cette clé. Elle est lue lors du premier démarrage. Générez-la donc avant de démarrer la stack :
openssl rand -base64 40
docker compose up -dLe premier démarrage crée les trois bases de données et l’utilisateur administrateur. Les choix équivalents pour Nextcloud, notamment TLS et le reverse proxy, sont expliqués dans le guide Nextcloud sur un VPS avec Docker, TLS et sauvegardes.
En quoi les sauvegardes diffèrent-elles ?
C’est l’aspect que l’on sous-estime le plus, et c’est là que les deux produits diffèrent le plus.
Avec Seafile, l’ordre n’est pas facultatif. Le manuel recommande de sauvegarder d’abord la base SQL, puis le répertoire de données. Ainsi, chaque enregistrement de la base possède un objet valide vers lequel pointer et les bibliothèques ne sont pas corrompues. Si vous inversez l’ordre, une ligne de la base peut pointer vers un bloc que votre snapshot n’a jamais capturé.
docker exec -i seafile-mysql mariadb-dump -uroot -p"$MYSQL_ROOT_PASSWORD" --opt ccnet_db > ccnet_db.sql
docker exec -i seafile-mysql mariadb-dump -uroot -p"$MYSQL_ROOT_PASSWORD" --opt seafile_db > seafile_db.sql
docker exec -i seafile-mysql mariadb-dump -uroot -p"$MYSQL_ROOT_PASSWORD" --opt seahub_db > seahub_db.sql
rsync -az /opt/seafile-data/seafile /backup/data/Deux détails sont importants dans ces lignes. Utilisez mariadb-dump, car la série de commandes mysql est obsolète dans l’image MariaDB fournie avec Seafile. Supprimez l’option -t de docker exec lorsque vous redirigez la sortie vers un fichier, car un TTY réécrit les fins de ligne et endommage le dump.
Les deux parties sont capturées séparément et peuvent donc diverger. Après chaque restauration, vérifiez le store avant de lui faire confiance :
docker exec -it seafile bash
cd /opt/seafile/seafile-server-latest
./seaf-fsck.shLorsqu’un élément manque, l’outil indique son nom :
Block 650fb22495b0b199cff0f1e1ebf036e548fcb95a is missing.
Repo ca1a860d HEAD commit is corrupted, need to restore to an old version.Prévoyez également le garbage collection. La déduplication conserve les blocs des fichiers et des bibliothèques supprimés jusqu’à l’exécution de ./seaf-gc.sh depuis ce même répertoire. L’exécution indique ce qu’elle a trouvé, par exemple GC finished. 507 blocks total, about 507 reachable blocks, 0 blocks can be removed.. Si vous l’ignorez pendant un an, vos sauvegardes continuent de consommer de l’espace pour des données que vos utilisateurs ont supprimées.
Nextcloud présente le même problème en deux parties, mais sous une autre forme, car le répertoire de données et la base de données doivent décrire la même arborescence :
sudo -E -u www-data php occ maintenance:mode --on
rsync -Aavx /srv/nextcloud/ /backup/nextcloud-dirbkp/
mariadb-dump --single-transaction --default-character-set=utf8mb4 -u nextcloud -p"$DB_PASS" nextcloud > /backup/nextcloud-sqlbkp.bak
sudo -E -u www-data php occ maintenance:mode --offConservez le répertoire de configuration, le répertoire de données, les éventuelles applications personnalisées et votre thème, ainsi que ce dump. Restaurez les deux parties correspondant au même instant. Si le répertoire de données est plus récent que la base de données, les utilisateurs voient des fichiers que le cache de fichiers ne connaît pas, et occ files:scan --all les répare. Si la base de données est plus récente, les lignes du cache pointent vers des fichiers qui n’existent plus, et occ files:cleanup supprime les entrées du cache qui ne correspondent à aucune entrée de la table de stockage.
Dans les deux cas, utilisez un programme de sauvegarde capable de gérer un grand nombre de petits fichiers et de conserver un historique. C’est ce que restic et BorgBackup font différemment.
Clients sur ordinateur et mobile
Seafile propose deux programmes pour ordinateur. Le client de synchronisation conserve une copie locale des bibliothèques que vous sélectionnez. Le client Drive (SeaDrive) monte vos bibliothèques comme un lecteur virtuel et télécharge les fichiers à la demande : sous Windows, il utilise l’API Microsoft cloud files ; sous macOS, la version 3.0 est une extension du Finder ; sous Linux, il est fourni sous forme d’AppImage depuis la version 3.0.12 et monte les bibliothèques dans ~/SeaDrive. Les bibliothèques chiffrées fonctionnent sur les trois plateformes de bureau. Les applications mobiles servent à accéder aux fichiers, et c’est tout ce qu’elles proposent.
Le client de bureau de Nextcloud propose également des fichiers virtuels. Ses applications mobiles prennent en charge le reste de la plateforme : calendrier, contacts, Talk et notes sont donc disponibles en plus de l’accès aux fichiers. Si vos utilisateurs travaillent principalement depuis leur téléphone et veulent davantage que des fichiers, la différence est réelle au quotidien.
Un point propre à Seafile doit être prévu : la bibliothèque est l’unité de partage, de synchronisation, de gestion des permissions et de chiffrement. Définissez l’organisation de vos bibliothèques avant d’y charger 500 GB dans une seule bibliothèque, car déplacer des fichiers d’une bibliothèque à une autre consiste à les copier puis à les supprimer, et non à les renommer. Leur historique ne les suit donc pas.
Chiffrement : ce que chacun protège réellement
Les bibliothèques chiffrées de Seafile utilisent un chiffrement côté client. Le mot de passe n’est jamais stocké sur le serveur. Un token magique dérivé du mot de passe et de l’identifiant de la bibliothèque est stocké avec celle-ci. Le client peut ainsi vérifier le mot de passe avant de lancer la synchronisation. La clé de fichier est chiffrée avec une clé et un IV (vecteur d’initialisation) dérivés de votre mot de passe avec AES 256/CBC. Les données du fichier sont chiffrées avec cette clé de fichier.
Lisez les limites documentées, car elles sont souvent oubliées. Une bibliothèque chiffrée chiffre uniquement le contenu des fichiers. Les noms des dossiers et des fichiers ne sont pas chiffrés. Leur taille et l’historique des modifications ne le sont pas non plus. La consultation d’une bibliothèque chiffrée dans un navigateur web n’est pas de bout en bout : vous saisissez le mot de passe, le serveur l’utilise pour déchiffrer la clé de fichier, puis il conserve le mot de passe en cache pendant une heure. Le manuel précise également qu’une bibliothèque chiffrée ne garantit pas l’intégrité. Un administrateur du serveur peut modifier une partie du contenu d’un fichier sans que le client puisse le détecter.
Nextcloud propose deux fonctionnalités aux noms très proches, ce qui peut prêter à confusion. Le chiffrement côté serveur chiffre les fichiers au repos, mais conserve les clés sur le même serveur. Il protège donc bien mieux les données stockées sur un stockage externe qu’il ne vous protège d’une personne disposant de l’accès root à la machine. L’application de chiffrement de bout en bout chiffre certains dossiers sur le client. Par conception, le serveur ne peut pas les lire. L’interface web, la recherche côté serveur et les aperçus ne peuvent donc pas non plus consulter le contenu de ces dossiers.
Le chiffrement d’aucun de ces deux produits ne remplace une sauvegarde chiffrée. Chiffrez la sauvegarde séparément.
Calendriers, contacts, bureautique et plateforme d’applications
Cet axe ne se compare pas vraiment. Nextcloud fournit CalDAV (calendrier via WebDAV) et CardDAV (contacts via WebDAV) dans son cœur, s’intègre à Collabora ou OnlyOffice pour les documents et propose un app store pour tout le reste. Seafile 13 fournit SeaDoc pour les documents collaboratifs et les pages wiki, puis s’arrête là. Il n’y a ni calendrier ni carnet d’adresses.
La plateforme a un coût, et ce coût concerne les mises à niveau. Chaque application installée peut bloquer une mise à niveau de Nextcloud ou mal fonctionner après celle-ci. Plus vos utilisateurs dépendent de ces applications, plus vous devez planifier soigneusement la fenêtre de mise à niveau. Seafile offre moins de possibilités de panne parce qu’il fait moins de choses. Notez également que Seafile Professional, et non la Community Edition, ajoute la recherche plein texte dans les documents et les permissions au niveau des dossiers sous licence payante. Vérifiez donc que la fonctionnalité sur laquelle vous comptez est bien disponible dans l’édition que vous prévoyez d’exécuter.
Le mode de défaillance propre à chacun
Seafile échoue lorsque la base de données et l’object store ne sont plus synchronisés. Une bibliothèque ne s’ouvre plus ou des fichiers disparaissent, et seaf-fsck.sh affiche le bloc manquant. Il n’existe pas d’arborescence de fichiers à réparer manuellement. La récupération repose donc sur votre dump de base de données et votre object store, restaurés dans le bon ordre. Testez cette restauration une fois sur un VPS de secours. Une sauvegarde que vous n’avez jamais restaurée reste une hypothèse.
Nextcloud échoue lorsque son cache de fichiers et le disque ne correspondent plus, généralement parce qu’un processus a écrit dans le data directory sans en informer Nextcloud. Un fichier présent sur le disque n’apparaît pas dans l’interface web, ou la taille d’un dossier est incorrecte. occ files:scan permet de corriger ce problème. Les deux autres points sensibles sont le débit du protocole avec de nombreux petits fichiers, qu’aucune quantité de CPU ne peut compenser, et la mémoire PHP. La génération d’aperçus pour les images et vidéos volumineuses provoque généralement le pic de consommation. Prévoyez donc 512 MB par processus et générez les aperçus dans une tâche planifiée plutôt que pendant les requêtes.
Ni l’un ni l’autre : Syncthing, si vous voulez seulement synchroniser des fichiers
Si votre besoin réel se limite à répliquer un dossier entre plusieurs machines, ces deux produits offrent plus de fonctionnalités que nécessaire. Syncthing n’utilise ni serveur ni comptes. Chaque appareil est un pair, et un VPS devient le pair qui reste disponible lorsque votre ordinateur portable est en veille. Syncthing 2 est la branche actuelle, et les paquets proviennent du dépôt officiel du projet :
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthingExécutez-le avec un utilisateur normal, jamais avec root, afin que les fichiers qu’il écrit aient des permissions et un propriétaire cohérents :
sudo systemctl enable --now syncthing@youruser
systemctl status syncthing@youruserL’interface web écoute par défaut sur 127.0.0.1:8384. Elle n’est donc pas accessible depuis Internet, ce qui est le comportement recommandé. Accédez-y depuis votre ordinateur portable avec un tunnel SSH :
ssh -L 8384:127.0.0.1:8384 youruser@your-serverOuvrez ensuite http://127.0.0.1:8384 sur l’ordinateur portable. La synchronisation utilise le port 22000 en TCP et QUIC. La découverte locale utilise UDP 21027, qui ne fonctionne pas sur Internet. Sur un VPS, ouvrez 22000 et laissez l’interface fermée :
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udpVous renoncez alors à toutes les fonctionnalités serveur : pas de liens de partage pour les personnes qui n’utilisent pas Syncthing, pas d’explorateur de fichiers web, pas de comptes utilisateur et pas de corbeille côté serveur, sauf si vous activez le versioning des fichiers pour chaque dossier. La surprise classique est le fichier en conflit. Si vous modifiez un même fichier sur deux appareils qui ne peuvent pas communiquer, Syncthing crée un fichier voisin dont le nom ressemble à notes.sync-conflict-20260806-142233-ABCD1EF.md. Aucun avertissement ne s’affiche. Recherchez donc régulièrement sync-conflict.
Si vous ne voulez pas synchroniser un dossier, mais fournir un bucket dans lequel des applications écrivent, il vous faut encore un autre outil : consultez le stockage d’objets compatible S3 auto-hébergé. Pour une vue d’ensemble, le comparatif des alternatives auto-hébergées à Dropbox présente les solutions qui ne figurent pas dans cette comparaison.
La règle de décision
- Choisissez Seafile si le besoin est la synchronisation à grande échelle : nombreux fichiers, fichiers volumineux, plusieurs appareils, et si vous acceptez un data store que seul Seafile peut lire.
- Choisissez Nextcloud si le besoin est une plateforme : calendriers, contacts, documents et liens de partage, avec des fichiers classiques sur disque que n’importe quel outil de sauvegarde peut lire.
- Choisissez Syncthing si le besoin se limite à un dossier miroir.
Choisissez dès maintenant avec soin, car la migration entre Seafile et Nextcloud constitue le véritable verrouillage. Il n’existe aucun convertisseur. Vous synchronisez tout vers un client, vous téléversez les données vers l’autre serveur, puis vous payez le coût en bande passante et en temps, tandis que l’historique des versions et les liens de partage restent sur l’ancien serveur. Dimensionner le choix actuel pour les trois prochaines années coûte moins cher qu’une migration pendant la deuxième année.
FAQ
Seafile est-il plus rapide que Nextcloud pour synchroniser de grandes bibliothèques ?
Oui dans les deux cas qui posent généralement problème, et pour une raison que vous pouvez vérifier. Seafile découpe les fichiers en blocs de 8 MB en moyenne et transfère uniquement les blocs modifiés. Une modification à l’intérieur d’un gros fichier ne transfère donc que quelques blocs. Nextcloud transfère le fichier entier. La même modification entraîne donc un nouvel envoi complet. De nombreux petits fichiers nécessitent aussi au moins une requête WebDAV chacun. C’est pourquoi son API d’upload groupé regroupe les petits fichiers. Mesurez les deux solutions sur votre propre VPS avant de vous décider. Votre CPU, votre disque et votre liaison réseau comptent autant que le protocole.
Puis-je sauvegarder Seafile en exécutant rsync sur le répertoire de données ?
Uniquement avec les bases de données, et dans l’ordre indiqué dans la documentation. Le manuel de Seafile recommande de sauvegarder d’abord la base SQL, puis le répertoire de données. Ainsi, chaque enregistrement de la base fait référence à un objet présent dans la sauvegarde. La commande rsync -az /opt/seafile-data/seafile /backup/data/ copie conf, seafile-data et seahub-data. Elle ne suffit toutefois pas pour restaurer Seafile, car l’object store ne contient pas d’arborescence de fichiers lisible et la base de données en constitue l’index. Après avoir restauré les deux parties, exécutez seaf-fsck.sh et lisez sa sortie avant de considérer le résultat comme fiable.
Ai-je besoin de Nextcloud si je veux uniquement synchroniser des fichiers ?
Non. Nextcloud est une plateforme. Le calendrier, les contacts et l’app store consomment de la mémoire et nécessitent un suivi des mises à niveau, que vous les utilisiez ou non. Pour une simple synchronisation de fichiers, Seafile est le produit le plus léger et son protocole est plus rapide. Syncthing est encore plus léger, car il ne nécessite aucun composant côté serveur. Choisissez Nextcloud si vous avez besoin de ses applications supplémentaires, pas par défaut.
Une bibliothèque Seafile chiffrée masque-t-elle les noms de mes fichiers ?
Non. Une bibliothèque chiffrée chiffre le contenu des fichiers côté client et le mot de passe n’est jamais transmis au serveur. En revanche, les noms des dossiers, les noms des fichiers, leur taille et l’historique des modifications restent visibles sur le serveur. L’ouverture d’une bibliothèque chiffrée dans l’interface web envoie également le mot de passe au serveur. Celui-ci déchiffre la clé du fichier et conserve le mot de passe en mémoire pendant une heure. Si les noms eux-mêmes sont sensibles, n’utilisez pas cette bibliothèque dans l’interface web et chiffrez-la à un autre niveau.
Quelle quantité de RAM dois-je attribuer à Seafile ou Nextcloud sur un VPS ?
Commencez avec 4 GB de RAM et 2 cœurs pour l’un ou l’autre avec quelques utilisateurs, puis surveillez la mémoire pendant la génération des aperçus et les recherches. La documentation de Seafile fixe le minimum à 2 GB de RAM et à un CPU de 2 cœurs cadencé à plus de 2 GHz. La documentation de Nextcloud recommande 512 MB par processus PHP. Multipliez cette valeur par le nombre de workers avant d’ajouter les besoins de la base de données et du cache. Syncthing fonctionne confortablement avec 1 GB.