Nextcloud et Syncthing

Pendant longtemps j’ai essayé de faire fonctionner Cozy Cloud en auto-hébergé sur mon Raspberry, sans succès (aucun connecteur, le point fort de Cozy Cloud, ne fonctionne en auto-hébergé).
Depuis j’ai changé mon fusil d’épaule et je suis parti chez Nextcloud, toujours auto-hébergé sur mon Raspberry.

Problème de Nextcloud, l’interface web est vraiment bien faite mais la partie synchronisation via webdav est moisie. Ca marche bien pour synchroniser 10 photos mais quand on arrive à plusieurs Go, il faut des jours à Nextcloud pour arriver à tout synchroniser et le client Android est pas top pour la synchronisation.
Un collègue de boulot m’avait conseillé il y a longtemps un logiciel de synchronisation, Syncthing, disponible sous Windows, Mac, Linux et Android. Et après de bonnes galères, j’ai réussi à intégrer Syncthing à Nextcloud.

1) Architecture

Mon but est d’avoir un cloud auto-hébergé afin d’avoir accès à mes documents (fichiers sensibles styles clé ssh, feuilles de paie, factures, etc) où que je sois, que ces fichiers soient chiffrés et que je puisse récupérer automatiquement via une synchronisation certains dossiers de mon téléphone (photo/vidéo principalement) et qui seront eux aussi chiffrés une fois récupérés par mon cloud.

Voici comment tout ça va s’agencer.
Sur mon raspberry :

  • On va installer Nextcloud qui ne fera aucune synchronisation (voir début d’article) et me servira juste d’interface pour accéder à mes fichiers.
  • On installera également Syncthing pour gérer les synchronisations avec mon téléphone et qui téléversera directement les fichiers synchronisés dans le répertoire data de Nextcloud.
  • A l’aide d’un script, les fichiers ajoutés via Syncthing seront scannés par Nextcloud puis chiffrés. Sans ce script, ces fichiers ne seraient jamais chiffrés car Nextcloud n’est pas vraiment conçu pour gérer correctement les fichiers rajoutés autrement que par son interface web ou un client Nextcloud.

Sur mon téléphone :

  • Il faut juste installer l’application Syncthing trouvable sur F-Droid ou le Play Store.

2) Configuration du Raspberry

2.1) Installation de Nextcloud

Nextcloud nécessite un serveur web, un serveur de base de donnée et PHP. J’ai utilisé Apache2 et MariaDB pour le serveur web et base de donnée (je ne vais pas expliquer la configuration globale de Apache et MariaDB mais juste la partie spécifique à Nextcloud et Syncthing). Vous pouvez installer tout ce qu’il faut avec la commande :

sudo aptitude install apache2 mariadb-server libapache2-mod-php7.0 php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring php7.0-intl php-imagick php7.0-xml php7.0-zip

Commençons par télécharger Nextcloud.  Placez-vous dans le répertoire /var/www avec la commande :

cd /var/www

Lancez la commander suivante pour télécharger Nextcloud :

sudo wget https://download.nextcloud.com/server/releases/nextcloud-15.0.2.zip

Puis dézippez l’archive avec la commande suivante :

sudo unzip nextcloud-15.0.2.zip

On peut maintenant supprimer l’archive avec la commande :

sudo rm nextcloud-15.0.2.zip

Il faut que le propriétaire du répertoire Nextcloud soit www-data. Changez le propriétaire avec la commande :

sudo chown -R www-data:www-data nextcloud

Il faut également que www-data soit le propriétaire du répertoire parent www. Si ce n’est pas le cas, lancez la commande :

sudo chown www-data:www-data /var/www

Passons à la base de données.

2.2) Configuration de la base de données

Lancez la commande pour accéder à la console sql :

mysql -uroot -p

Le mot de passe root vous sera demandé. Une fois le mot de passe rentré, vous arriverez dans la console mysql.

On va commencer par créer un utilisateur, qui aura les droits admin sur la base de données de Nextcloud, avec la commande :

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

Remplacez username par le nom que vous voulez et password par le mot de passe de votre choix, assez robuste de préférence.

Ensuite, on va créer la base de données, qui s’appellera nextcloud, avec la commande :

CREATE DATABASE IF NOT EXISTS nextcloud;

Puis on donne les droits admin à l’utilisateur créé précédemment avec la commande :

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON nextcloud.* TO 'username'@'localhost' IDENTIFIED BY 'password';

