NAS Synology : installation de NextCloud sur DSM 6

On entend souvent parler de la solution NextCloud quand il s’agit d’héberger soi-même ses données personnelles, en se libérant ainsi des vilains GAFAM qui veulent tout savoir de nous…

J’avais plus particulièrement en tête un système de prises de Notes que je puisse synchroniser entre mon smartphone et le PC, la synchro se faisant automatiquement par NextCloud. Il s’agit de Joplin, qui fera l’objet d’un article un peu plus tard.

Étant possesseur d’une baie Synology, je me suis rendu compte que je pouvais effectivement installer un serveur NextCloud sur mon NAS ! Cela n’a rien de très compliqué, mais il y a des paquets à installer et à configurer scrupuleusement avant de pouvoir lancer son NextCloud.

Les infos de cet article viennent de cet article (en anglais). Il est très bien fait, mais comme je n’ai pas trouvé d’équivalent en français, j’y vais de mon billet, en ajoutant quelques petites notes prises pendant ma propre installation.

C’est parti !

Packages

Commençons par installer les paquets requis à partir du centre de paquets  :

  • Web station
  • HTTP Server 2.4
  • PHP 7.0
  • Phpmyadmin
  • MariaDB 10

Configuration

MariaDB

Pour finir l’installation de MariaDB, il faut mettre un mot de passe (laissé vide par l’installation). Il faut donc lancer MariaDB, choisir “Changer le mot de passe MariaDB”, laisser le premier champ vide, et choisir un bon mot de passe.

Webstation

Lancer Webstation, puis sélectionner Apache HTTP Server 2.4 et PHP 7.0 :

Dans ma configuration, je n’active pas de “Virtual Host”, je vais au plus simple. Si c’est votre cas, renseigner les paramètres demandés (nom de l’hôte, le port, le répertoire racine du document), et sélectionner les mêmes versions d’Apache et PHP. Retenir surtout l’emplacement du répertoire racine pour la suite.

Extensions PHP

Il va maintenant falloir indiquer l’emplacement où seront stockés vos fichiers personnels (le dossier pour vos données NextCloud). Pour ma part, ce sera dans /volume1/homes/pascal/NextCloud : j’ai donc créé ce dossier précédemment. Il va aussi falloir activer les extensions PHP nécessaires au fonctionnement de NextCloud, à savoir :

  • bz2
  • curl
  • gd
  • mysqli
  • openssl
  • pdo_mysql
  • zip

L’auteur de l’article précise qu’il ne sait plus vraiment lesquelles sont vraiment nécessaires, mais au moins avec celles-ci, on est certain que tout fonctionne.

Paramètres PHP

Il y a également des paramètres PHP à modifier : sélectionner l’onglet “Cœur” est modifier si nécessaire les paramètres suivants :

  • mysql.default_port=3307  (port par default pour MariaDB 10)
  • 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

Voilà, les paramètres de la “Web station” sont prêts pour que NextCloud fonctionne. Il ne reste plus qu’à installer NextCloud proprement dit.

NextCloud

Télécharger NexCloud à partir de cette page. Vous allez récupérer un fichier nextcloud-XX.Y.Z.zip qu’il va falloir copier sur votre NAS Synology, à la racine de votre “Web station”, soit dans /volume1/web.

