• en: Nextcloud - Installation - Raspberry PI3 - Rock64 (armhf-arm64) ()
  • blog-image

    Nextcloud - Installation - Raspberry PI3 - Rock64 (armhf-arm64)

    • dHENRY
    • 08/04/2019
    • (Durée de lecture : 9 mn)

    ***** Update du 23/05/2019 -** Exposez votre service Nextcloud sur internet, dans le cadre d’un auto-hébergement. Je vous renvoi à ce billet : https://www.mytinydc.com/index.php/2019/05/23/nextcloud-exposez-votre-instance-sur-internet/

    Toujours dans le cadre de la décentralisation du web, il est intéressant de disposer de sa solution de stockage Cloud.
    NEXTCloud est la solution que j’ai choisie.
    Cette application dispose d’une grande communauté, d’une version navigateur, d’une version Desktop, de versions mobiles et d’un vaste écosystème, dont la fédération. La fédération permet de communiquer avec d’autres serveurs Nextcloud et de faciliter ainsi le partage de documents.
    De part son vaste éco-système, Nextcloud permet de reprendre en main ses données, puisqu’il dispose d’un nombre impressionnant de fonctionnalités permettant leur stockage :

    Dans ce billet, je vais expliquer comment installer et paramétrer Nextcloud, pour des Raspberry PI3 et/ou Rock64, sur un réseau local (çà marche aussi pour les plateformes X86 et amd64).

    Installation

    L’application est écrite en PHP, autant dire que les petites unités Raspberry vont “souffrir”. J’ai fait le choix de disposer le service sur un Rock64, plus rapide, et disposant de plus de mémoire. Pour améliorer encore les performances, je vous conseille d’héberger la base de données Mysql/MariaDB sur une unité séparée (un Raspberry PI 3 suffit).

    diagramme réalisé avec draw.io intégré à Nextcloud

    Préparation

    Ici je vais lister tous les éléments de paramétrage nécessaires : - Adresse IP du serveur Nextcloud [* ipservnextc] : 192.168.1.2
    - compte administrateur d’accès à l’application Nextcloud [* adminnextc] : admin
    - Mot de passe du compte administrateur d’accès à l’application Nextcloud [* passadminnextc] : utilisez le logiciel apg pour générer un mot de passe aléatoire (apt install apg; apg)
    - adresse IP du serveur MariaDB/Mysql [* ipservmysql] : 192.168.1.3 - Nom de la base de données [* database] : nextcloud
    - Compte d’accès à la base de données [* usermysql] : nextcloud
    - Mot de passe du compte d’accès à la base de données [* passmysq*l] : utilisez le logiciel apg pour générer un mot de passe aléatoire (apt install apg; apg)
    - Fqdn qui permettra l’accès au service nextcloud [
    fqndnextc] : nextcloud.mtdc - Si vous souhaitez exposer votre Nextcloud sur internet, vous devez acheter un nom de domaine (tapez “acheter un nom de domaine” sur DuckDuckGo)

    [*…] sont les noms raccourcis utilisés, ci-après.

    Serveur Nextcloud

    Ce service nécessite d’installer plusieurs paquets Debian. Connectez-vous “root” au serveur Nextcloud, et exécutez les commande ci-après :

    Mise à jour du système

    apt update;apt -y upgrade
    

    Installation des paquets nécessaires

    • DEBIAN 9

      apt install apache2 libapache2-mod-php7.0 php7.0-cli php7.0-curl php7.0-gd php7.0-opcache php7.0-xml php7.0-zip   php7.0-mbstring  php7.0-mysql php-imagick unzip sudo openssl nmap
      
    • DEBIAN 10

      apt -y install apache2 libapache2-mod-php php-cli php-curl php-gd php-opcache php-xml php-zip   php-mbstring  php-mysql php-imagick unzip sudo openssl nmap php-pgsql php-intl php-apcu nmap
      

    Les fichiers à télécharger sont ici, mais nous allons directement télécharger la dernière version accesible par son nom “latest”

    Rendez-vous sur la console du serveur Nextcloud, et tapez :

    cd /var/www/html/
    wget https://download.nextcloud.com/server/releases/latest.zip
    # Somme de contrôle MD5
    wget  https://download.nextcloud.com/server/releases/latest.zip.md5
    

    Contrôle d’intégrité :

    md5sum -c latest.zip.md5
    # doit retourner
    latest.zip: OK
    

    Si le contrôle d’intégrité échoue, recommencez le téléchargement.

    Décompressez maintenant le contenu du fichier zip “NextCloud” :

    unzip latest.zip
    

    Modifiez les autorisations sur l’ensemble du répertoire /var/www/html/nextcloud/ (attribution des autorisations d’accès pour le compte www-data) :

    chown -R www-data:www-data /var/www/html/nextcloud/
    

    Supprimez les archives téléchargées :

    rm *.zip *.md5
    

    Après l’exécution de ces opérations, le contenu du répertoire “/var/www/html/nextcloud/” doit ressembler à ceci :

    contenu du répertoire "/var/www/html/nextcloud"

    Firewall

    OUTPUT : 3306/TCP - Limité à l’adresse [* ipservmysql]
    INPUT : 443/TCP - Accessible de partout

    Serveur de Base données (MariaDB/Mysql )

    Connectez-vous root au serveur de base de données, puis exécutez les commandes suivantes :

    Mise à jour du système

    apt update;apt -y upgrade
    
    Installation des paquets nécessaires

    Cette phase vous demandera de fournir le mot de passe “root” d’accès au service MariaDB/Mysql, que vous devrez conserver.

    apt install mariadb-server
    

    Firewall

    Prenez l’habitude de limiter les accès à votre serveur de bases de données.
    INPUT : 3306/TCP - Limité à l’adresse ip de [* ipservnextc]

    Configuration

    Serveur de Base données (MariaDB/Mysql )

    Créons le compte et la base de données pour l’application Nextcloud, ouvrir une console “root” sur le serveur MariaDB/Mysql, puis exécutez les commandes suivantes :

    Lancement de l’interpréteur de commande mysql, dans lequel nous allons exécuter des instructions SQL.
    Attention vous devrez remplacer les raccourcis ([* …]) par les valeurs retenues lors de la préparation.

    mysql
    
    CREATE USER '[* usermysql]'@'%' IDENTIFIED BY '[* passmysql]';  
    CREATE DATABASE IF NOT EXISTS [* database] CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;  
    GRANT ALL PRIVILEGES on [* database].* to '[* usermysql]'@'%';  
    FLUSH privileges;  
    exit
    

    PS : Si vous avez décidé d’installer le service MariaDB/Mysql sur la même machine que l’application Nextcloud, remplacer ‘%’ par ‘localhost’ dans les commandes SQL.

    Serveur Nextcloud

    Ouvrir une console “root” sur le serveur Nextcloud, puis exécutez les commandes suivantes :

    Attention vous devrez remplacer les raccourcis ([* …]) par les valeurs retenues lors de la préparation.

    Test d’accès au port 3306 du serveur MariaDB/Mysql

    nmap -p 3306  [* ipservmysql]
    #Vous devrez obtenir la ligne :
    #3306/tcp open  mysql
    
    cd /var/www/html/nextcloud/
    sudo -u www-data php occ  maintenance:install --database "mysql" --database-host="[* ipservmysql]" --database-name "[* database]"  --database-user "[* usermysql]" --database-pass "[* passmysql]" --admin-user "[* adminnextc]" --admin-pass "[* passadminnextc]"
    
    Nextcloud is not installed - only a limited number of commands are available
    
    Nextcloud was successfully installed
    

    Préparer l’accès à Nextcloud

    Pour réaliser cet opération nous allons paramétrer le serveur web (apache2), afin qu’il redirige les demandes d’accès au nom de domaine vers l’application. La liaison se fera avec le protocole HTTPS, nous aurons donc besoin d’un certificat. Étant dans un réseau local, un certificat auto-signé suffira. Nous allons avoir besoin de la variable [* fqdnnextc] retenue lors de la préparation.

    Création du certificat https auto-signé

    Toujours connecté “root” à la console du serveur Nextcloud, les certicats ssl seront stockés dans le répertoire : “/etc/apache2/ssl/” , créons ce répertoire à l’aide de la commande :

    mkdir /etc/apache2/ssl/
    

    Puis tapez ces commandes, en appuyant sur “Entrée” après chaque ligne :

    PARAMETER_CERT_C="FR"  
    PARAMETER_CERT_ST="private"  
    PARAMETER_CERT_L="France"  
    PARAMETER_CERT_O="Nantes"  
    CN=[* fqdnnextc]   
    PATHCERTS=/etc/apache2/ssl  
    

    Attention vous devrez remplacer les raccourcis ([* …]) par les valeurs retenues lors de la préparation.
    # sur une seule ligne :

    openssl req -new -x509 -days 365 -nodes -subj  "/C=$PARAMETER_CERT_C/ST=$PARAMETER_CERT_ST/L=$PARAMETER_CERT_L/O=$PARAMETER_CERT_O/CN=$CN"  -out $PATHCERTS/$CN.crt -keyout $PATHCERTS/$CN.key  
    

    Deux fichiers ont été créés dans les répertoire “/etc/apache2/ssl/”, dont les noms commencent par [* fqdnnextc]. Vérifiez en tapant la commande :
    ls -l /etc/apache2/ssl/

    Modifiez les permissions de ces fichiers :

    chmod  644  /etc/apache2/ssl/*.crt
    chmod  600  /etc/apache2/ssl/*.key
    

    Création du VirtualHost Apache2

    Toujours connecté “root” à la console du serveur Nextcloud, je crée un fichier virtualhost, dont la syntaxe est propre à l’environnement apache2.

    Le fichier virtualhost se termine par l’extension “.conf”

    vi  /etc/apache2/sites-available/[* fqdnnextc].conf
    

    Ajoutez ce contenu en l’adaptant, Vous devrez remplacer les raccourcis ([* …]) par les valeurs retenues lors de la préparation.

    <IfModule mod_ssl.c>
        <VirtualHost _default_:443>
        <IfModule mod_headers.c>
          Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
        </IfModule>
    
    		       ServerName [* fqdnnextc]
                           ServerAdmin [* admin email]
                           RewriteEngine On
                           RewriteCond %{HTTPS} off
                           RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
      RewriteRule ^/\.well-known/host-meta /public.php?service=host-meta [QSA,L]
      RewriteRule ^/\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
      RewriteRule ^/\.well-known/webfinger /public.php?service=webfinger [QSA,L]
      RewriteRule ^/\.well-known/carddav /remote.php/dav/ [R=301,L]
      RewriteRule ^/\.well-known/caldav /remote.php/dav/ [R=301,L]
                           DocumentRoot /var/www/html/nextcloud
                           ErrorLog ${APACHE_LOG_DIR}/error-[* fqdnnextc].log
                           #CustomLog ${APACHE_LOG_DIR}/access-[* fqdnnextc].log combined
                           CustomLog ${APACHE_LOG_DIR}/access-[* fqdnnextc].log forwardfor
                           SSLEngine on
                           SSLCertificateFile /etc/apache2/ssl/[* fqdnnextc].crt
                           SSLCertificateKeyFile /etc/apache2/ssl/[* fqdnnextc].key
                           <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                           SSLOptions +StdEnvVars
                           </FilesMatch>
                           <Directory /usr/lib/cgi-bin>
                                           SSLOptions +StdEnvVars
                           </Directory>
                           <Directory />
                                    Options FollowSymlinks
                                           AllowOverride All
                                            Order allow,deny
                                            allow from all
                           </Directory>
    <Directory /var/www/html/nextcloud/data>
    Require all denied
    </Directory>
    
    </VirtualHost>
    </IfModule>
    

    Enregistez et quitter : ESC:wq

    Configuration apache2

    Activation du module SSL pour apache2

    a2enmod ssl
    

    Activation du mode Rewrite pour apache2

    a2enmod rewrite
    

    Activation du mode headers pour apache2

    a2enmod headers
    

    Activation du virtualhost

    Vous devrez remplacer les raccourcis ([* …]) par les valeurs retenues lors de la préparation.

    a2ensite [* fqdnnextc]
    

    Configuration OPcache

    Opcache ( Optimizer Plus Cache) est un système pour PHP, permettant d’améliorer ses performances. Il arrive que ce processus ne fonctionne pas. Afin de s’assurer de son bon fonctionnement, suivez cette instruction :

    Recherche sur l’unité, la localisation de la librairie opcache

    find /usr -name 'opcache.so'
    

    [Réponse] : /usr/lib/php/20151012/opcache.so

    vi /etc/php/7.0/mods-available/opcache.ini
    
    ; configuration for php opcache module  
    ; priority=10  
    zend_extension=[reportez la "Réponse"]  
    

    Tapez pour quitter : ESC:wq!

    Vérification DNS

    Pour joindre le service Nextcloud, vous devez vous assurez que la station avec laquelle vous travaillez (navigateur web), puisse accéder au serveur Nextcloud, par son nom qualifié ( FQDN - variable [* fqdnnextc] )
    Windows : ouvrir une console (cmd.exe), tapez :

    nslookup [* fqdnnextc]
    

    Linux : ouvrir une console, tapez :

    host [* fqdnnextc]
    

    Ces commandes doivent renvoyer une réponse valide.
    *Vous devrez remplacer les raccourcis ([ …]) par les valeurs retenues lors de la préparation. **

    Démarrage du service NextCloud

    Pour démarrer le service NextCloud, ce dernier est associé à la configuration apache2, exécuter la commande :

    systemctl start apache2
    

    ou (si apache2 est déjà démarré)

    systemctl restart apache2
    

    Premier accès à Nextcloud

    A partir de votre station de travail, démarrer votre navigateur, puis tapez l’url : https://[* fqdnnextc]
    Le certificat étant auto-signé, le navigateur indiquera que le certificat n’est pas valide, confirmer l’accès.

    Vous devrez remplacer les raccourcis ([* …]) par les valeurs retenues lors de la préparation.

    Pour accéder, à votre “Cloud”, connectez-vous avec le compte administrateur, valeurs [* adminnextc] et [* passadminnextc], retenues lors de la préparation.

    Paramétrage de votre instance NextCloud

    Je vous invite tout d’abord à créer les utilisateurs nécessaires, ne travaillez jamais avec le compte “administrateur” et de vous référer à la documentation officielle disponible sur le site web de NextCloud : https://nextcloud.com/support/
    La documentation officielle est en anglais, mais vous trouverez toutes les ressources nécessaires en français en opérant des recherches sur internet.

    Tâches planifiées

    Préférez, comme indiqué dans la documentation, d’exécuter les tâches planifiées au moyen de la crontab. Par défaut, ce processus est exécuté par chaque utilisateur via une requête XHR, ce qui diminue les performances.
    Créer le fichier :

    vi /etc/cron.d/nexcloud
    

    et insérer :

    #Taches de fond  
    */5 * * * * www-data /usr/bin/php /var/www/html/nextcloud/cron.php**
    

    Le programme “cron.php” sera exécuté toutes les 5 minutes (conseillé par Nextcloud) par le serveur.

    Connectez-vous à votre instance Nextcloud, à l’aide de votre navigateur, en tant qu’administrateur. Cliquez sur l’icône “utilisateur” (en haut à droite), puis “Paramètres”, “Administration/Paramètres de base”, puis sélectionnez l’option “Cron”.

    Accéder à partir des applications

    Les applications NextCloud sont disponibles pour PC, Android, IOS et sont téléchargeables ici : https://nextcloud.com/athome/
    Le paramétrage de ces applications est similaire à l’accès par navigateur, vous indiquerez l’url d’accès au serveur, votre compte et votre de passe.

    Exposer son instance Nextcloud sur internet

    Dans le cadre d’un auto-hébergement, vous allez devoir exposer votre service Nextcloud sur l’internet. Je vous renvoi à ce billet : https://www.mytinydc.com/index.php/2019/05/23/nextcloud-exposez-votre-instance-sur-internet/.

    Licence de ce document : Creative Commons (CC BY-NC-ND 4.0)

    CETTE DOCUMENTATION EST LIVRÉE “EN L’ÉTAT”, SANS GARANTIE D’AUCUNE SORTE ET DISTRIBUÉE DANS UN BUT ÉDUCATIF EXCLUSIVEMENT. L’AUTEUR, CONTRIBUTEURS DE CETTE DOCUMENTATION OU ©MYTINYDC.COM NE SAURAIENT EN AUCUN CAS ÊTRE TENUS RESPONSABLES DES DOMMAGES DIRECTS OU INDIRECTS POUVANT RÉSULTER DE L’APPLICATION DES PROCÉDURES MISES EN ŒUVRE DANS CETTE DOCUMENTATION, OU DE LA MAUVAISE INTERPRÉTATION DE CE DOCUMENT.

    Poster un commentaire

    Désolé, la réponse à la question Captcha est incorrecte
    Merci. le message est dans le tuyau :)
    Désolé, il y a un problème dans le tuyau, veuillez réessayer plus tard :(
    Un champs est invalide

    Commentaires (non traduits)

    Pas de commentaires