Là aussi, remplacez username et password par ceux que vous avez utilisé lors de la création de l’utilisateur.

Rechargez les privilèges utilisateurs avec la commande

FLUSH privileges;

Puis quittez la console mysql avec la commande

exit

2.3) Configuration de Nextcloud

Commençons par créer le fichier Apache. Lancez la commande suivante pour créer le fichier :

sudo nano /etc/apache2/sites-available/nextcloud.conf

Copiez les lignes suivantes dans le fichier :

<VirtualHost *:80>

        DocumentRoot /var/www/nextcloud/

        ServerName moncloud.memodugeek.info
		ServerAdmin votreemail

        <Location />
                Redirect / https://moncloud.memodugeek.info/
        </Location>

</VirtualHost>


<VirtualHost *:443>

        DocumentRoot /var/www/nextcloud/

        ServerName moncloud.memodugeek.info
        ServerAdmin votreemail

        LogLevel info
        ErrorLog ${APACHE_LOG_DIR}/nextcloud.error.log

        <IfModule mod_ssl.c>
                SSLEngine on
                SSLCertificateFile /etc/letsencrypt/live/memodugeek.info/fullchain.pem
                SSLCertificateKeyFile /etc/letsencrypt/live/memodugeek.info/privkey.pem

                # HSTS (mod_headers is required) (15768000 seconds = 6 months)
                Header always set Strict-Transport-Security "max-age=15768000"

        </IfModule>


        <Directory /var/www/nextcloud/>
                Options +FollowSymlinks
                AllowOverride All

                <IfModule mod_dav.c>
                        Dav off
                </IfModule>

                SetEnv HOME /var/www/nextcloud
                SetEnv HTTP_HOME /var/www/nextcloud
        </Directory>

</VirtualHost>

# modern configuration, tweak to your needs
SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder     on
SSLCompression          off
SSLSessionTickets       off

# OCSP Stapling, only in httpd 2.3.3 and later
SSLUseStapling          on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache        shmcb:/var/run/ocsp(128000)

La première partie qui va de <VirtualHost *:80> à </VirtualHost> gère l’accès au serveur Nextcloud en http. Tout ce qu’on fait dans ce cas c’est rediriger la connexion vers le https afin de forcer la connexion en https.
Dans ma configuration j’ai fait un sous-domaine qui redirige vers Nextcloud (toutes les lignes avec moncloud.memodugeek.info). Il faudra donc l’adapter à votre nom de domaine et que ce sous-domaine soit créé au niveau du serveur DNS.

Dans la seconde partie, <VirtualHost *:443>, on gère les connexions https. Il vous faudra remplacer les lignes “SSLCertificateFile /etc/letsencrypt/live/memodugeek.info/fullchain.pem” et
“SSLCertificateKeyFile /etc/letsencrypt/live/memodugeek.info/privkey.pem” par le chemin vers vos certificats. Pour générer des certificats ssl, je vous renvoi à cet article.

Idem pour l’adresse mail après ServerAdmin.

Pour sauvegarder sous nano, il faut faire CTRL+x puis appuyer sur la touche “O” puis Entrée. Rappelez vous de cette manipulation car on va modifier par mal de fichier avec nano.

Un certain nombre de modules Apache doivent être actif pour que Nextcloud fonctionne correctement. Lancez la commande suivante pour les activer :

sudo a2enmod rewrite headers env dir mime proxy_http proxy_http2 proxy

Il ne nous reste plus qu’à redémarrer Apache avec la commande

sudo systemctl restart apache2

Vous pouvez maintenant accéder à votre instance Nextcloud en vous rendant à l’adresse https://moncloud.votrenomdedomaine où il vous sera demandé de créer un compte administrateur et de rentrer les informations pour configurer la base de donnée mysql (nom de la base de données, nom de l’utilisateur et mot de passe de l’utilisateur).

Une fois que vous avez accès à votre instance Nextcloud, activez le module “Default encryption module”. Une fois activé, allez dans les paramètres administrateur puis dans le menu “Sécurité” puis activez le chiffrement côté serveur

A partir de maintenant, tous les fichiers envoyés via Nextcloud seront automatiquement chiffrés une fois sur le serveur. Les clés de chiffrement se trouvent dans le répertoire “/var/www/data/files_encryption/OC_DEFAULT_MODULE/”. Pensez à en faire une sauvegarde car si vous perdez ces clés ils vous sera impossible de déchiffrez vos données.

2.4) Optimisation de Nextcloud (optionnel)