L’ayant téléchargé sur le PC, et comme il m’était impossible avec le “File Station” de Synology d’aller dans le dossier /volume1/web :-(, voilà comment j’ai procédé :

Je suis allé dans /volume1/homes/pascal/NextCloud, puis j’ai fait “Charger” et suis allé chercher le zip de NextCloud sur mon PC. Ensuite, je me suis connecté en SSH sur la baie Synology (il faut avoir activé SSH sur le NAS auparavant bien sûr, dans “Terminal & SNMP” sélectionner “Activer le service  SSH”, sur le port de votre choix, 2158 dans mon cas), et tapé la commande suivante pour extraire le zip au bon endroit grâce à 7z, l’outil installé par défaut par Synology :

pascal@pascal-SH87R:~$ ssh admin@192.168.1.14 -p 2158
admin@DiskStation:~$ 7z x /volume1/homes/pascal/NextCloud/nextcloud-13.0.4.zip -o/volume1/web
Modifier les permissions

Reste à modifier les permissions par défaut. Nous allons pour cela utiliser un script : créer le fichier nextcloud-permissions.sh comme ci-dessous sur votre PC en adaptant les chemins des dossiers à votre configuration, puis copier-le sur le NAS comme précédemment :

#!/bin/bash
chown -R http:http /volume1/web/nextcloud/
chown -R http:http /volume1/web/nextcloud/apps/
chown -R http:http /volume1/web/nextcloud/config/
chown -R http:http /volume1/web/nextcloud/themes/
chown -R http:http /volume1/homes/pascal/NextCloud/
chown http:http /volume1/web/nextcloud/.htaccess
find /volume1/web/nextcloud/ -type f -print0 | xargs -0 chmod 777
find /volume1/web/nextcloud/ -type d -print0 | xargs -0 chmod 777
find /volume1/homes/pascal/NextCloud/ -type d -print0 | xargs -0 chmod 777
chmod 777 /volume1/web/nextcloud/.htaccess

Je l’ai déplacé ensuite dans /volume1/web. Connecté en SSH, il ne reste plus qu’à exécuter le script, et vérifier qu’il n’y pas d’erreur. Si nécessaire, donner les droits d’exécution au script :

admin@DiskStation:~$ cd /volume1/web
admin@DiskStation:/volume1/web$ sudo chmod +x nextcloud-permissions.sh 
admin@DiskStation:/volume1/web$ sudo ./nextcloud-permissions.sh

Voilà, c’est terminé pour l’installation de NextCloud, il ne reste plus qu’à accéder à notre nouveau serveur.

Dernière étape

Pour que votre serveur NextCloud soit accessible par l’internet, vérifier d’abord que vous avez bien mis en place le service “Quickconnect” de Synology qui vous permet de vous connecter avec une adresse du style myservicename.synology.me (à moins que vous ayez votre propre nom de domaine).

Aller dans le Panneau de configuration, puis “Accès externe”, onglet DDNS et créer une entrée en choisissant Synology comme fournisseur de service :

Une fois ceci fait (si vous avez un routeur/une box, penser à ouvrir le port 80), il ne reste plus qu’à accéder à la page de NextCloud :

Il faut bien remplir cette première page, avec un utilisateur créé sur le NAS, le chemin d’accès à vos données () soit /volume1/homes/pascal/NextCloud dans mon cas), et enfin l’utilisateur ‘root’ pour MariaDB avec le mot de passe que l’on a changé tout à l’heure… Puis cliquer sur “Finish setup”.

En ce qui me concerne, j’ai eu deux erreur 504 (il s’agit d’un Gateway time-out), mais au troisième rechargement, la page finale de NextCloud s’ests enfin affichée :

Et voilà, j’ai mon instance NextCloud qui tourne ! 😀 Reste à l’utiliser, la première chose sera un système de prise de notes comme je le disais en début d’article. Ce sera l’objet d’un futur billet.

Il y a aussi plein d’autres choses que l’on peut faire, comme synchroniser ses contacts, ou son agenda… Pour cela, j’ai d’autres solutions (un serveur Baikal sur le serveur du blog), mais il y a aussi les photos du smartphone par exemple, et plein d’autres choses à faire avec ce bel outil.

