Skip to main content

Migration Nextcloud vers Seafile

Voici une méthode pour migrer des données provenant de Nextcloud vers un service Seafile tout en gardant les utilisateurs existants.


Migrer les utilisateurs

Exporter les utilisateurs

Sur le serveur Nextcloud.

Si Nextcloud est dans un conteneur Docker : docker exec -it -u 33 nextcloud bash

sudo -u www-data php occ user:list --output=json_pretty > users.json

 Ce fichier contiendra la liste de tous les comptes avec leur email, groupe, etc.

Importer les utilisateurs

Maintenant se rendre dans Seafile et télécharger le fichier template d'import d'utilisateur.

Convertir le JSON en CSV tout en respectant les colonnes imposées par le fichier template d'import. 


Migrer les données

Prérequis avoir rclone d'installé sur le serveur.

Montages WebDAV et import automatisé des fichiers

Ce montage permet de faire une migration "propre" via API HTTP sans casser les métadonnées Seafile.

-> Nextcloud expose un WebDAV (https://cloud.miraceti.net/remote.php/dav/files/<user>/)

-> Seafile expose aussi une API REST / WebDAV.

Il faut faire un rclone sync entre les deux, mais via leurs API, pas via le filesystem.

Configurer rclone

Mise en place des config rclone.

L'URL de Nextcloud peut être trouvé en se connectant à Nextcloud puis Paramêtre de fichiers->WebDAV.

Attention pour l'URL de seafile, il faudra renseigner le nom d'une bibliothèque pour que la connexion fonctionne.

# Crée la config pour Nextcloud
rclone config create nextcloud webdav \
    url "https://cloud.miraceti.net/remote.php/dav/files/<username>/" \
    vendor nextcloud \
    user "<username>" \
    pass "<mot_de_passe>"

# Crée la config pour Seafile
rclone config create seafile webdav \
    url "https://drive.miraceti.net/seafdav/<library>" \
    vendor other \
    user "<username>" \
    pass "<mot_de_passe>"

Pour tester la configuration seafile qui est la plus importante on peut utiliser la commande suivante : 

> rclone lsd seafile:
-1 2025-10-09 15:52:00        -1 Documents
-1 2025-10-09 16:30:46        -1 Photos
...

La commande doit afficher les dossiers de la bibliothèque de l'utilisateur configuré. 

Si la configuration est erroné, il toujours possible de la modifier : ~/.config/rclone/rclone.conf ou d'utiliser la commande rclone config :

[nextcloud]
type = webdav
url = https://cloud.miraceti.net/remote.php/dav/files/john
vendor = nextcloud
user = john
pass = ***************

[seafile]
type = webdav
url = https://drive.miraceti.net/seafdav/Documents
vendor = other
user = john
pass = *********************
Migrer les fichiers

Pour migrer les fichiers suffit d’exécuter la commande suivante :

rclone sync nextcloud: seafile: --progress --create-empty-src-dirs