Nextcloud n’est pas parfait sur un PC léger comme le Raspberry, il va donc falloir l’optimiser un peu.

Par défaut, Nextcloud génère une miniature de chaque image dans l’interface web. Autant ça fonctionne très bien quand vous avez 10 images, mais quand il y a 50 ou 100 images ça met des plombes, quelque soit la puissance du serveur hébergeant Nextcloud. Il faut plusieurs dizaines de minutes (voir beaucoup plus) si vous avez beaucoup de photos, pour que Nextcloud génère toutes les miniatures.

C’est un problème connu depuis longtemps et pour lequel aucune solution  n’a été trouvée. Il existe une application qui pré-génère les miniatures mais qui ne fonctionne évidemment pas lorsque le chiffrement est activé.

On va donc désactiver cette fonction, même si l’expérience utilisateur va en prendre un sacré coup vu que vous n’aurez plus aucun aperçu des images sur l’interface web.
Mais de mon point de vue ça vaut toujours mieux que d’avoir le Raspberry complètement à genoux dés que vous voulez visualiser plusieurs dizaines d’images.
Lancez la commande suivante pour éditer le fichier de configuration :

 sudo nano /var/www/nextcloud/config/config.php

Ajoutez la ligne :

'enable_previews' => false

Puis sauvegardez.

On va également activer le cache pour accélérer Nextcloud. Il y a plusieurs systèmes de cache disponibles pour Nextcloud. Pour notre utilisation, on va utiliser APCu. Installez APCu avec la commande :

sudo aptitude install php7.0-apcu

Ouvrez le fichier de config de Nextcloud avec la commande :

 sudo nano /var/www/nextcloud/config/config.php

Ajoutez la ligne :

 'memcache.local' => '\OC\Memcache\APCu'

Puis sauvegardez.

Ensuite, ouvrez le fichier php.ini avec la commande :

sudo nano /etc/php/7.0/apache2/php.ini

Ajoutez les lignes suivantes :

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Pour prendre en compte les modifications, redémarrez Apache avec la commande :

sudo systemctl restart apache2

Si vous utilisez php-fpm, il vous faudra également le redémarrer avec la commande suivante sous peine d’avoir une erreur quand vous accéderez à l’interface de Nextcloud :

sudo systemctl restart php7.0-fpm.service

C’est terminé, passons à Syncthing qui va aller beaucoup plus vite.

2.5) Syncthing

Récupérez la dernière version, 1.0.0 au moment où j’écris ces lignes, avec la commande :

wget https://github.com/syncthing/syncthing/releases/download/v1.0.1/syncthing-linux-arm-v1.0.1.tar.gz

Extrayez-la avec la commande :

tar xzfv syncthing-linux-arm-v1.0.1.tar.gz

Allez dans le répertoire créé avec la commande :

cd syncthing*

Puis copiez l’exécutable dans le dossier /var/www avec la commande :

sudo cp syncthing /var/www/

Il ne nous reste plus qu’a mettre www-data propriétaire du fichier avec la commande :

sudo chown www-data:www-data /var/www/syncthing

C’est important que www-data en soit propriétaire afin de pouvoir faire les mises à jours automatiques.

On peut maintenant supprimer l’archive et le répertoire Syncthing dont nous n’avons plus besoin avec la commande :

rm -r syncthing*

Lancez Syncthing avec l’utilisateur www-data à l’aide de la commande :

sudo -u www-data syncthing

Quand vous verrez la ligne “Access the GUI via the following URL: http://127.0.0.1:8384/”, appuyez sur CTRL+C pour arrêtez Syncthing.

On va maintenant créer le fichier de configuration Apache afin de pouvoir accéder à l’interface web.
Lancez la commande suivante pour créer le fichier :

sudo nano /etc/apache2/sites-available/sync.memodugeek.info.conf

Collez-y les lignes suivantes :

<VirtualHost *:80>

        ServerName sync.memodugeek.info
        ServerAdmin votreemail

        <Location />
                Redirect / https://sync.memodugeek.info/
        </Location>

</VirtualHost>


<VirtualHost *:443>

        ServerName sync.memodugeek.info
        ServerAdmin votreemail

        LogLevel info
        ErrorLog ${APACHE_LOG_DIR}/syncthing.error.log

        <IfModule mod_ssl.c>
                SSLEngine on
                SSLCertificateFile /etc/letsencrypt/live/memodugeek.info/fullchain.pem
                SSLCertificateKeyFile /etc/letsencrypt/live/memodugeek.info/privkey.pem

                # HSTS (mod_headers is required) (15768000 seconds = 6 months)
                Header always set Strict-Transport-Security "max-age=15768000"

        </IfModule>

        ProxyPass / http://localhost:8384/
        <Location />
                ProxyPassReverse http://localhost:8384/
                Require all granted
        </Location>

