Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
utilisateurs:filerem1:nextcloud-serveur [Le 09/01/2018, 17:01]
filerem1 supprimée
— (Version actuelle)
Ligne 1: Ligne 1:
-====== NEXTCLOUD SERVEUR ====== 
  
-{{ :​utilisateurs:​filerem1:​nextcloud:​nextcloud_logo.small.png?​direct&​200|}} 
- 
-Nextcloud est un [[:​serveur|serveur]] de stockage et de [[:​partage|partage]] de fichiers en ligne. ​ 
- 
-Sa grande force réside dans le fait que vous contrôlez entièrement vos données, l'​emplacement du stockage, le partage, la suppression,​ etc. Tout reste sous votre contrôle, à la différence des services comme Dropbox ou Google Drive, dont on ne peut être sur de ce qu'ils font de vos données. 
- 
-Techniquement Nextcloud est un fork d'​[[:​owncloud|Owncloud]]. Il en reprend les bases, mais son développement est plus actif, et il bénéficie de plus d'​application qu'​Owncloud. 
- 
-NextCloud utilise le protocole [[:​webdav|WebDAV]] qui permet d'​accéder au serveur de façon transparente via un "​disque réseau"​ sur Linux, Windows ou Mac. Il existe également des logiciels de synchronisation pour de très nombreuses plateformes (Linux, Mac, Windows, Android, etc) afin de récupérer une copie locale de vos fichiers et pouvoir travailler hors connexion. ​ 
- 
-NextCloud ne s'​arrête pas au simple partage de fichiers. Il permet par exemple de gérer votre calendrier, vos contacts, vos marque-pages et même votre musique. Il intègre les services commerciaux de partage en ligne devenant un point d'​accès central pour Amazon S3, Dropbox, Google Drive, OpenStack Swift, voire d'​autres serveurs NextCloud. Un système de plugins (apps) permet d'​installer et/ou de développer d'​autres applications en fonction de ce qui vous intéresse. Il gère également le partage de fichier / dossier via un simple clic droit dans votre explorateur de fichier (Explorer, Nautilus, Nemo, etc.). 
- 
- 
-<note tip>​Cette page traite de l'​installation et de la configuration d'un **serveur Nextcloud**. Pour Installer le client, se rapporter à la page [[:​nextcloud-client|nextcloud-client]]</​note>​ 
- 
-===== Pré-requis =====  
- 
-  * Disposer d'un [[:​serveur|serveur]] 
-  * Avoir un [[:​lamp|serveur Web avec PHP]] installé dessus (ici [[:​apache2|Apache2]]),​ avoir activé le [[:​tutoriel/​securiser_apache2_avec_ssl#​mise_en_application_avec_le_serveur_http_apache2|mode SSL d'​apache]] (https), avoir un [[:​openssh|serveur ssh]] (conseillé),​ ainsi qu'une base de donnée (ici [[:​mysql|mysql]]). 
-  * Savoir ajouter une tâche [[:​cron|CRON]] 
-  * Savoir installer et activer des [[:​modules_php|modules php]] et [[:​apache2|apache]]. 
-  * Savoir créer une base de donnée [[:​mysql|MySQL]]. 
-  * Avoir un pc client avec un naviguateur web et un client ssh. 
-  * Disposer des [[:​sudo|droits d'​administration]] sur le serveur. 
-  * Disposer d'une connexion à Internet configurée et activée. 
-  * Savoir utiliser le [[:​terminal|terminal]] 
-<note tip>La procédure décrite ici concerne une installation sur un serveur ubuntu/ debian nu (fresh install). Il vous faudra l'​adapter en fonction de vos besoin, par exemple si vous l'​installez sur un hébergement mutualisé, un vps avec hyperviseur web type [[:​webmin|webmin]], ​ [[:​virtualmin|virtualmin]],​ cpanel ou autre.</​note>​ 
-===== Installation =====  
-==== Téléchargement et Extraction de Nextcloud ==== 
- 
-Le téléchargement se fait via le site officiel : [[https://​nextcloud.com/​install/#​instructions-server]] 
- 
-L’installateur se présente sous la forme d'une archive [[:​zip|ZIP]],​ à dézipper à la racine de votre serveur web. L'​extraction va créer un dossier nextcloud. Déplacez son contenu à la racine du serveur, et supprimez le dossier vide. Rien d'​autre ne dois être présent à la racine de votre serveur. Nextcloud vérifie l’intégrité des fichier, et le scan va échouer s'il reste d'​autres éléments. 
- 
-==== Accès à l'​installateur ==== 
-{{ :​utilisateurs:​filerem1:​nextcloud:​nextcloud_module_php_install.png?​direct&​500|}} 
- 
-Rendez-vous via votre navigateur sur la page web de votre serveur, soit par son domaine si vous l'avez configuré, soit par son adresse IP. 
- 
-==== Installation des modules PHP manquant ==== 
- 
-La page d'​installation indique qu'il manque des modules PHP. Connectez vous en [[:​ssh|SSH]] avec les [[:​sudo|droits d'​administration]] sur votre serveur, puis [[tutoriel:​comment_installer_un_paquet#​en_ligne_de_commande|installez ces paquets]] :  
- 
-   $ apt install php-zip php-gd php-curl 
-  ​ 
- Les installer ne suffit pas, il faut les activer, et redémarrer le serveur web pour que ceux ci soient pris en compte :  
-   $ phpenmod zip gd curl 
-puis on redémarre le serveur Apache :  
-   $ service apache2 restart 
- 
-On revient sur le navigateur web, et on raffraichit la page, vous devriez maintenant voir l'​étape suivante. 
-  
-==== Identifiant, ​ Emplacement de stockage et Base de donnée ​ ==== 
-{{ :​utilisateurs:​filerem1:​nextcloud:​nextcloud_install_server-2.png?​direct&​200|}} 
-A cette étape, vous allez créer le fichier de configuration du serveur. ​ 
- 
-  * Choisissez votre Identifiant et mot de passe d'​administration. c(est ce compte qui servira à créer d'​autres comptes, à mettre à jour, à installer des applications,​ etc. 
- 
- 
-  * Choisissez le répertoire des données. Vous pouvez laissez tel quel, ou bien changer l'​emplacement,​ par exemple si vous avez un disque supplémentaire,​ ou distant. Si vous changez l'​emplacement,​ il vous faudra [[:​droits|donner les droits]] au serveur web pour pouvoir y accéder. Sinon, vous pourrez accéder au serveur, mais vous ne pourrez rien y stocker. Et veiller aussi à ce que ces emplacements soient [[:​montage|monté au démarrage]] avec les bons droits. 
- 
- 
-  * Créer la base de données. Avant de remplir ce champs, il nous faut avoir la base de donnée déjà créé. Dans le cas de Mysql, nous allons la créer en ligne de commande via ssh. Dans votre session ssh en administrateur,​ éxécutez ces commande :  ​ 
- 
-<​code>​$ mysql -u utilisateur -p    # remplacer utilisateur par l'​utilisateur de votre base de données</​code>​ 
-  
-<​code>​$ >CREATE DATABASE nom_de_la_base; ​     # remplacer nom_de_la_base par ce que vous voulez. n'​oubliez pas le ; puis valider.</​code>​ 
-  
-<​code>​$ >show databases; ​    # on vérifie que la base à bien été créé. si vous la voyez dans la liste, parfait! Sinon, renseignez vous sur les problèmes de création de base mysql.</​code>​ 
- 
-  * **Remplissez maintenant l'​encart base de données :** 
-  - Utilisateur de la base de donnée ;  
-  - Mot de passe de la base de donnée ; 
-  - Le nom de la base de donnée ;  
-  - L'​emplacement de la base donnée et le numéro du port, par défaut localhost (signifie qu'​elle est sur la même machine que le serveur web) 
-  * Cliquer ensuite sur **"​Terminer l'​installation"​** , l'​installation prend un moment, fonction de la puissance de votre serveur. Si vous tombez sur une **"​Erreur 500"​**,​ rechargez la page jusqu'​à ce que l'​installation finisse (F5). 
-  * Vous avez terminé l'​installation,​ dès que vous verrez la page de connexion. On passe ensuite à la configuration des performances du serveur . 
- 
-===== Configuration des Performances ===== 
-Connectez vous avec vos identifiant et mot de passe choisi à l'​installation,​ puis, sur l'​interface cliquez sur la roue dentée {{:​utilisateurs:​filerem1:​nextcloud:​nextcloud_icone_parametre-2.png?​nolink&​20|}} en haut à droite, sur le bandeau bleu, puis "​**Administration**"​ 
- 
-Vous voyez en haut de la page le titre **"​Avertissement de sécurité & configuration"​**,​ nous allons nous occuper de tout cela. 
- 
-==== Redirection https automatique ==== 
-Par défaut, même après avoir acitvé le mode SSL d'​apache et déclaré votre site,  vous y avez accès en http. Nous allons paramétrer une redirection automatique de http vers https, comme le[[ https://​docs.nextcloud.com/​server/​9/​admin_manual/​configuration_server/​harden_server.html#​use-https|préconise la documentation Nextcloud]]. 
- 
-Ouvrez votre session SSH en administrateur,​ puis  et editez le fichier de configuration de votre site, qui se trouve dans ce dossier :  
-<​code>​$ nano /​etc/​apache2/​sites-available/"​votre-site.conf" ​  # remplacer "​votre-site.conf par le nom correct de votre fichier de configuration</​code>​ 
-Rajouter en dessous de la ligne **"​ServerName cloud.nextcloud.com"​**:​ 
-<​code>​ 
-ServerSignature Off 
-RewriteEngine On 
-RewriteRule ^ https://​%{SERVER_NAME}%{REQUEST_URI} [END,​QSA,​R=permanent] 
-</​code>​ 
-Un petit **CTRL + O** pour enregistrer,​ un **CTRL + X** pour quitter. On active le module **rewrite** d'​apache2 pour que ces lignes soient prise en compte : 
-<​code>​$ a2enmod rewrite </​code>​ 
-puis on redémarre le serveur web pour prendre en compte la configuration:​ 
-<​code>​$ service apache2 restart </​code>​ 
-On rafraîchit la page web. Si vous n'avez pas de certificat validé par une autorité, cela vous occasionnera une erreur SSL. Passez outre la recommandation,​ vous pourrez changer de certificat SSL plus tard. 
-==== Activer HSTS ( HTTP Strict-Transport-Security ) ==== 
-Toujours en accord avec les [[https://​docs.nextcloud.com/​server/​9/​admin_manual/​configuration_server/​harden_server.html#​enable-http-strict-transport-security|recommandations officiel]], "HTTP Strict Transport Security"​ ([[https://​fr.wikipedia.org/​wiki/​HTTP_Strict_Transport_Security|wikipedia]]) est un organe de sécurité supplémentaire contre les attaques de type man-in-the-middle. Il est recommandé de l'​activer. 
- 
-Pour ce faire, nous allons retourner dans notre session SSH, éditer le fichier de configuration du serveur, mais cette fois celui qui s'​occupe du port 443 (https). Il se termine généralement par "​exemple-**ssl**.conf 
- 
-Rajouter en dessous de "​**ServerName**"​ :  
-<​code>​ 
-<​IfModule mod_headers.c>​ 
-Header always set Strict-Transport-Security "​max-age=15768000;​ includeSubDomains;​ preload"​ 
-</​IfModule>​ 
-</​code>​ 
-On enregistre, on quitte l'​éditeur,​ puis on active le module correspondant dans apache, pour que ces lignes soient prise en compte :  
-<​code>​a2enmode headers</​code>​ 
-On redémarre le serveur apache pour que la configuration soit prise en compte, puis on recharge la page web du serveur nextcloud. La ligne traitant de "HTTP Strict-Transport-Security"​ à disparu, nous pouvons continuer. 
-==== Cache mémoire ==== 
-Le cache mémoire est conseillé pour améliorer la réactivité de votre serveur. Les fichiers les plus demandé sont mis en cache mémoire pour une plus grande disponibilité. deux caches sont disponible, mais non obligatoire. Vous n'​êtes pas obligé de les mettre en place,à vous de choisir. ​ 
- 
-Dans la [[https://​docs.nextcloud.com/​server/​9/​admin_manual/​configuration_server/​caching_configuration.html#​configuring-memory-caching|documentation officiel]], le cache php-apc est désigné comme obsolète. Elle préconise d'​utiliser [[https://​docs.nextcloud.com/​server/​9/​admin_manual/​configuration_server/​caching_configuration.html#​id4|REDIS]] ou [[https://​docs.nextcloud.com/​server/​9/​admin_manual/​configuration_server/​caching_configuration.html#​id2|APCu]] que nous utiliserons ici. 
- 
-Reprenez votre session SSH, allez à la racine de votre serveur nextcloud **( en général dans /​var/​www/​html ) ** 
- 
-On installe et on active le module php-apcu 
-<​code>​ 
-$ apt install php-apcu 
-$ phpenmod apcu 
-</​code>​ 
-Puis on édite le fichier config.php se trouvant dans le dossier config du serveur. 
- 
-rajoutez une ligne à la fin, avant la dernière parenthèse: ​ 
-<​code>​$ '​memcache.local'​ => '​\OC\Memcache\APCu'</​code>​ 
-On enregistre, on quitte, on redémarre le serveur web, et on recharge la page web nextcloud : la ligne concernant le cache est partie. 
- 
- 
- 
- 
- 
- 
-==== PHP OPcache ==== 
-L'​OPcache est une recommandation de la [[https://​docs.nextcloud.com/​server/​12/​admin_manual/​configuration_server/​server_tuning.html#​enable-php-opcache|documentation]]. Il est [[https://​mnt-tech.fr/​blog/​opcache-configuration-et-fonctionnement/​|complémentaire]] du cache mémoire Apcu ou Redis. 
-Nous allon éditer le fichier php.ini, pour activer la prise en charge d'​OPcache. 
-<​code>​$ nano /​etc/​php/​7.x/​apache2/​php.ini ​   # remplacez 7.x par votre version de php</​code>​ 
-rajouter, tout en bas du fichier :  
-<​code>​ 
-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 
-</​code>​ 
- On enregistre, on quitte, on redémarre le serveur web, et on recharge la page web nextcloud : Tous les tests on réussi, le serveur est correctement configuré. 
-Pour autant, il reste une dernière configuration à effectuer : le [[:​cron|CRON]] job. 
-==== Configurer le CRON ==== 
-Nextcloud utilise un cron pour gérer des taches de manière répétitive. Par défaut, il est configuré pour utiliser [[https://​fr.wikipedia.org/​wiki/​Ajax_(informatique)|AJAX]],​ mais qui à le désavantage de ne fonctionner que via l'​explorateur web. Pour une utilisation via l'​application,​ il est [[https://​docs.nextcloud.com/​server/​12/​admin_manual/​configuration_server/​background_jobs_configuration.html#​cron|recommandé]] d'​utiliser le [[:​cron|CRON]] de votre serveur, paramétré avec l'​utilisateur qui gère votre site (par défaut www-data) 
- 
-Nous allons appeler le fichier cron.php se trouvant à la racine de votre serveur web toutes les 15 minutes, par l'​utilisateur www-data. ( à adapter selon votre configuration serveur) 
-<​code>​ 
-$ crontab -u www-data -e 
-</​code>​ 
-À la dernière ligne, rajouter le cron de 15 minutes :  
-<​code>​ 
-$ */15  *  *  *  * php -f /​var/​www/​cron.php 
-</​code>​ 
-Quittez en enregistrant,​ puis vérifiez la configuration par  
-<​code>​$ crontab -u www-data -l 
-*/15  *  *  *  * php -f /​var/​www/​cron.php 
-</​code>​ 
- 
-  
-Votre serveur Nextcloud est maintenant installé et configuré selon les recommandations de l'​éditeur. Pour configurer le client, rendez vous ici : [[:​nextcloud-client|NEXTCLOUD CLIENT]] 
-===== Voir aussi ===== 
-  
-  * **(en)** [[https://​nextcloud.com/​|Site officiel du logiciel]] 
-  
----- 
-//​Contributeurs principaux : [[utilisateurs:​filerem1]],​ [[utilisateurs:​bcag2]].