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.

Mise en place des config rclone :

# 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/<username>/" \
    vendor other \
    user "<username>" \
    pass "<mot_de_passe>"

# Puis synchronisation
rclone sync nextcloud: seafile: --progress --create-empty-src-dirs

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 :

[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 = *********************