</VirtualHost>

# modern configuration, tweak to your needs
SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder     on
SSLCompression          off
SSLSessionTickets       off

# OCSP Stapling, only in httpd 2.3.3 and later
SSLUseStapling          on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache        shmcb:/var/run/ocsp(128000)

Comme pour le fichier de config Apache de Nextcloud, il vous faudra l’adapter pour votre serveur.

Sauvegardez.

Il vous faut maintenant ouvrir le port 8384, pour que l’interface soit accessible, avec la commande :

sudo ufw allow 8384 comment syncthing

Il ne nous reste plus qu’à lancer Syncthing automatiquement au démarrage. Pour cela, créez le fichier syncthing.service avec la commande :

sudo nano /etc/systemd/system/syncthing.service

Ajoutez les lignes suivantes dedans :

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target

[Service]
User=www-data
ExecStart=/usr/local/bin/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Sauvegardez.
Pour que Syncthing soit automatiquement lancé au démarrage, lancez la commande :

sudo systemctl enable syncthing.service

Puis on va démarrer Syncthing manuellement, afin de ne pas avoir à redémarrer le serveur, avec la commande :

sudo systemctl start syncthing.service

Si vous vous rendez à l’adresse https://sync.votrenomdedomaine vous arrivez sur l’interface web de Syncthing. Changez la langue en French.

La première chose à faire est d’aller dans le menu Actions > Configuration > Interface graphique puis d’ajouter un utilisateur et un mot de passe.

Ensuite, toujours dans le menu Configuration, allez dans l’onglet Général et dans le champ “Chemin parent par défaut pour les nouveaux partages” mettez “/var/www/nextcloud/data/admin/files/”. Les partages synchronisés iront ainsi automatiquement dans le répertoire contenant les données de l’utilisateur Nextcloud.
Choisissez un nom pour l’appareil puis sauvegardez les modifications.

Le problème qui va se poser est que les fichiers synchronisés vont s’ajouter à Nextcloud via Syncthing et du coup Nextcloud ne les chiffrera jamais car ils n’ont pas été ajoutés en passant par lui. On va donc devoir remédier à ça.

2.6) Script d’ajout des fichiers synchronisés

On va créer un script qui va forcer Nextcloud à scanner régulièrement le dossier data afin d’ajouter les nouveaux fichiers puis à chiffrer tous les nouveaux fichiers. Pour ce script, on va avoir besoin du programme Expect qui permet de répondre automatiquement à des questions, typiquement Oui/Non, posées par des programmes.
Installez-le avec la commande :

sudo aptitude install expect.

On va ensuite devoir créer un utilisateur qui ai le droit de vider la table nextcloud.oc_file_lock.
Lancez la commande :

mysql -uroot -p

Le mot de passe root vous sera demandé. Une fois le mot de passe rentré, vous arriverez dans la console mysql.
Lancez ensuite la commande :

 GRANT SELECT,DELETE ON nextcloud.oc_file_locks TO nomutilisateur@localhost IDENTIFIED BY 'motdepasse';

Remplacez “nomutilisateur” et “motdepasse” par le nom d’utilisateur de votre choix et un mot de passe un peu robuste.

Rechargez les privilèges utilisateurs avec la commande

FLUSH privileges;

Puis quittez la console mysql avec la commande :

exit

Maintenant, créez le script Expect avec la commande :

sudo -u www-data nano /var/www/syncthing_nextcloud.exp

Copiez-y les lignes suivantes :

#!/usr/bin/expect -f
#
set timeout -1

#Unlock all files
spawn mysql --user=nomutilisateur {--password=motdepasse} --database=nextcloud {--execute=DELETE FROM nextcloud.oc_file_locks WHERE 1} --verbose
match_max 100000
expect "DELETE FROM nextcloud.oc_file_locks WHERE 1"

#scan admin's files
spawn php /var/www/nextcloud/occ files:scan --path=/admin/files/ --verbose
match_max 100000
expect "| Folders | Files | Elapsed time |"