22 réflexions au sujet de « NAS Synology : installation de NextCloud sur DSM 6 »

  1. Tres interessant et tuto complet, merci !
    Je vais transmettre a un ami qui possede un Synology.
    Perso, j’ai un Nextcloud auto-heberge chez mon hebergeur…
    Ca fonctionne egalement bien (sans etre exigeant au niveau des temps d’acces bien sur) et la sauvegarde depuis Android est tres pratique (ca evite le Google Drive pour ceux qui n’en veulent pas).

  2. Bonjour,

    Je suis bloqué au paragraphe modifier les permissions car moi j’ai accé au dossier WEB via le nas

    peux tu m’aider ou m’éclaircir le truc?

    Merci

    1. Salut,
      Je ne suis pas chez moi, je ne peux donc vérifier ce que t’offre l’accès WEB pour modifier les permissions des fichiers.
      Le script ne fait que ça : modifier les permissions, ou les propriétaires de certains fichiers, ou plutôt de tous les fichiers de certains répertoires (récursivité). Mais tout faire “à la mano” via une interface web me paraît bien compliqué. Pour donner les droits d’exécution à un fichier, la commande est ‘chmod +x nomdufichier’.

      Il vaut mieux que tu passes par une connexion ssh, ce sera beaucoup plus simple. Si tu es sous windows, tu peux installer putty (putty.org), ça fonctionne très bien et c’est simple à installer. Une fois connecté tu exécutes le script que tu auras copié précédemment.

      Sinon voilà ce que font les commandes :
      – ‘chown’ change le propriétaire (http) et le groupe (http) des répertoires (et de tous les fichiers dedans, le -R signifie récursif)
      – ‘find’ va d’abord rechercher tous les fichiers (type f) dans le répertoire de nextcloud et en change les permissions (777 autoirise tout à tout le monde). Même chose ensuite pour les répertoires (type d), dans deux répertoires différents.
      – Enfin, la dernière commande ‘chmod’ change les permissions du fichiers .htaccess de nextcloud.

      Mais encore une fois, je te conseille fortement de passer par le script, ça ira plus vite et évite les erreurs/oublis. Et de bien vérifier qu’il n’y a pas de messages d’erreur en l’exécutant. Eventuellement, en cas de problème, tu peux exécuter chaque commande une par une, pour vérifier laquelle pose problème.

      Voilà.

        1. Pour t’aider :
          – si tu accèdes via ton navigateur au NAS, tu peux voir l’adresse du NAS dans la barre d’adresse de ton navigateur. Tu l’utilises pour te connecter avec Putty (adresse, utilisateur, mot de passe) en ayant activé auparavant SSH sur le NAS via le panneua de configuration de DSM.
          – Pour le script, tu copies le texte que j’ai mis dans un fichier avec le nom indiqué, et tu le copies sur ton NAS via l’interface web (DSM j’imagine).
          – Une fois connecté avec Putty, il faudra te déplacer dans le même répertoire (commande ‘cd’, là il faut un minimum de connaissances), et ensuite tu donnes les droits d’exécution au script, puis tu l’exécutes.

          Courage, tu n’es plus très loin d’avoir ton instance Nextcloud personnelle 😉

  3. Bonjour,
    J’ai eu un soucis au moment du paramétrage PHP, au moment de cocher “personnaliser PHP_open_basedir”.
    La modification de chemin s’est mal passé et je n’ai plus la ligne dans son entier.
    Pourrais-tu me la communiquer, stp ?

    1. Voilà la mienne :
      /tmp:/var/services/tmp:/var/services/web:/var/services/homes:/volume1/homes/pascal/NextCloud

      Tu peux la retrouver en lançant l’application “Web station” à partir de DSM, puis dans Paramètres PHP, tu sélectionnes “Default Profile” (pour la v7) et tu fais “Modifier” => la fenêtre “Paramètres avancés” s’ouvre et tu peux voir/modifier le chemin.

    1. Il y a un “Updater” intégré à l’interface de Nextcloud (un message te prévient qu’une nouvelle version est disponible, il suffit de cliquer dessus). J’ai voulu essayer, mais la mise à jour échoue lors de l’étape “Backup” (en tout cas chez moi).
      Et je me suis retrouvé bloqué avec mon Nextcloud en “maintenance mode” !! 🙁

      => J’ai du alors me logguer en ssh sur la baie, passer su (sudo su), aller dans “/volume1/web/nextcloud/config”, éditer le fichier config.php, et passer le paramètre maintenance à “False”. Et la page se rafraîchit toute seule !

      Pour faire cette mise à jour, il y a des infos sur cette page, y compris qu’il faut modifier les permissions sur les fichiers si l’on utilise l’updater :
      http://blog.viking-studios.net/en/your-own-cloud-nextcloud-update-on-a-synology-diskstation-and-dsm-6/

      Mais pour l’instant, je suis satisfait de la version 13 et tout fonctionne bien, donc je ne vais pas faire ça tout de suite, je ne peux donc pas confirmer que cela fonctionne.

      1. Merci beaucoup, c’est toujours bon à savoir :).
        Cependant, je n’en suis pas encore là malheureusement. En effet, impossible pour moi d’exécuter le script…
        Voilà où j’en suis :

        – J’ai paramétré MariaDB + Web Station comme indiqué. J’ai créé un dossier sous volume2/documents/NextCloud et j’ai rajouté le chemin dans Web station (open_basedir)
        – J’ai coché les extensions PHP et j’ai modifié les paramètres PHP avec les chiffres indiqués.
        – J’ai téléchargé Nextcloud sur mon PC, j’ai dézippé l’archive et j’ai envoyé le dossier par FTP vers /volume2/web

        – J’ai ouvert le Bloc Notes, j’ai copié/collé le contenu en adaptant les chemins :

        #!/bin/bash

        chown -R http:http /volume2/web/nextcloud/
        chown -R http:http /volume2/web/nextcloud/apps/
        chown -R http:http /volume2/web/nextcloud/config/
        chown -R http:http /volume2/web/nextcloud/themes/
        chown -R http:http /volume2/documents/NextCloud/
        chown http:http /volume2/web/nextcloud/.htaccess
        find /volume2/web/nexctloud/ -type f -print0 | xargs -0 chmod 777
        find /volume2/web/nextcloud/ -type d -print0 | xargs -0 chmod 777
        find /volume2/documents/NextCloud/ -type d -print0 | xargs -0 chmod 777
        chmod 777 /volume2/web/nextcloud/.htaccess

        – J’ai enregistré le fichier en le nommant “permissions.sh”.
        – J’ai envoyé le fichier vers /volume2/web
        – J’ouvre PuTTY, je me connecte en SSH et je me place dans le dossier /volume2/web
        – Je tape ensuite “sudo chmod +x permissions.sh “. Je valide. J’entre mon mot de passe. Je valide. Je n’ai aucun retour mais je pense que ça a fonctionné.
        – Je tape ensuite sudo ./permissions.sh. Je valide. J’entre mon mot de passe. Je valide. Et là j’ai l’erreur suivante :

        sudo: unable to execute ./permissions.sh: No such file or directory

        Le fichier est pourtant bien présent. Je n’y comprends rien 🙂

        1. Vu que le script ne fonctionnait pas, j’ai testé uniquement la première commande à la main (chown -R http:http /volume2/web/nextcloud/). Tous les fichiers ont été passés en revue avec l’erreur suivante : Operation not permitted.

          Il faut savoir que j’ai complètement désactivé le compte “admin” sur DSM, vu que c’est fortement recommandé. J’ai donc créé un nouvel utilisateur ayant les droits et je me connecte avec sur PuTTY.

        2. Bizarre en effet, tu es bien dans le bon répertoire ? pas de faute de frappe sur le nom de fichier ?
          Pour vérifier le droit d’exécution, tu tapes ‘ls -l’ et tu dois voir le ‘x’ à la fin des droits pour tout le monde (rwx) :
          admin@DiskStation:~$ ls -l
          -rwxrwxrwx 1 admin users 556 Jun 7 15:12 permissions.sh

          Vérifie aussi que notepad (le Bloc Notes de Windows) ne t’ai pas rajouté des caractères indésirables (le format de saut de ligne n’est pas le même entre Windows et Linux) :
          admin@DiskStation:~$ cat permissions.sh

          Sinon essaie (problème avec la première ligne qui indique qu’il faut utiliser le shell bash) :
          admin@DiskStation:~$ sudo bash ./permissions

          1. – J’ai édité le fichier permissions.sh avec NotePad++. J’ai bien le saut de ligne au début.

            – La commande que vous m’avez indiquée “sudo chown -R http:http /volume2/web/nextcloud/” ne me renvoie aucune erreur. Les suivantes non plus. En revanche, arrivé aux lignes “find…” j’ai de nouveau les fichiers qui sont listés avec comme erreur “Operation not permitted”.

            – La commande “sudo bash ./permissions.sh” me renvoie ceci :

            chown: cannot access ‘/volume2/web/nextcloud/\r’: No such file or directory
            chown: cannot access ‘/volume2/web/nextcloud/apps/\r’: No such file or directory
            chown: cannot access ‘/volume2/web/nextcloud/config/\r’: No such file or directo ry
            chown: cannot access ‘/volume2/web/nextcloud/themes/\r’: No such file or directo ry
            chown: cannot access ‘/volume2/documents/NextCloud/\r’: No such file or director y
            chown: cannot access ‘/volume2/web/nextcloud/.htaccess\r’: No such file or direc tory
            chmod: invalid mode: ‘777\r’

            – La commande “ls -l” me donne ceci : -rwx–x–x 1 MonPseudo users 560 Oct 23 02:16 permissions.sh.

            J’ai vraiment l’impression d’être proche du but, mais n’y connaissant rien du tout, je ne sais pas ce qui bloque ^^

          2. – Alors déjà j’ai corrigé une erreur par moi-même. En effet, je n’avais pas redonné les permissions au fichier. J’ai donc refait un chmod +x permissions.sh et j’ai donc le résultat suivant lors d’un “ls -l” : rwxrwxrwx

            – J’ai donc relancé la commande “sudo bash ./permissions.sh” qui me renvoie la même erreur “chown: cannot access…”

            Décidément…

  4. Tu as bien un problème de fin de ligne “windows” dans ton fichier. Ce sont les ‘\r’ que tu vois dans les messages d’erreur.
    Deux solutions :
    1) sous Notepad++, Menu Edition – Convertir les sauts de ligne – Convertir au format Unix (LF). Puis tu sauves ton fichier, le recopies, etc…
    2) Sous Linux, via PuTTY : taper la commande suivante (qui va effacer ces caractères du monde windows) :
    $ tr -d ‘\r’ linux-permissions.sh

    Après ça devrait aller mieux…

    1. Magnifique ! Ca passe :). J’ai bien la page NextCloud qui s’affiche.
      En revanche (et oui), après avoir entré toutes les infos, j’ai l’erreur suivante :

      Impossible de créer, ou d’écrire dans, le répertoire des données /volume2/documents/NextCloud/

      1. Le script est passé sans aucun message d’erreur ? C’est très important… sinon passer les commandes une par une.
        Sinon, ce répertoire”/volume2/documents/NextCloud/” est bien celui ajouté à la variable open_basedir ? Vérifier en lançant l’application “Web station” à partir de DSM.

      2. C’est réglé, je n’avais pas attribué les droits en écriture :

        – Panneau de configuration > Dossiers partagé > Clic droit sur le dossier “documents” (dans mon cas) > modifier
        – Sous l’onglet “permissions”, sélectionner l’onglet “Groupes locaux” et donner les droits “Lecture/écriture” à http.

        Ensuite ça passe pour la configuration NextCloud.

        Merci beaucoup pour votre tuto et votre aide 🙂

  5. Bonjour,
    Après avoir configurer l’ouverture du port sur la box et dans le panneau de config du Syno (Accès externe / Configuration du routeur / création port personnalisé), je n’arrive pas à accéder à la page de config Nextcloud.. J’ai un message “Désolé, la page que vous recherchez est introuvable.”
    Je ne vois pas comment y arriver, pourriez vous m’aider svp?
    (Je travaille sur le DS216j)
    En vous remerciant d’avance.

    1. Tu as du faire une erreur dans la procédure et l’emplacement de ton Nextcloud. Ou alors une simple faute de frappe (ou une MAJ/Min mal placée ? J’obtiens le même message par exemple si je mets “http://monsite.synology.me/nextcloud1”.

      Sinon vérifies que Nextcloud est bien installé dans “/volume1/web”, soit à la racine de ta Web station…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *