# 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`

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-sudo--u-www-data-php"><div class="overflow-y-auto p-4" dir="ltr">`sudo -u www-data php occ user:list --output=json_pretty > users.json`</div></div> 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.

-&gt; Nextcloud expose un WebDAV (https://cloud.miraceti.net/remote.php/dav/files/&lt;user&gt;/)

-&gt; 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`.

<p class="callout warning">Attention pour l'URL de seafile, il faudra renseigner le **nom d'une bibliothèque** pour que la connexion fonctionne.</p>

```bash
# 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 :

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

<p class="callout success">La commande doit afficher les dossiers de la bibliothèque de l'utilisateur configuré. </p>

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

```bash
[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 :

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