#Encrypt all new files
spawn php /var/www/nextcloud/occ encryption:encrypt-all
match_max 100000
expect -exact "\r
\r
You are about to encrypt all files stored in your Nextcloud installation.\r
Depending on the number of available files, and their size, this may take quite some time.\r
Please ensure that no user accesses their files during this time!\r
Note: The encryption module you use determines which files get encrypted.\r
\r
Do you really want to continue? (y/n) "
send -- "y\r"
expect eof

Passons à l’explication du script. Ce n’est pas un script Bash mais un script Expect, d’où la ligne “#!/usr/bin/expect -f” au début du fichier. Expect fonctionne de la manière suivante : on lui donne la commande à lancer, le texte que doit retourner le programme lancé puis la réponse qu’il doit automatiquement donner. On verra ça un peu plus en détail pendant l’explication du script.

“set timeout -1” sert à configurer un temps d’attente infini afin qu’il attende indéfiniment le texte qu’est censé retourner le programme lancé par Expect.

Les lignes situées après “#Unlock all files” servent à vider la table de verrouillage des fichiers de Nextcloud. Il arrive régulièrement que des fichiers restent verrouillés par Nextcloud, sans que je comprenne vraiment pourquoi, ce qui bloque la commande scannant les nouveaux fichiers. C’est pour ça que je la vide en début de script pour déverrouiller tous les fichiers. C’est un peu sale mais ça fonctionne. Voyons les lignes en détails :

  • spawn mysql –user=nomutilisateur {–password=motdepasse} –database=nextcloud {–execute=DELETE FROM nextcloud.oc_file_locks WHERE 1} –verbose lance la commande sql pour vider la table.
    Spaw permet de lancer la commande via Expect, condition obligatoire pour que la commande puisse être lancée. Pensez à changer “nomutilisateur” et “motdepasse” par le nom utilisateur et le mot de passe que vous avec utilisé en début de chapitre.
  • match_max 100000 défini la taille de la mémoire tampon dans laquelle sera stockée le texte retourné par la commande lancée précédemment.
  • expect “DELETE FROM nextcloud.oc_file_locks WHERE 1” permet d’informer Expect quel message doit être rendu par la commande lancée. Une fois qu’il détecte le texte “DELETE FROM nextcloud.oc_file_locks WHERE 1”, il passe à la suite du script.

Les lignes situées après “#scan admin’s files” forcent Nextcloud, via le programme “occ”, à analyser le dossier data de l’utilisateur admin afin d’ajouter automatiquement les nouveaux fichiers ajoutés via Syncthing. Les différentes lignes ont le même principe que pour les précédentes.

Les lignes situées après “#Encrypt all new files” forcent Nextcloud, toujours via le programme “occ”, à chiffrer tous les nouveau fichiers.
Il y a une ligne en plus par rapport aux précédent blocs, c’est “send — “y\r””.
Cette ligne demande à Expect de répondre “y” puis de faire un appui sur la touche Entrée lorsque le texte de la ligne précédente est détecté. Le programme “occ” oblige l’utilisateur à répondre “yes” ou “y” lorsqu’on lance un chiffrement des nouveaux fichiers, c’est pour cela que l’on a besoin du programme Expect.

Il ne vous reste plus qu’à sauvegarder.

Rendez le script exécutable avec la commande :

sudo chmod +x /var/www/syncthing_nextcloud.exp

On va maintenant créer un second script, Bash ce coup-ci, qui exécutera le script Expect. Lancez la commande :

sudo -u www-data nano /var/www/syncthing_nextcloud.sh

Puis copiez-y les lignes suivantes :

#!/bin/bash
if [[ -f /var/www/syncthing_nextcloud.lock ]] ; then
    exit
else
        touch /var/www/syncthing_nextcloud.lock
        expect -f /var/www/syncthing_nextcloud.exp
        rm /var/www/syncthing_nextcloud.lock
fi

Sauvegardez.

Ce script vérifie, grâce à la ligne “if [[ -f /var/www/syncthing_nextcloud.lock ]] ; then” si un fichier “syncthing_nextcloud.lock” existe :

  • S’il n’existe pas, il le crée avec la commande “touch /var/www/syncthing_nextcloud.lock”, puis lance le script Expect.
    Une fois le script Except exécuté, il supprime le fichier lock.
  • S’il existe, le script s’arrête

Grâce à cette partie, il est impossible de lancer le script Expect s’il est déjà en cours d’utilisation. J’ai rajouté cette sécurité car le script se lancera toutes les deux heures et si vous ajoutez beaucoup de fichiers (plusieurs centaines par exemple) en une fois via Syncthing, le programme “occ” peut prendre très longtemps sur un Raspberry pour chiffrer tous les nouveaux fichiers. Avec cette sécurité, on est couvert.

Rendez le script exécutable avec la commande :

sudo chmod +x /var/www/syncthing_nextcloud.sh

On va ajouter ce script au Cron de l’utilisateur www-data afin qu’il soit lancé régulièrement. Lancez la commande :

sudo -u www-data crontab -e

Ajoutez à la fin du fichier la ligne :

0 */2 * * * /var/www/syncthing_nextcloud.sh > /dev/null

Sauvegardez.

Cette ligne va exécuter le script toutes les deux heures.

3) Configuration du téléphone

Ca va aller extrêmement vite.

Installez l’application Syncthing via F-Droid ou le Play Store.

Fin

4) Synchronisation des fichiers

Maintenant que tout est bien configuré, on va pouvoir mettre en place la synchronisation des fichiers entre le téléphone et le serveur Nextcloud.
Je vais sauvegarder sur mon serveur Nextcloud le dossier Galerie de mon téléphone qui contient toutes mes photos et vidéos prisent avec mon téléphones.

Il faut commencer par présenter le Syncthing du serveur Nextcloud (que j’appellerai Syncthing Nextcloud) au Syncthing du téléphone (que j’appellerai Syncthing téléphone). Suivez ces étapes :

  1. Sur l’interface web du Syncthing Nextcloud, cliquez sur “Ajouter un appareil”, une popup va apparaître.
  2. Sur le téléphone, lancez l’application Syncthing et allez dans le menu “Afficher l’ID de l’appareil”.
  3. Copiez l’ID dans le champ ID de l’appareil sur la popup de l’interface web du Syncthing Nexcloud.
  4. Choisissez un nom à mettre dans le “Nom convivial local de l’appareil” (j’ai mis le modèle de mon téléphone), puis cliquez sur “Enregistrer”. Le Syncthing Nextcloud connait maintenant le Syncthing téléphone mais l’inverse n’est pas encore vrai.
  5. Sur l’interface web du Syncthing Nextcloud, allez dans le menu Actions > Afficher mon ID.
  6. Sur l’application Syncthing du téléphone, allez dans l’onglet “Appareils” puis cliquez sur le “+” en haut à droite. Une nouvelle fenêtre s’ouvre
  7. Renseignez l’ID du Syncthing Nextcloud (vous pouvez photographiez le QR code du Syncthing Nextcloud avec le téléphone en cliquant sur l’icône en forme de QR code à droite du champ “Mon ID” sur l’application Syncthing)
  8. Donnez un nom puis validez.

Voilà, nos deux Syncthing se connaissent maintenant. On va donc pouvoir synchroniser le dossier Galerie du téléphone.

Sur l’application Syncthing du téléphone, allez dans l’onglet “Partages” puis cliquez sur le “+” en haut à droite. Une nouvelle fenêtre s’ouvre.
Donnez un nom au partage, choisissez le répertoire à partager (mon dossier Galerie dans mon cas), activez le bouton en face du champ portant le nom du Syncthing Nextcloud puis validez.
Par défaut, la synchronisation ne se fera que depuis le téléphone vers Nextcloud et jamais l’inverse. Ne modifiez jamais ce comportement sinon vos fichiers sur le téléphone vont être remplacés par les fichiers chiffrés de Nextcloud.

Sur l’interface web du Syncthing Nextcloud, vous allez avoir un message vous indiquant qu’un appareil veut synchroniser un partage. Cliquez sur le bouton “Ajouter”.

Le chemin où sera stocké le partage sera automatiquement “var/www/nextcloud/data/admin/files/”. Cliquez sur “Enregister”.

Le Syncthing du téléphone va maintenant envoyer le contenu du dossier partagé sur le Syncthing Nextcloud. Vous verrez un pourcentage de la synchronisation.

Il n’y a plus qu’à attendre que cron lance automatiquement le script pour ajouter les fichiers à Nextcloud puis les chiffrer.

Voilà la fin de ce long article consacré à Nextcloud et Syncthing.

 

Sources : https://wiki.debian-fr.xyz/Nextcloud_sur_une_Debian_9_Stretch_Apache2_%2B_SQLite_MariaDB_MySQL_%2B_certificat_SSL_et_https, https://docs.nextcloud.com/server/15/admin_manual/contents.html et https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-syncthing-to-synchronize-directories-on-ubuntu-14-04

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.