====== nextcloud installation ====== * Objet : Installation de nextcloud * Niveau requis : {{tag> avisé}} * Commentaires : //Installation de nextcloud et des applications nextcloud les plus utiles.// * Débutant, à savoir : [[:doc:install:install|Installer Debian]], [[:doc:systeme:commandes:gnu_linux|utiliser les commandes de bases]], [[:doc:reseau:ssh|accéder en ssh à son serveur]] et [[:doc:editeurs:vim:vim|utiliser vim]] ou [[:doc:editeurs:nano|nano]] sont un minimum... * Suivi : {{tag>à-placer}} * Création par [[user>Hassassin]] 17/08/2017 * Testé par <...> le <...> FIXME * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=235098 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) * relu et augmenté le 24/04/2023 par lagrenouille **Nota :** Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! ===== Introduction ===== **ATTENTION !** Cette documentation suit l'installation d'une Debian 9 (stretch) (il est donc largement obsolète) - **sans environnement de bureau** //([[doc:systeme:console|ligne de commande uniquement]])// et - **avec une connexion internet fonctionnelle** ! ===== Qu'est-ce que nextcloud ? ===== **[[https://nextcloud.com/|Nextcloud]]** est une solution client/serveur pour héberger ses fichiers et y accéder à travers une interface conviviale au même titre que **Dropbox**, **Google Drive**, **OneDrive**, **Amazone cloud drive** et **Box**, pour ne citer que les solutions les plus connues. **Nextcloud** est un **fork** //(un dérivé)// du projet initial qui se nomme **ownCloud**. \\ Aujourd'hui le développement de la solution **Nextcloud** est **plus actif** que celui d'**ownCloud**. \\ Ce qu'il faut retenir de la différence entre **Nextcloud** et **ownCloud** est qu'**ownCloud** est à présent dans une logique commerciale... ===== Pourquoi installer nextcloud ? ===== Voilà quelques années que j'estime que de ne pas pouvoir accéder à ses propres données n'importe où, n'importe quand, est très regrettable quand on sait que nous //"respirons"// internet. //Merci la démocratisation des smartphones// ;-) Sans être paranoïaque, **Google**, **Apple**, **Microsoft** & **co** ont suffisamment de pouvoirs. Allons-nous en plus leur confier l'accès libre à toutes nos données ? :-P - **Nextcloud** et ses applications permettent une alternative aux chapelets Google Drive/Gmail/G.Agenda/G.Docs... ou à Microsoft les oneDrive/outlook/office365...) - **Nextcloud** est **open source**, distribué **gratuitement** et **installable sur son propre serveur**. - **Nextcloud** intègre maintenant OnlyOffice, qui permet de travailler à plusieurs sur un même texte ===== Installation de base ===== En suivant cette documentation : - Vous hébergerez vos fichiers sur votre propre serveur. - Vous aurez un traitement de texte, un tableur, un agenda et un client email en ligne. - Vous pourrez effectuer des recherches basées sur le contenu de vos documents. (Et non que par le nom du fichier/dossier). - Vous pourrez instaurer des quotas d'espaces disques aux autres usagers. - Et plus, selon les applications nextcloud à venir et le temps disponible des contributeurs ! ===== Préparation ===== On commence par se rendre sur le [[https://docs.nextcloud.com/server/12/admin_manual/installation/system_requirements.html|site officiel de nextcloud]] pour vérifier les prérequis à la solution. ==== Prérequis matériels ==== Il est dit que Nextcloud nécessite un minimum de 128MB de mémoire vive mais qu'il est recommandé d'avoir au moins 512MB. \\ Il est dit aussi que selon le nombre d'utilisateurs et la quantité de données à traiter, ce prérequis peut augmenter. Memory requirements for running an Nextcloud server are greatly variable, depending on the numbers of users and files, and volume of server activity. Nextcloud needs a minimum of 128MB RAM, and we recommend a minimum of 512MB. On ne parle ici que de la solution nextcloud de base. \\ L'ajout d'applications //(ou plugin)// feront grimper ce minimum requis. Si votre serveur dispose de 2 à 4GB de mémoire vive et que le nombre d'utilisateurs ne dépasse pas une utilisation //"familiale"//, vous ne devriez pas rencontrer de problème. Autrement, il faudra peut-être user de la carte bancaire pour mettre à jour/changer son serveur ou se passer de certaines applications telle que : * **Collabora** qui permet d'avoir une suite bureautique en ligne //(traitement de texte, tableur, etc)// * [**OBSOLÈTE**] et/ou **Nextant** qui permet de scanner le contenu des documents avec fonction [[https://fr.wikipedia.org/wiki/Reconnaissance_optique_de_caractères|OCR]] en vu de recherches plus pertinentes. Personnellement, je ne me suis pas encore penché sur des tests de charge mais je compléterai ces infos dès que possible. ==== Prérequis logiciels ==== Nextcloud nécessite : * Un [[doc:systeme:gnu-linux|système GNU linux]] * Une base de données * Un serveur web avec php * Un certificat SSL (non mentionné mais obligatoire pour certaines applications) * Un nom de domaine (obligatoire pour obtenir un certificat SSL) Comme indiqué plus haut : \\ **cette documentation est basée sur une Debian 9 (stretch) fraîchement installée !** \\ \\ Cette documentation est aussi à adapter selon votre système. Pour les utilisateurs de distributions basées sur le projet Debian comme **Ubuntu** ou **Linux Mint**, l'essentiel de la procédure est valable à condition d'être sûr des montures((mises à jour)) récentes de ces distributions. \\ \\ //Je tenterai d'indiquer les endroits où vous devrez vous méfier.// ;-) ==== Les étapes à suivre ==== * Acquisition d'un nom de domaine et paramétrage * Installation d'un serveur de bases de données * Installation de MariaDB * Installation d'un serveur web * Installation du serveur web Apache2 et de PHP7 * Création d'un virtualhost Apache pour PhpMyAdmin * Création d'un virtualhost Apache pour nextcloud * Installation des certificats SSL * Installation de let's encrypt * Installation de PhpMyAdmin * Création de la base de données et utilisateur nextcloud ==== Nom de domaine et paramétrage ==== Un nom de domaine permet entre autre d'accéder à //"un serveur"// relié au réseau internet par un nom plutôt que par une adresse IP. \\ Il est plus commode de taper dans son navigateur : * %%https://debian-facile.org%% plutôt que %%https://151.80.145.212.%% * Si votre serveur est hébergé chez un prestataire vous devez probablement avoir un nom de domaine compris dans votre offre. \\Autrement il faudra en faire l'acquisition. * Si votre serveur est hébergé en local (à votre domicile), vérifiez que vous disposez bien d'une **adresse IP publique fixe** ! (Seul votre fournisseur d'accès à internet peut intervenir à ce niveau. \\ **Attention,** certains fournisseurs ne permettent pas l'obtention d'une IP fixe pour les offres "grand public". Dans ce cas, changez d'offre, d'opérateur ou optez pour un hébergeur...) Vous pouvez faire l'acquisition d'un nom de domaine chez n'importe quel prestataire comme : \\ [[https://www.gandi.net/domaine|Gandi]], \\ [[https://www.ovh.com/fr/domaines/|OVH]], \\ [[https://www.online.net/fr/nom-de-domaine|Online.net]]... À vous de comparer les prix. \\ Que vous choisissiez du *.fr, *.com, *.eu ou *.tartempion, pour la mise en place de la solution nextcloud on s'en fiche totalement. //En jetant un coup d'oeil rapide j'ai vu chez Gandi du *.space pour 1€/an...// Oubliez tout de suite l'idée d'un nom de domaine gratuit en cherchant juste à économiser de 1 à 10€ par an ! Si vous cherchez un hébergeur à petit budget pour un serveur dédié ou serveur dédié virtuel, regardez du côté de : * [[https://www.kimsufi.com/fr/|Kimsufi]], * [[https://www.online.net/fr/serveur-dedie|Online.net]], * [[https://www.ovh.com/fr/vps/|OVH (VPS)]]. Attention à bien regarder les caractéristiques techniques des machines : - processeur, - mémoire vive et - espace de stockage. Une fois le nom de domaine acquis, accédez à son interface d'administration //(voir l'email reçu de votre prestataire)// pour paramétrer la zone. L'objectif est de faire pointer votre nom de domaine vers l'adresse IP de votre serveur en créant au moins un enregistrement : **Sous domaine ou nom [*] Type [A] Value [//adresse_ip_serveur//]** Impossible de vous détailler la procédure ici puisque l'interface d'administration est propre au prestataire. \\ Au pire, contactez leur service clients. \\ Soyez patient, les enregistrements prennent souvent plusieurs heures avant leur prise en charge. \\ Vérifiez régulièrement à l'aide de la commande : ping mon_nom_de_domaine Exemple : \\ Si j'ai **acheté** le //nom de domaine// ''toto.fr '' j'écrirai : ping toto.fr qui doit me retourner une réponse affichant l'''adresse IP '' de mon serveur. Nous allons également faire une petite modification du fichier ''/etc/hosts'' pour nos futurs tests en local à l'aide de curl. L'intérêt de réaliser des tests en local puis à distance c'est de faciliter la recherche en cas de problème ! ;-) À l'aide de l'éditeur [[doc:editeurs:nano|nano]] on ouvre le fichier ''/etc/hosts '' ainsi : nano /etc/hosts Et on rajoute ces lignes où le //nom de domaine// : ''toto.fr '' est à remplacer par le //nom de domaine// **que vous avez acquis !!!** : 127.0.0.1 toto.fr 127.0.0.1 madb.toto.fr 127.0.0.1 nuage.toto.fr 127.0.0.1 bureau.toto.fr Remplacer le //nom de domaine// pris en exemple pour ce tuto : ''toto.fr'' par votre ''nom de domaine''. \\ Remplacer aussi les noms : ''madb '', ''nuage '' et ''bureau '' par ceux que vous allez utiliser pour accéder à votre base de données, //nextcloud// et //collabora//. ==== Serveur de bases de données ==== Nextcloud est compatible avec différentes bases de données : * [[https://mariadb.org/|MariaDB]], * [[https://www.mysql.com/fr/|MySQL]], * [[https://www.postgresql.org/|PostgreSQL]]... A moins d'une raison particulière, restons avec MariaDB qui est libre et très répandu //(cela le rend plus facile pour trouver de l'aide et pour faire face à l'installation de futurs projets)//. \\ MariaDB est un fork //(dérivé)// de MySQL. //(MySQL est devenu la propriété d'Oracle.)// Pour les utilisateurs d'autres distributions non basés sur Debian, la commande apt ne fonctionnera pas et les paquets peuvent se nommer autrement. En premier lieu on passe en [[doc:systeme:superutilisateur|utilisateur root]] en utilisant : [[doc:systeme:su|la commande su]] : su === Installation de MariaDB === On fait une [[doc:systeme:apt:apt|mise à jour de la liste des paquets]] : apt update Et on en profite pour mettre à jour son système : apt full-upgrade On lance l'installation de MariaDB : apt install mariadb-server Un grand nombre de paquets supplémentaires sont proposés (plus d'une trentaine), c'est normal. \\ On répond par 'O'ui. Sécurisons un peu notre installation de MariaDB : \\ On lance un assistant prévu à cet effet : mysql_secure_installation Il suffit alors de répondre aux questions : **La première question** vous demande de : * //rentrer le mot de passe actuel de root.// \\ Il n'y en a pas ! On laisse vide et on valide par ''Entrer'' du clavier. * //On vous demande si vous souhaitez définir un mot de passe ?// \\ On répond : Oui (Y) et //on le saisi à la suite.// (**Ne soyez pas boulet**, rappelez-vous en ou mieux notez-le avec [[doc:systeme:keepassx|keepassx]] par exemple !) [//J'utiliserai le mot de passe :// ''$MDPmaria-root%'' //les fois où nous aurons besoin de le renseigner tout au long de cette documentation.//] **Questions suivantes :** * //Supprimer les utilisateurs anonymes ?// Oui (Y) * //Interdire les connexions distantes pour root ? // Oui (Y) Il ne pourra alors que se connecter en local. \\ //Si vous trouvez ça étrange, passez sur le forum ou sur [[asso:salon-irc-df|le salon irc]] pour demander des explications détaillées.// **Avant-dernière question :** * //Supprimer la base de données de test ?// Oui (Y) **Et dernière question :** \\ * //Recharger les droits ?// Oui (Y) On se connecte maintenant à MariaDB en tapant : mysql ou mariadb * Votre prompt (début de ligne) devrait à présent apparaître sous la forme : ''MariaDB [(none)]> '' * Dans MariaDB on saisi les commandes suivantes : \\ (**ATTENTION !** Changer $PMAmdp% pour le mot de passe que vous souhaitez et 'adminDB' par le nom d'utilisateur que vous souhaitez ) \\ **ATTENTION !** le point virgule ';' en fin de ligne compte ! \\ \\ CREATE USER 'adminDB'@'localhost' IDENTIFIED BY '$PMAmdp%'; Ce qui nous permet de créer un utilisateur MariaDB pour l'application PhpMyAdmin à venir. \\ * Puis on lui donne tous les droits : \\ GRANT ALL PRIVILEGES ON *.* TO 'adminDB'@'localhost' WITH GRANT OPTION; * On //réinitialise// pour que ce soit pris en compte : FLUSH PRIVILEGES; * * Enfin, on sort de MariaDB : exit //Bizarre, on a installé MariaDB mais toutes les commandes font référence à MySQL ?// \\ C'est simplement que **MariaDB** garde une compatibilité maximum avec ce qui a été créé initialement pour **MySQL** ! ==== Installation d'un serveur web ==== Là encore, nextcloud est compatible avec au moins deux serveurs web différents : * [[https://httpd.apache.org/|Apache]] et * [[https://nginx.org/en/|Nginx]]. Nginx se dit moins gourmand en ressource mais même si Apache peut se montrer plus gourmand, il offre l'avantage d'être plus populaire (plus facile de trouver de l'aide) et plus complet. \\ //(Penser à de futurs projets...)// ;-) === Qu'est-ce que PHP ? === PHP est un langage de programmation très populaire pour la réalisation de site internet dynamique. \\ Les sites développés dans ce langage nécessitent d'être hébergés sur un serveur ayant PHP d'installé. Si vous voulez en savoir plus, direction : [[https://fr.wikipedia.org/wiki/PHP|Wikipédia]] ! === Apache2 et PHP7 === Là, on ne va pas s'embêter on va tout installer en même temps. //(Le serveur web Apache, PHP7 et ses modules.)// Pour les utilisateurs d'autres distributions non basées sur Debian : \\ la commande apt ne fonctionnera pas et les paquets peuvent se nommer autrement ! apt install curl apache2 php7.4 php7.4-mysql php7.4-mbstring php7.4-gd php7.4-json php7.4-curl php7.4-mbstring php7.4-intl php7.4-mcrypt php-imagick php7.4-xml php7.4-zip En s'installant, Apache2 crée automatiquement un premier virtualhost et une page web. \\ Parfait, ça va nous permettre de tester rapidement si l'installation est correcte : \\ Vérification de fonctionnement d'Apache2 en local en tapant : curl http://localhost | grep title Vous devriez avoir en retour : Apache2 Debian Default Page: It works Si quelqu'un a un lien à soumettre concernant l'utilisation de curl. FIXME Pour les utilisateurs d'autres distributions non basées sur Debian, les répertoires seront peut-être différents. - On continue en testant la **prise en charge de PHP** : \\ - On créé un fichier test.php contenant la fonction phpinfo() : echo "" >> /var/www/html/test.php - On vérifie que Apache2 nous délivre correctement le fichier : curl http://localhost/test.php | grep En retour on doit avoir : phpinfo() Si la configuration réseau du serveur est bien paramétrée, vous devriez accéder aux deux pages testées depuis un poste distant et un navigateur. Dans un navigateur, en tapant l'adresse du serveur. \\ Exemples : * %%http://toto.fr%% et * %%http://toto.fr/test.php%% ou son adresse IP. \\ Exemples: * http://81.85.89.111 et * http://81.85.89.111/test.php vous devriez voir une page ''Apache2...'' et ''PHP...'' . (Voir illustrations ci-dessous) : \\ \\ **Illustration Apache 2** : \\ \\ {{/file-Reaa41b38b70c8a2493a241f602cf9b20.png}} \\ \\ **Illustration PHP** : \\ \\ {{https://debian-facile.org/images/file-R8f14624b070cfd660c8bdd1c530a047f.png}} \\ ==== Création d'un virtualhost Apache pour PhpMyAdmin ==== Clairement, cette documentation n'a pas vocation à traiter toutes les possibilités qu'offre Apache2. Un bookin ne suffirait pas... \\ Cette documentation ira donc à l'essentiel pour l'objectif fixé : installer nextcloud. \\ Si vous souhaitez en savoir plus, consulter : * [[https://httpd.apache.org/docs/2.4/fr/|la documentation officielle d'apache]]. === Qu'est-ce qu'un virtualhost Apache ? === Apache (comme d'autres serveurs web) est capable de servir virtuellement une infinité de sites sur une même machine/instance. Ainsi, http://toto.fr, http://bidule.com et http://trucmuche.eu peuvent très bien se trouver sur la même machine/instance. On créé des virtualhost pour dissocier des sites, qui pourront alors recevoir des paramètres propres à chacun. Notre objectif ici étant d'héberger l'application PhpMyAdmin et de s'y connecter en entrant dans le navigateur : \\ %%http://madb.toto.fr%% ou %%http://phpmyadmin.toto.fr%%. === Qu'est-ce que PhpMyAdmin ? === Nous avons installé il y a un instant le serveur de bases de données MariaDB. \\ On pourrait très bien gérer l'intégralité de notre serveur de bases de données en ligne de commande mais une erreur peut être commise et en cas de problème une personne n'ayant aucune connaissance du langage SQL aura bien du mal à se sortir d'affaire. :?: Pour un néophyte, il est alors plus prudent de disposer d'une interface graphique plus parlante que par exemple : UPDATE matable SET nom = 'Bobo' WHERE id = 1;\\ Alors qu'avec une interface graphique un simple clic sur le bouton ''Modifier'' fera l'affaire. L'interface graphique que l'on installera est : * [[https://www.phpmyadmin.net/|PhpMyAdmin]] Il existe d'autres solutions, voir "adminer" Pour les utilisateurs d'autres distributions non basées sur Debian, les répertoires seront peut-être différents. L'idée est d'obtenir http://madb.toto.fr mais si "madb" ne vous plait pas, vous changez chaque fois que "madb" apparaît dans ce texte hein..! ^_^ - On commence par [[doc:systeme:mkdir|créer le dossier]] qui accueillera très bientôt phpmyadmin : mkdir /var/www/madb - On duplique le fichier de configuration du virtualhost par défaut pour en créer un nouveau : cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/madb.conf - On crée un lien symbolique du nouveau fichier pour qu'il soit chargé par le serveur Apache à son redémarrage : ln -s /etc/apache2/sites-available/madb.conf /etc/apache2/sites-enabled/madb.conf - Puis on modifie avec nano le fichier original du lien symbolique... (celui situé dans ''/etc/apache2/sites-available/''...) \\ Et si vous vous trompez, ben... ça revient au même :-P Vous corrigez ici : nano /etc/apache2/sites-available/madb.conf Pour plus d'info sur les [[:doc:systeme:ln|liens symboliques]]. Dans notre fichier de configuration, à l'aide de Nano nous allons juste [[doc:programmation:commenter|décommenter]] et renseigner ''ServerName'' et ''DocumentRoot'' ainsi : ServerName madb.toto.fr ServerAdmin webmaster@localhost DocumentRoot /var/www/madb ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined **ATTENTION !!!** Une fois les modifications faites, pensez à sauvegarder ! On crée un fichier qui nous permettra de faire un test dans un instant : echo "Vhost madb OK!" >> /var/www/madb/index.php On redémarre le serveur Apache (pour qu'il prenne en charge le virtualhost créé) : systemctl restart apache2 [[:doc:systeme:admin:systemd|Pour en savoir plus sur "systemctl".]] Et on teste : curl http://madb.toto.fr On devrait avoir en retour : Vhost madb OK! Et : curl http://toto.fr | grep title Devrait nous donner : Apache2 Debian Default Page: It works === Création d'un virtualhost Apache pour nextcloud === Ben... On va refaire presque tout pareil... Pour les utilisateurs d'autres distributions non basées sur Debian, les répertoires seront peut-être différents. L'idée est d'obtenir http://nuage.toto.fr mais si ''nuage'' ne vous plaît pas, vous changez chaque fois que ''nuage'' apparaît hein..! =) - On commence par créer le dossier qui accueillera très bientôt nextcloud : mkdir /var/www/nuage - On duplique le fichier de configuration du virtualhost par défaut pour en créer un nouveau : cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/nuage.conf - On créé un lien symbolique du nouveau fichier pour qu'il soit chargé par le serveur Apache à son redémarrage : ln -s /etc/apache2/sites-available/nuage.conf /etc/apache2/sites-enabled/nuage.conf - Puis on modifie avec nano le fichier original du lien symbolique... (//celui situé dans// : ''/etc/apache2/sites-available/''...) : nano /etc/apache2/sites-available/nuage.conf ServerName nuage.toto.fr ServerAdmin webmaster@localhost DocumentRoot /var/www/nuage ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined - On créé un fichier qui nous permettra de faire un test dans un instant : echo "Vhost nuage OK!" >> /var/www/nuage/index.php - On redémarre le serveur Apache (pour qu'il prenne en charge le virtualhost créé) :systemctl restart apache2 - Et on teste : curl http://nuage.toto.frOn devrait avoir en retour : Vhost nuage OK! - Et enfin : curl http://toto.fr | grep title Devrait encore nous donner : title>Apache2 Debian Default Page: It works ==== Installation des certificats SSL ==== Il y aurait bien à dire sur les certificats (SSL) mais, je n'en ai pas vraiment les compétences, ni le courage. \\ Ce qui est communément admis, c'est qu'aujourd'hui un site non **https** (//communication crypté//) n'a presque plus lieu d'être. \\ C'est d'autant plus vrai quand on sait que la case ''porte feuille'' n'est plus obligatoire et que nous nous apprêtons à disposer de nos fichiers (peut-être important) à travers internet... ==== Installation de let's encrypt ==== === Qu'est-ce que //Let's encrypt// ? === L'introduction de [[https://fr.wikipedia.org/wiki/Let%27s_Encrypt|wikipédia]] est parfaite : \\ [[https://letsencrypt.org/|Let's Encrypt]] est une autorité de certification. Cette autorité fournit des certificats gratuits au moyen d'un processus automatisé destiné à se passer du processus complexe actuel impliquant : - la création manuelle, - la validation, - la signature, - l'installation et - le renouvellement des certificats pour la sécurisation des sites internet. Pour les utilisateurs d'autres distributions non basées sur Debian, la commande apt ne fonctionnera pas et les paquets peuvent se nommer autrement. On démarre sont installation apt install letsencrypt python-certbot-apache python-certbot-doc python-acme-doc python-configobj-doc python-cryptography-doc python-cryptography-vectors python-enum34-doc python-funcsigs-doc python-mock-doc python-openssl-doc python-psutil-doc doc-base python-socks python-setuptools-doc python-ntlm Il y a du monde ! Au moins, let's encrypt ne manquera de rien pour faire son job... Et on le lance : letsencrypt En retour vous aurez quelque chose de similaire à : Which names would you like to activate HTTPS for? ------------------------------------------------------------------------------- 1: madb.toto.fr 2: nuage.toto.fr Let's encrypt a automatiquement trouvé nos virtualhost. \\ Appuyer sur ''entrer'' pour le qu'il s'occupe de tous virtualhost détectés. - Entrez une adresse email valide si vous le souhaitez. (C'est préférable) - On accepte les Conditions "//qu'on ne lit jamais//"... (On tape ''A'') - Puis on nous demande si on utiliser exclusivement HTTPS ou non. \\ Pour moi ça sera Oui touche ''2'' , mais vous faites comme vous voulez. Please choose whether HTTPS access is required or optional. ------------------------------------------------------------------------------- 1: Easy - Allow both HTTP and HTTPS access to these sites 2: Secure - Make all requests redirect to secure HTTPS access ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): Et automatiquement, let's encrypt va modifier la configuration de vos virtualhost et planifier l’obtention de nouveau certificats avant leur expirations, etc. Nous allons maintenant jeter un coup d'oeil à nos fichiers de configuration des virtualhosts. ls -l /etc/apache2/sites-enabled/ Résultat : madb-le-ssl.conf Résultat : nuage-le-ssl.conf Parfait ! Let's Encrypt nous a bien créé les fichiers ^_^ On teste. (Soyez attentif, ce coup-ci je teste avec http"S") : curl https://madb.toto.fr Retour : Vhost madb OK! curl https://nuage.toto.fr Retour : Vhost nuage OK! ==== Installation de PhpMyAdmin ==== Pour les utilisateurs d'autres distributions non basées sur Debian, les répertoires seront peut-être différents. On télécharge la dernière version de phpmyadmin. Pour ça, encore faut-il se rendre sur le site officiel : * https://www.phpmyadmin.net avec un navigateur et trouver le lien de téléchargement de la dernière version. \\ À ce jour, sur la page d'accueil, premier bouton en haut à droite. (Que ce soit avec firefox, chrome ou autre logiquement : ''Clic droit'' -> ''copier l'adresse du lien'' pour le coller dans notre terminal précédé de [[doc:reseau:wget|wget]]. \\ Ce qui donnerait à l'heure actuelle : wget https://files.phpmyadmin.net/phpMyAdmin/4.7.3/phpMyAdmin-4.7.3-all-languages.zip Une fois le téléchargement terminé, on décompresse l'archive obtenue dans un dossier nommé ''phma'' du répertoire courant. Attention à adapter la commande avec le nom du fichier que vous avez obtenu. \\ Aujourd'hui c'est **phpMyAdmin-4.7.3-all-languages.zip**, demain le fichier se nommera autrement... **tartempion.zip**... unzip phpMyAdmin-4.7.3-all-languages.zip -d phma On copie le tout dans le dossier créé pour accueillir l'application. (Attention à remplacer //madb// si vous n'avez pas fait ce choix... :!: : cp -r phma/phpMyAdmin-4.7.3-all-languages/* /var/www/madb/ On modifie le propriétaire du dossier ''madb'' **et de ses enfants** pour l'utilisateur système ''www-data'' //(Utilisateur générique utilisé par Apache)// : chown -R www-data:www-data /var/www/madb/ On modifie les droits pour le dossier ''madb'' et tous les sous-dossiers du dossier ''madb'' : find /var/www/madb -type d -exec chmod 755 {} + On modifie les droits pour tous les fichiers enfants du dossier ''madb'' find /var/www/madb/ -type f -exec chmod 644 {} + On duplique l’exemple de fichier de configuration de phpmyadmin en un fichier qui sera chargé : cp /var/www/madb/config.sample.inc.php /var/www/madb/config.inc.php On ouvre le fichier avec l'éditeur nano : nano /var/www/madb/config.inc.php Pour en savoir plus "[[doc:systeme:tar|unzip]]", "[[:doc:systeme:find|find]]", "[[:doc:systeme:chown|chown]]" et "[[:doc:systeme:chmod|chmod]]". //Si quelqu'un a un lien concernant l'utilisation de "unzip".//FIXME\\ \\ Et on change juste une ligne, on renseigne une clef qui sera utilisée pour crypter les Cookies du navigateur : $cfg['blowfish_secret'] = 'je-mets-ce-que-je-veux'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ On teste le fonctionnement avec un navigateur en se rendant à l'adresse : \\ %%https://madb.mon_domaine%% (Ex: %%https://madb.toto.fr%%). \\ Ce qui devrait nous afficher une page d'identification et une fois connecté avec le compte ''adminDB'', l'interface complète pour gérer les bases de données. (//Voir illustrations ci-dessous//) : \\ \\ **Illustration login PhpMyAdmin :** \\ \\ {{/file-R095d065f9e0fed53251e4ea6f0bbc8c8.png}} \\ \\ **Illustration page PhpMyAdmin :** \\ \\ {{/file-Ra5c90596c7200eb9ab060402d5f26d9a.png}} \\ === Base de données et utilisateur nextcloud === Maintenant que nous avons une interface conviviale pour gérer MariaDB, dans PhpMyAdmin : * Cliquer en haut sur ''Comptes utilisateurs'' * Dans le cadre **Nouvel utilisateur**, cliquer sur ''Ajouter un compte utilisateur'' Un formulaire s'affiche : * **Nom d'utilisateur :** nuage (ou nextcloud ou ce que vous voulez) \\ * **Nom d'hote :** (Cliquer sur le menu déroulant et sélectionner ''Local'') \\ * **Mot de passe : ** On clique sur ''Générer'' ([[doc:systeme:keepassx|attention à bien le noter]]) où on en entre un. \\ J'utiliserai **$NUAGEmdp%** pour cette documentation. * **Dans le cadre ''Base de données pour ce compte d'utilisateur'' :** On coche //les deux cases//. \\ * Et on fini en cliquant tout en bas à droite sur ''Executer''. ===== Installation de Nextcloud ===== ==== Les étapes ==== * Installation de l'application maîtresse (Nextcloud) * Installation de l'application Dashboard (Tableau de bord) * [ **OBSOLÈTE** ] Installation de l'application Nextant (Scan du contenu des documents .odt, .doc, .ods, .pdf, ...) [/ **OBSOLÈTE FIN** ] * Installation de l'application Collabora Online (Suite bureautique) * Autres applications L'installation des applications autres que l'application maîtresse est facultative.\\ Que ce soit par inutilité ou par manque de ressource sur le serveur, vous pouvez ignorer les chapitres correspondant à l'installation de chaque application non souhaitée. \\ \\ **Je répète que les applications [ **OBSOLÈTE** ] **Nextant** [/ **OBSOLÈTE FIN** ] et **Collabora** sont gourmandes en ressources !** ==== Installation de l'application maîtresse (Nextcloud) ==== La procédure est similaire à l'installation de PhpMyAdmin et comme la plupart des applications web que l'on souhaite installer: * On **télécharge** l'archive et on la décompresse dans le dossier du virtualhost souhaité. Pour trouver le lien de téléchargement, le plus simple est de se rendre sur **le site officiel de Nextcloud** avec un navigateur. Pour les utilisateurs d'autres distributions non basées sur Debian, les répertoires seront peut-être différents. - Téléchargement de l'archive Nextcloud. : (Lien actuel. Le lien peut changer dans le temps) wget https://download.nextcloud.com/server/releases/nextcloud-12.0.2.zip - On décompresse l'archive obtenue. (Le nom de l'archive dépend de ce que vous avez téléchargé.) : unzip nextcloud-12.0.2.zip -d nc - On copie les fichiers décompressés dans le dossier du virtualhost prévu pour accueillir nextcloud. (Dans mon cas ''nuage''.) : cp -r ./nc/nextcloud/* /var/www/nuage - On copie également les deux fichiers cachés (fichiers commençant par un point : .fichier) : cp ./nc/nextcloud/.htaccess /var/www/nuage/.htaccesscp ./nc/nextcloud/.user.ini /var/www/nuage/.user.ini - On modifie le propriétaire du dossier nuage et de ses enfants pour l'utilisateur système "www-data". (Utilisateur utilisé par Apache) : chown -R www-data:www-data /var/www/nuage - On modifie les droits pour le dossier "nuage" et tous les sous dossiers du dossier ''nuage'' : find /var/www/nuage -type d -exec chmod 755 {} + - On modifie les droits pour tous les fichiers enfants du dossier ''nuage'' : find /var/www/nuage/ -type f -exec chmod 644 {} + A l'aide d'un navigateur, on se connecte via l'adresse : \\ %%https://nuage.nom_domaine%% \\ //Exemple//: %%https://nuage.toto.fr%% \\ Et un formulaire devrait apparaître pour nous permettre de créer un administrateur pour la solution Nextcloud et d'entrer les informations nécessaires pour que Nextcloud utilise la base de données **nuage** créée précédemment. \\ \\ **Voir illustration ci-dessous :** \\ \\ {{/file-R69854c7f65c3220748f2e49e805f6914.png}} \\ \\ Et on renseigne les informations demandées : * **Nom d'utilisateur :** Administrateur (Ou //Toto//... On met le nom qu'on veut... \\ //Il s'agit ici d'un utilisateur Nextcloud et de rien d'autre.// \\ **ATTENTION !** Ce n'est donc pas un utilisateur système ni un utilisateur MariaDB ! Cet administrateur est un //utilisateur// qui aura le droit de modifier les paramètres de Nextcloud à travers l'interface **Nextcloud** uniquement. \\ * **Mot de passe :** $ADMIN-NCmdp% //(Vous mettez le passe ce que vous voulez.)// * **Répertoire des données :** /var/www/nuage/data (Je n'évoquerai pas l'utilisation du répertoire autre que celui par défaut.) * **Utilisateur de la base de données :** ''nuage'' \\ (Il s'agit ici de l'utilisateur que vous avez créé avec PhpMyAdmin). * **Mot de passe :** $NUAGEmdp% \\ (Il s'agit ici du mot de passe que vous avez créé avec PhpMyAdmin pour ce même utilisateur.) * **Nom de la base de données :** nuage \\ //(Normalement elle porte le même nom que l'utilisateur créé avec PhpMyAdmin).// * **Hote de la base de données :** localhost * Enfin, on clique sur ''terminer l'installation'' Et si tout a bien été renseigné, vous devriez obtenir le résultat suivant dans votre navigateur : \\ \\ **Voir illustration ci-dessous :** \\ {{/file-R30f55a495a6e8f8fa44cf97ff2a1ba48.png}}\\ \\ **Voir illustration ci-dessous :** \\ {{/file-Re436e915bc143ffcc0b7fd2a242ca744.png}}\\ Si en parcourant l'interface, vous apercevez des avertissements dans : ''Administration'' -> ''Paramètres de base'' les cas seront traités dans un autre chapitre. === Planification des tâches en fond === Pour fonctionner correctement, Nextcloud doit effectuer régulièrement certaines opérations. \\ Ces opérations se feront en tâche de fond, encore faut-il les mettre d'abord en place. m( Dans l'interface (web) d'administration de Nextcloud se trouve dans les paramètre de base , un cadre ''Tâches de fond''. \\ A côté de ce titre, une //pastille rouge// nous indique qu'il y a un problème. \\ On sélectionne l'option //Cron//. \\ Puis dans le terminal du serveur : Pour les utilisateurs d'autres distributions non basées sur Debian, les répertoires seront peut-être différents. - On enregistre une tâche [[doc:systeme:crontab|cron]] exécutée en tant qu'utilisateur système www-data : crontab -u www-data -e - Il se pourrait qu'une question vous soit posée : - Retour possible : Select an editor. To change later, run 'select-editor'. - Retour possible : 1. /bin/nano <---- easiest. - Retour possible : 2. /usr/bin/vim.basic \\ En fait, crontab vous demande ici quel éditeur souhaitez-vous utiliser ? \\ Tapez le numéro de l'éditeur souhaité. (Nano étant le plus simple.) - Un fichier crontab temporaire va s'ouvrir. Nous n'avons qu'une ligne à ajouter : */15 * * * * php -f /var/www/nuage/cron.php - On vérifie que le changement a bien été pris en compte : crontab -u www-data -l Dans le retour repérer la présence de : */15 * * * * php -f /var/www/nuage/cron.php - On vérifie que notre tâche s’exécute correctement : tail -f /var/log/syslog (//[[doc:systeme:tail|Voir tuto commande tail ici.]]//) \\ Toutes les 15 minutes une ligne ressemblant au résultat ci-dessous devrait s'afficher : \\ Aug 23 13:15:01 nextcloud CRON[29242]: (www-data) CMD (php -f /var/www/nuage/cron.php) Aug 23 13:30:01 nextcloud CRON[29252]: (www-data) CMD (php -f /var/www/nuage/cron.php) - On sort de l'outil **tail** avec la combinaison de touches : ''CTRL'' ''c'' * Si, en-dessous de : \\ \\ Aug 23 13:30:01 nextcloud CRON[29252]: (www-data) CMD (php -f /var/www/nuage/cron.php) vous repérez le message : \\ (CRON) info (No MTA installed, discarding output) c'est que vous êtes probablement trompé dans le chemin d'accès du fichier cron.php ! \\ Ce fichier se trouve dans le dossier où nous avons installé Nextcloud : ''/var/www/nuage'' \\ Si vous avez donné un autre nom au dossier il vous faudra au moins remplacer ''nuage''. \\ Pour apporter la correction à votre tâche cron on répète la même commande : crontab -u www-data -e \\ Et on recontrôle... Si on retourne dans l'interface (web) d'administration de Nextcloud, la //pastille// est passée au vert. ''Tâches de fond'' ==== Installation de l'application Dashboard (Tableau de bord) ==== À ce jour, on ne peut pas dire que Nextcloud regorge d’applications additionnelles. Pour autant, il y a déjà de quoi satisfaire la majorité des besoins. =) L'installation d'applications additionnelles se fait en général en quelques clics, comme nous allons le voir pour l'installation de Dashboard. En revanche, d'autres applications sont bien plus lourdes à mettre en place comme nous le verrons avec l'installation de **OBSOLÈTE**-Nextant et de Collabora. Avant d'installer une application, pensez à lire sa description et sa documentation. \\ Si aucun avertissement ou consigne n'est indiqué, c'est //probablement// que l'application peut s'installer sans manipulation particulière (Comme Dashbord donc...). Avant de traiter le cas de Dashboard, nous allons rapidement activer une application fort utile : **Auditing / Logging**. \\ Cette application (installée mais désactivée par défaut) fournira en toute simplicité quelques informations sur les erreurs et avertissements générés par Nextcloud. \\ On se rend dans l'interface de gestion des applications en cliquant en haut à droite sur l'engrenage et on sélectionne ''Applications''. - La liste de vos applications installées s'affiche. - On défile vers le bas pour activer : Auditing / Logging. \\ //(L'interface de Auditing / Logging sera alors accessible dans l'interface d'administration après reconnexion.)// === Qu'est-ce que Dashboard ? === **Dashboard** est un tableau de bord offrant une visualisation regroupée et résumée des derniers événements de votre espace Nextcloud. Pour installer Dashbord, on retourne dans : - Applications. ''Engrenage -> Applications'', //(je ne le répéterai plus)// :-) - puis dans le volet de gauche sur ''Outils''. - Repérez **Dashbord** et cliquez sur le bouton ''Activer''. Le mot de passe de l'administrateur Nextcloud vous sera demandé même si vous êtes connecté en tant que tel. L'installation terminée, une nouvelle icône se placera dans la barre supérieure. \\ Cliquez dessus pour afficher le tableau de bord qui sera sûrement vide pour le moment. **Voir illustrations ci-dessous :** \\ \\ \\ {{/file-Rfa4583c1fc855296b8cd9d9925dea660.png}} \\ \\ {{/file-R23ce68027af3fe6aa0f727d4de7a5786.png}} \\ ==== Installation de l'application Nextant ==== **OBSOLÈTE** === Qu'est-ce que Nextant ? === Comme indiqué plus haut, Nextant permet de scanner le contenu des documents avec fonction OCR sur les fichiers de type image en vu de recherches plus pertinentes. **Exemple concret :** Dans mon espace Nextcloud je créé un fichier texte nommé **Villes.txt** dans lequel figure une liste de villes ainsi : Paris Marseille Toulouse Nice En faisant une recherche dans Nextcloud avec comme critère le mot //villes//, mon fichier ressort sans problème. \\ Par contre, en faisant une recherche avec comme critère //Paris//, //Toulouse// ou n'importe quelle ville présente dans mon fichier **Villes.txt**, Nextcloud ne trouvera aucun résultat. \\ Mais avec Nextant d'installé, mon fichier **Villes.txt** me sera bien proposé ! ;-) Pour installer Nextant, rendons-nous dans : ''Applications'' -> ''Fichiers'' \\ et on clique sur ''Afficher la description''. \\ //Pffiou... Il y a de la lecture...// 8-o On peut y lire le potentiel de Nextant (//emplacements, formats de fichiers reconnus...//) avec des mises en garde pour certains formats de fichiers : * Fichiers image : Nécessite //Tesseract// d'installé. * Fichiers PDF //sans couche texte// (Plus connu sous le nom de PDF à la con) : Nécessite //Tesseract// d'installé. (Et développement en cours d'amélioration.) Mais surtout, on y trouve la procédure d'installation qui nécessite quelques manipulations. \\ Appuyer sur le bouton ''Active'' **ne suffira pas** ! La procédure d'installation nous indique les étapes à suivre : - Installation du **servlet Solr**. - Installation de **Tesseract** (//Fonction OCR facultative//). - Téléchargement et installation de l'archive **Nextant** - Activation et configuration de l'application. - Lancement d'un scan et planification. **OBSOLÈTE FIN !** ==== Installation du servlet Solr ==== **OBSOLÈTE** - Dans nextcloud 13 ils ont inclus un autre moteur 'Fullsearch ellastic' (ou truc dans le genre) qui permet de se passer de Solr === Qu'est-ce que le servlet Solr ? === //Honnêtement, j'en sais trop rien !// ^_^ Tout ce que je sais, c'est que Nextant en a besoin et en essayant de se renseigner un minimum par ce lien : * [[https://fr.wikipedia.org/wiki/Servlet|servlet]] On apprend que servlet est //une extension// du serveur web reposant sur : * [[https://www.java.com/fr/|Java]] (//donc il faudra l'installer aussi...//) et que * [[https://fr.wikipedia.org/wiki/Apache_Solr|Solr]] \\est spécifiquement conçu pour de la recherche.\\ Nous installerons le **servlet Solr** en //mode service// pour une disponibilité permanente. Pour les utilisateurs d'autres distributions non basées sur Debian, la commande apt ne fonctionnera pas et les paquets peuvent se nommer autrement. # Commençons pas installer Java Runtime Environment (JRE) via le meta-paquet "default-jre" apt install default-jre # Après l'installation de tous les paquets on effectue une petite vérification de version java -version #Retour : 1.8.0_141 (version à ce jour) # On télécharge la dernière version de Solr depuis le site officiel. (Cherchez le lien de téléchargement en allant sur le site.) # https://lucene.apache.org/solr/mirrors-solr-latest-redir.html wget http://apache.crihan.fr/dist/lucene/solr/6.6.0/solr-6.6.0.zip # On décompresse l'archive obtenue dans un dossier que l'on nommera "solr" unzip solr-6.6.0.zip -d solr # Et on l'installe via son script d'installation en indiquant où se trouve l'archive téléchargée. ./solr/solr-6.6.0/bin/install_solr_service.sh ./solr-6.6.0.zip # Retour : Service solr installed. # Retour : solr.service - LSB: Controls Apache Solr as a Service # Appuyer sur la touche "Q" du clavier à la fin de l'installation **Note :** Solr installe également une //interface de gestion web// disponible par défaut via : \\ %%http://toto.fr:8983%%. \\ À vous de sécuriser l'accès à cette interface avec [[doc:reseau:iptables|iptables]] par exemple. Autrement, vous pouvez simplement éditer le fichier ''/opt/solr/server/etc/jetty-http.xml'' pour rajouter //(à la ligne 36 dans ma version)// le paramètre : ''default="localhost"'' ainsi : Et si vous souhaitez tout de même conserver l'accès à cette interface en la protégeant par un mot de passe, rendez-vous sur le : * [[https://github.com/nextcloud/nextant/wiki/Setup-your-local-Solr-as-a-Service|wiki]] (en anglais) du projet. # On redémarre Solr systemctl restart solr # On installe rapidement l'outil "sudo" qui nous permettra de lancer des tâches pour le compte d'autres utilisateurs système apt install sudo # On créé un core dédié à Nextant tournant sous l'utilisateur système "solr". # (Utilisateur créé automatiquement lors de l'installation de solr) sudo -u solr /opt/solr/bin/solr create -c nextant # Retour : Creating new core 'nextant' using command: # Retour : "status":0, <--(0 = tout s'est bien passé) [[:doc:systeme:sudo|Pour en savoir plus sur "sudo".]] **OBSOLÈTE FIN !** ==== Installation de Tesseract ==== [ **OBSOLÈTE** ] === Qu'est-ce que Tesseract ? === Tesseract est un moteur de reconnaissance optique de caractère dit OCR. C'est ce programme qui sera utilisé par Nextant pour analyser le contenu d'un fichier image ou fichier PDF (//à la con//) et tenter d'y trouver des caractères (du texte donc) et l'indexer. L'efficacité du moteur dépend évidement de la qualité des images ou de numérisation, et de la qualité/taille des caractères s'y trouvant pour chaque fichier analysé. * Une facture numérisée en bonne qualité (~200ppp) aura toutes les chances d'avoir son contenu d'indexé. * En revanche, on peut facilement imaginer qu'une ordonnance manuscrite d'un médecin, même de super bonne qualité, aura peu de chance d'avoir son contenu indexé si ce n'est, l'en-tête et le pied de page ! :-P Je rappelle que ce que je nomme //PDF à la con// sont les PDF générés par un scanner lambda ou imprimante virtuelle. \\ Ces processus de création de fichiers PDF ne font en général qu'une photo de chaque page du document. \\ De ce fait, en vulgarisant, ces PDF ne sont que des //images// qu'on visualise sous forme de pages. Tous les fichiers PDF n'ont pas cette caractéristique. :-D \\ Certains sont conçus via des processus qui permettent //d'insérer le texte dans la structure du PDF//. \\ Ces PDF ci, n'auront donc pas besoin de passer par la moulinette **Tesseract** et seront par conséquent plus facilement "indexables". Pour les utilisateurs d'autres distributions non basées sur Debian, la commande apt ne fonctionnera pas et les paquets peuvent se nommer autrement. # On installe Tesseract et le fichier de langue fra. # (Si vous avez des documents dans d'autres langues, ajoutez les tesseract-ocr-eng, tesseract-ocr-deu, tesseract-ocr-spa, ...) apt install tesseract-ocr tesseract-ocr-fra Voilà, voilà...\\ Tout ce blabla pour ça ?\\ ... [ **OBSOLÈTE FIN** ] ==== installation de l'archive Nextant ==== **OBSOLÈTE** On choppe le lien de téléchargement en se rendant à l'adresse : * https://apps.nextcloud.com/apps/nextant //(tout en bas de la page, version actuelle 1.0.8 pour nextcloud 12).// Pour les utilisateurs d'autres distributions non basées sur Debian, les répertoires seront peut-être différents. # On lance son téléchargement depuis le serveur wget https://github.com/nextcloud/nextant/releases/download/v1.0.8/nextant-1.0.8.tar.gz # On créé un dossier mkdir nxta # On lance la décompression tar -zxvf nextant-1.0.8.tar.gz -C ./nxta # On copie le dossier "nextant" obtenu dans le répertoire "app" de Nextcloud. (Pensez à remplacer "nuage" par le nom de votre dossier.) cp -r ./nxta/nextant /var/www/nuage/apps/ # On modifie le propriétaire chown -R www-data:www-data /var/www/nuage/apps/nextant # Ainsi que les droits au niveau des dossiers find /var/www/nuage/apps/nextant -type d -exec chmod 755 {} + # et des fichiers. find /var/www/nuage/apps/nextant -type f -exec chmod 644 {} + ==== Activation et configuration de l'application ==== **OBSOLÈTE SUITE** Dans Nextcloud (gestion des applications), nous pouvons activer l'application Nextant que vous trouverez dans la catégorie ''Fichiers''.\\ On se rend ensuite dans l'administration de Nextcloud, puis dans ''Paramètres supplémentaires''. Vous trouverez alors un cadre réservé à la configuration de Nextant. Par défaut, la configuration doit correspondre. On clique sur ''Tester et sauvegarder'' pour être fixé. //(Voir illustration ci-dessous)//\\ {{/file-Rb53ea9b5b1a033df3453c38e00b679c3.png}}\\ Par défaut, les fichiers PDF seront analysés mais pas les fichiers images. \\ Si vous souhaitez modifier cela, dans la partie ''Indexer les fichiers'' se trouve un lien ''Configuration des filtres''. En cliquant dessus vous pourrez cocher "Image (Jpeg, Tiff)".\\ Ne touchons rien d'autre pour le moment...\\ \\ **Première vérification**\\ Retournons dans notre espace de gestion des fichiers. A l'installation, Nextcloud nous a placé un fichier PDF qui se nomme "**Nextcloud Manual.pdf**". Dans ce fichier se trouve à plusieurs reprise le texte "//Configuring two-factor authentication//".\\ Regardons en entrant "//Configuring two-factor authentication//" (sans les guillemets) dans le champ de recherche de Nextcloud, si le fichier "**Nextcloud Manual.pdf**" nous est proposé.\\ ... Nada !\\ C'est normal et c'est le résultat attendu. === Lancement d'un scan manuel === **OBSOLÈTE SUITE** Nous allons exécuter un premier scan (première indexation) de Nextant. Il faut savoir qu'au-delà de l'interface web, Nextcloud s'administre également en ligne de commande via son script "occ". Ce script est disponible dans le répertoire d'installation de Nextcloud. (Dans mon cas : **/var/www/nuage/occ**). Lorsque vous utilisez ce script, utilisez toujours l'utilisateur "www-data". (L'utilisateur Apache) Pour les utilisateurs d'autres distributions non basés sur Debian, les répertoires seront peut-être différents. # On autorise l’exécution du script occ par son propriétaire (www-data) chmod 744 /var/www/nuage/occ # On lance le premier scan de nextant sudo -u www-data /var/www/nuage/occ nextant:index # Vu le peu de fichiers, ça devrait aller très vite # Retour : 4 file(s) processed ; 0 orphan(s) removed # Retour : 4 documents indexed ; 4 fully extracted **Nouvelle vérification**\\ Retournons dans notre espace de gestion des fichiers. Regardons en entrant "//Configuring two-factor authentication//" (sans les guillemets) dans le champ de recherche de Nextcloud, si le fichier "**Nextcloud Manual.pdf**" nous est proposé.\\ ... Oh ! 8-)\\ {{/file-R55f3f4047e19c470126afe60048431da.png}}\\ Si vous avez activé l'option pour indexer également les images dans la configuration de Nextant, vous pourrez tester le fonctionnement de l'OCR en ajoutant l'image ci-dessous (//DU TEXTE DANS UNE IMAGE//) dans votre espace Nextcloud. //(Pour télécharger l'image, clique droit sur l'image -> Enregistrer...)//\\ {{/file-R0f280be0a485e08385aa15d6c3673c69.jpg}} # On relance un scan manuellement sudo -u www-data /var/www/nuage/occ nextant:index Puis on effectue une recherche dans Nextcloud en entrant "//du texte dans...//". Le fichier JPEG devrait vous être proposé.\\ \\ A l'envoi d'un fichier dans votre espace Nextcloud, vous ne pourrez pas effectuer de recherche basée sur son contenu immédiatement. Il faudra patienter quelques minutes, le temps que les tâches de fond de Nextcloud s’exécutent. Rappelez-vous, à l'installation de Nextcloud, nous avons mis en place l’exécution de tâches en fond... ;-) **OBSOLÈTE FIN** ==== Installation de Collabora Online ==== === Qu'est-ce que Collabora Online ? === **[[https://www.collaboraoffice.com/collabora-online/|Collabora Online]]** est une [[https://fr.wikipedia.org/wiki/Suite_bureautique|suite bureautique]] en ligne proposant : - un traitement de texte, - un tableur et - un créateur de présentation (diaporama). Collabora Online est un projet open source basé sur [[doc:editeurs:libreoffice|LibreOffice]] dont l'objectif est de fournir une alternative à //Microsoft Office Online// et //G suite// pour ne citer que les plus grands acteurs. **Quel est l’intérêt de l'avoir en ligne ?** \\ Vous seriez probablement tentés de vous dire : //je m'en fout, j'ai déjà LibreOffice ou Microsoft Office// d'installés sur mon ordinateur. \\ Très bien. Mais quel plaisir d'avoir en permanence la possibilité de travailler sur ces documents * n'importe quand, * depuis n'importe quel ordinateur, * pour tous les utilisateurs que l'on souhaite avec * la possibilité de travailler à plusieurs sur le même document * et tout ça, rien qu'avec un navigateur ! Finit les demandes : \\ - //Tu peux m'envoyer le fichier X ?// - Il y a bien un //MAIS// ? \\ - Plusieurs même ! LOL D'abord, il faut savoir qu'il s'agit de la version Collabora Online Development Edition. Celle-ci est donc //toujours en cours de développement//. Comparé à un Microsoft Office ou LibreOffice, on est loin de disposer des même fonctionnalités avancées. \\ (Oubliez les //fusions/publipostage// ou l'//utilisation de style// par exemple.) \\ L'installation est relativement fastidieuse. \\ La compatibilité avec les documents issus de la suite Microsoft Office sera aussi regrettable qu'en utilisant LibreOffice. \\ Une fiabilité "douteuse" ? \\ Je n'ai pas assez de recul pour m'exprimer là-dessus pour l'instant mais, sans vouloir dénigrer, l'utilisation de [[https://fr.wikipedia.org/wiki/Docker_(logiciel)|Docker]] pour héberger le service ne m'inspire pas... \\ Enfin, l'utilisation de Collabora Online nécessite un serveur aux ressources correctes. (Mémoire vive / Processeur), des besoins variables selon le nombre d'utilisateurs... Pour installer Collabora Online, commençons dans l'interface de Nextcloud par aller dans : \\ ''Applications'' → ''Bureautique et texte'' \\ et on clique sur : \\ ''Afficher la description''. //(De l'application Collabora hein...)// \\ On peut y lire qu'il faut d'abord : \\ installer **Collabora Cloudsuite** sur le serveur et de lire la documentation. Super ! :-) Ici aussi, le simple fait d'appuyer sur activer ne fonctionnera pas ! La documentation nous averti sur les prérequis : * Un serveur capable d'exécuter des conteneurs Docker * La création d'un sous-domaine (virtualhost) * L'activation/désactivation des modules Apache * Un certificat SSL pour le sous-domaine (virtualhost) dédié à Collabora Online * Un certificat SSL pour le sous domaine (virtualhost) dédié à Nextcloud (Bon ça, ça devrait déjà être le cas...) ==== Installation de Docker ==== === Qu'est-ce que Docker ? === //On s'en fout, officiellement on n'a pas d'autre choix que de l'installer !// :-P **Bon pour faire court** : \\ Docker offre aux développeurs la possibilité de distribuer les fruits de leur travail sous forme "d'image". \\ Cette image contient le programme et ses dépendances. \\ Pour l'utilisateur final, il lui suffit de télécharger l'image et de l’exécuter de manière isolée via Docker dans ce que l'on appelle un conteneur. Pour en savoir plus, je vous renvoie vers : * [[https://fr.wikipedia.org/wiki/Docker_(logiciel)|Wikipédia]] Pour les utilisateurs d'autres distributions non basées sur Debian, la commande apt ne fonctionnera pas et les paquets peuvent se nommer autrement. - On installe la prise en charge de ''https'' pour le programme apt : apt install apt-transport-https - On télécharge et on installe [[doc:systeme:gnupg|la clef publique]] du dépôt de Docker : curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - - [[doc:programmation:shell:chevrons|On ajoute]] le dépôt de Docker à notre [[doc:systeme:apt:sources.list:depots-tiers|liste des dépôts]] : echo -e "\n# Depôt Docker\ndeb [arch=amd64] https://download.docker.com/linux/debian stretch stable" >> /etc/apt/sources.list - On met à jour la liste des paquets disponibles de nos dépôts : apt update - On lance l'installation de Docker : apt install docker-ce - On peut vérifier l'installation via : docker version17.06.1-ce - Par défaut sur Debian et Ubuntu, Docker s'installe de façon à utiliser le driver AUFS. \\ Nous devons changer ce comportement pour que **Collabora Online** fonctionne : - Création d'un dossier ''docker.service.d'' : mkdir /etc/systemd/system/docker.service.d - Création du fichier "DeviceMapper.conf" : nano /etc/systemd/system/docker.service.d/DeviceMapper.conf - Et on entre les 3 lignes suivantes dans le fichier ''DeviceMapper.conf'' : [Service] ExecStart= ExecStart=/usr/bin/dockerd --storage-driver=devicemapper -H fd:// - On redémarre Docker de manière à ce qu'il prenne en charge la nouvelle configuration : systemctl daemon-reload systemctl restart docker - Et on vérifie que le nouveau paramètre est bien pris en compte : docker info \\ Retour 7° ligne : Storage Driver: devicemapper - On récupère l'image de Collabora Online Development Edition : docker pull collabora/code \\ Le téléchargement s'effectue. (Patientez un peu, le tout pèse autour d'1 Go.) latest: Pulling from collabora/code bd97b43c27e3: Downloading 15.2MB/46.93MB 6960dc1aba18: Download complete 2b61829b0db5: Download complete ... - Enfin on crée et on démarre le conteneur qui exécutera l'image téléchargé : \\ (Remplacer "nuage" si besoin et le nom de domaine mais, gardez bien les "\\" avant chaque point...) : docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nuage\\.toto\\.fr' --restart always --cap-add MKNOD collabora/code === Création d'un virtualhost pour Collabora === Le virtualhost que nous allons créé est un peu particulier dans le sens où il n'aura pas de répertoire racine. Ce virtualhost sert essentiellement à éviter d'exposer Collabora Online. \\En somme, l'accès ne pourra se faire qu'au travers de Nextcloud. - Nous allons commencer par activer certains modules pour notre serveur web Apache : a2enmod proxya2enmod proxy_wstunnela2enmod proxy_httpa2enmod ssl **ssl** devrait déjà être activé si vous avez bien suivi cette documentation. \\Activez-le de nouveau si vous voulez être sûr... - Puis on créé un nouveau fichier de configuration pour notre nouveau virtualhost. \\ (Pour ce tuto ce sera le virtualhost : ''bureau'' \\ ce qui me donnera : \\ bureau.toto.fr. //Remplacez ''bureau'' par ce que vous voulez.//) : nano /etc/apache2/sites-available/bureau.conf - Copiez/collez l'intégralité de la configuration ci-dessous en n'oubliant pas d'adapter la deuxième ligne : \\ Paramètre "ServerName". \\ (//Dans mon cas en exemple ce sera : %%bureau.toto.fr%%//) Vous noterez au passage que dans le fichier de configuration ci-dessous, les chemins menant aux certificats SSL sont à modifier mais, on laissera Let's Encrypt s'en occuper. ServerName bureau.toto.fr:443 # SSL configuration, you may want to take the easy route instead and use Lets Encrypt! SSLEngine on SSLCertificateFile /path/to/signed_certificate SSLCertificateChainFile /path/to/intermediate_certificate SSLCertificateKeyFile /path/to/private/key SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS SSLHonorCipherOrder on # Encoded slashes need to be allowed AllowEncodedSlashes NoDecode # Container uses a unique non-signed certificate SSLProxyEngine On SSLProxyVerify None SSLProxyCheckPeerCN Off SSLProxyCheckPeerName Off # keep the host ProxyPreserveHost On # static html, js, images, etc. served from loolwsd # loleaflet is the client part of LibreOffice Online ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0 ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet # WOPI discovery URL ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0 ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery # Main websocket ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon # Admin Console websocket ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws # Download as, Fullscreen presentation and Image upload operations ProxyPass /lool https://127.0.0.1:9980/lool ProxyPassReverse /lool https://127.0.0.1:9980/lool - On lance Let's Encrypt : letsencrypt Qui devrait nous trouver : - bureau.toto.fr - madb.toto.fr - nuage.toto.fr - On répond à toutes les questions que letsencrypt nous pose. - Première question on fait ''Entrer'' pour que Let's Encrypt traite tous les virtualhosts trouvés. (''bureau'' devrait apparaître.) - Do you want to expand and replace this existing certificate with the new certificate? - On choisis d'étendre : Touche ''E'' puis ''Entrer''. - On active le virtualhost ''bureau''. (Ici ''bureau'' car mon fichier d'origine se nomme ''bureau.conf'') : a2ensite bureau - **a2ensite bureau** revient à faire : ln -s /etc/apache2/sites-available/bureau.conf /etc/apache2/sites-enabled/bureau.conf Et on redémarre Apache : systemctl restart apache2 On file ensuite dans la gestion des applications Nextcloud : - ''Applications'' → ''Bureautique et texte'' et - on clique sur ''Activer'' (//Collabora//) Enfin dans l'administration de Nextcloud une nouvelle ligne apparaît dans le volet de gauche pour configurer Collabora Online. - On entre l'adresse de Collabora : \\ - %%https://bureau.toto.fr%% (dans mon cas) \\ - et on décoche : \\ ''Utiliser le format OOXML...'' //si on le souhaite.// À présent, dans votre espace Nextcloud, en cliquant sur le bouton ''+'' (//à côté de la maison//), de nouveaux formats de fichier seront proposés. \\ - Cliquez sur l'un d'entre eux (//Ex: Nouvelle feuille de calcul//), - donnez lui un nom et - appuyez sur la touche ''Entrer'' pour confirmer le nom du fichier. - Une fois créé, cliquez dessus pour l'ouvrir. - Collabora Online devrait prendre le relais pour l'édition du fichier. 8-) ===== Autres applications ===== Passons en revu quelques applications qui pourraient s'avérer très utiles. ==== Application email Rainloop ==== **Rainloop** est un webmail. \\ Un client email qu'on utilise depuis son navigateur au même titre que Gmail, Outlook.com,... Attention à ne pas confondre avec un serveur email. Rainloop doit dialoguer avec un serveur email pour fonctionner. \\ Quand vous installez le client Thunderbird, Evolution, Outook ou autres, vous entrez des paramètres : - Adresse email, - identifiant, - mot de passe, - adresse du serveur POP/IMAP, - adresse du serveur SMTP - etc. Ce sont ces même paramètres que vous aurez besoin d'entrer. L'installation de **Rainloop** se fait simplement en l'activant dans //Nextcloud//. \\ Pour le paramétrage : ==== Application Calendar ==== Bein... c'est un agenda. Il est ouvert à tout client compatible avec le protocole CalDAV.\\ Installation en un clique (//Activer//). ==== Application Files clipboard ==== Facilite grandement le déplacement/copie de fichiers/dossiers au sein de l'interface Nextcloud. A tel point que je me demande pourquoi ces fonctions n'y sont pas de base ? !!! :-o **Installation fortement recommandée**. Une fois activée, rien d'autre à faire. \\ Dans votre espace Nextcloud vous verrez 3 nouveaux boutons (couper, copier, coller) lorsque vous cocherez des fichiers/dossiers en guise de sélection. === Application Passman === L'application Passman est un gestionnaire de mots de passe hébergé (dans votre Nextcloud) au même titre que Dashlane, 1Password, LastPass. \\ L'utilisation en est facilitée par la disponibilité des extensions pour Chrome, Firefox et Android. (Toujours pas d'application iOS à ce jour.) L'Installation ? Juste un clique. === Application Announcement center === Les administrateurs seront en mesure de faire des annonces au sein de Nextcloud. Ex : \\ Maintenance de Nextcloud ce week end...\\ Il y juste à activer l'application. === Application Metadata=== Comme son nom l'indique, l'application affichera plus d'informations quand vous regarderez le détail d'un fichier. Exemple pour un fichier vidéo, vous verrez : * la résolution, * le framerate, * le débit * etc. Installation par activation. === Application External sites=== L'application **External sites** permet de consulter des sites ou des documents sans que l'utilisateur n'ait à quitter Nextcloud. \\ La page s'insère dans Nextcloud. L’intérêt étant de mettre facilement à disposition des utilisateurs certaines informations externe à Nextcloud. Ex : * un règlement, * un formulaire de demande d'assistance... L'application s'installe en l'activant. \\ Pour le paramétrage : \\ ''Administration'' -> ''Paramètres supplémentaires'' === Application Files automated tagging === Cette application assigne automatiquement des étiquettes (tagg) pour n'importe quel fichier ajouté dans Nextcloud selon des règles à mettre en place. Ex. : \\ Si le fichier est de type "image" et qu'il a été ajouté par un utilisateur membre du groupe "Photographe", coller l'étiquette ''Photo produit''.\\ Installation en activant. \\ Paramétrage : ''Administration'' -> ''Flux d'activités'' ===== Corrections et optimisations ===== ==== Nextcloud ==== Suite à l'installation, vous avez peut-être constaté les messages suivants dans l'interface d'administration : * **Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur web.**\\ Pour y remédier, il nous faut appliquer la directive "AllowOverride All" dans notre configuration Apache. - On édite le fichier de configuration principal d'Apache : nano /etc/apache2/apache2.conf # A partir de la ligne 170 nous trouvons # # Options Indexes FollowSymlinks # AllowOverride None #... # On modifie "AllowOverride None" pour "AllowOverride All" - Et on redémarre Apache : systemctl restart apache2 * **Aucun cache mémoire n'est configuré. Si possible, configurez un "memcache" pour améliorer les performances. Pour plus d'informations consultez la documentation.** \\ Et bien on va mettre un en place :-) # On installe "memcached" le module pour PHP apt install memcached php-memcached # On édite le fichier de configuration de Nextcloud (Rempacer par "nuage" par le nom de votre dossier.) nano /var/www/nuage/config/config.php # On rajoute un ligne entre : 'dbpassword' => '$NUAGEmdp%', et 'installed' => true, # Autrement on la rajoute juste après : 'installed' => true, mais à ce moment là, true doit être deux apostrophes : 'true'. # Attention chaque ligne doit se terminer par une virgule. # Et ");" doit boucler le fichier. \\ 'memcache.local' => '\OC\Memcache\Memcached', - Et on redémarre Apache : systemctl restart apache2 **Le PHP OPcache n'est pas correctement configuré. \\ Pour de meilleure performance nous recommandons d'utiliser les paramètres suivant dans le php.ini : //(Suivi des paramètres à modifier.)//** \\ Bon bein on va pas le contrarier. # On ouvre le fichier de configuration de PHP nano /etc/php/7.0/apache2/php.ini # Et on cherche les paramètres mentionnés pour remplacer leurs valeurs comme Nextcloud nous l'indique. # Dans le fichier, vous trouverez ces paramètres à partir de la ligne 1765. # Pensez à utiliser la fonction de recherche. (CTRL + W avec Nano) # Pour chaque paramètre trouvé, il vous faudra le "dé-commenter" en supprimant le point virgule (;) en début de ligne et modifier la valeur. # Exemple : ; Determines if Zend OPCache is enabled opcache.enable=1 # Et on redémarre Apache systemctl restart apache2 * **Vous accédez à ce site via HTTP. Nous vous recommandons fortement de configurer votre serveur pour forcer l'utilisation de HTTPS, comme expliqué dans nos conseils de sécurisation.** # On active le mode Headers pour Apache a2enmod headers # On édite le fichier de configuration du virtualhost Nextcloud (Dans mon cas : nuage-le-ssl.conf) nano /etc/apache2/sites-available/nuage-le-ssl.conf # Pour rajouter une ligne juste en dessous de : "DocumentRoot /var/www/nuage" Header always set Strict-Transport-Security "max-age=63072000;" # Et on redémarre Apache systemctl restart apache2 ==== Nextant ==== * **Erreur 21 : interruption durant l'indexation**\\ Suite à l'installation de Nextcloud, votre espace est encore bien vide. La commande que nous avons lancé (sudo -u www-data /var/www/nuage/occ nextant:index) pour effectuer une première indexation de nos fichiers via Nextant s'est sûrement déroulée sans accro. Mais dans le temps ou une fois votre espace bien plus remplie, il se pourrait que l'indexation avorte avec une "Erreur 21". Dans ce cas, il est recommandé d'augmenter la mémoire vive allouée au servlet Solr. nano /etc/default/solr.in.sh # Paramètre à modifier "SOLR_HEAP". Par défaut, "512m". On dé-commente le paramètre en supprimant le dièse # et on augmente la valeur en fonction de ce qu'on peut. Essayez "1024m". Sinon "2048m" etc. #SOLR_HEAP="512m" SOLR_HEAP="2048m" # Et on redémarre Apa... Non Solr ! systemctl restart solr # Et on relance une indexation pour tester. sudo -u www-data /var/www/nuage/occ nextant:index Une autre raison pourrait venir d'un fichier que Nextant ne parvient pas à l'ire. # Pour en être sûr. sudo -u www-data /var/www/nuage/occ nextant:index --debug Et dans ce cas, soit on supprime le fichier (pas vraiment une solution...) soit on filtre tous les fichiers du même type en entrant l'extension du fichier.\\ Il est également possible d'indiquer à Nextant de ne pas indexer un dossier en créant dans le dossier en question un fichier de type "Texte" vide qu'il faut nommer ".noindex". Les fichiers commençant par un point (.) sont des fichiers qui par défaut sont cachés dans Nextcloud. Vous pouvez modifier cela dans le volet de gauche en cliquant tout en bas sur "Paramètres". ==== Collabora Online ==== * **Échec du chargement du document. Veuillez vous assurer que le type de fichier est pris en charge, qu'il n'est pas corrompu et essayez de nouveau.** \\ Avez-vous bien Docker qui utilise le driver "devicemapper" ? \\ \\ * **Hôte WOPI non autorisé. Veuillez essayer de nouveau plus tard et en faire part à votre administrateur si le problème persiste.** \\ La source du problème peut venir d'un bon nombre de facteur : La commande "docker run" renseigne-t-elle le bon nom de domaine, le paramétrage du virtualhost dédié à Collabora renseigne-t-il le bon nom de domaine ? Les certificats sont-ils bien installés ? ==== Rainloop ==== * Si dans les logs vous voyez apparaître le message : **Cannot modify header information - headers already sent by...**\\ Il vous faudra modifier le fichier : "[[https://github.com/RainLoop/rainloop-webmail/pull/1375/files|rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php]]". ==== PDF Viewer ==== Peut-être auriez-vous eu, tout comme moi, la bonne ou mauvaise idée de soumettre votre serveur auprès du scanner de Mozilla : Observatory by Mozilla pour tester votre installation. (HTTPS) Et peut-être que comme moi vous avez cherché et fini par obtenir la meilleure note (A ou A+ j'sais plus...) Alors, il est très probable que vous rencontriez un problème avec le PDF Viewer intégré à Nextcloud lorsque vous tentez d'ouvrir un PDF (à la con) généré par un scanner/imprimante.\\ Le problème en question est que le PDF Viewer ouvre le fichier PDF mais celui-ci est vide. Tout blanc !\\ En attendant de localiser très exactement l'option qui ne plait pas au PDF Viewer, cherchez/désactivez vos paramètres "Header set ..." dans la configuration d'Apache2. **PS:** si vous voulez utiliser talk, il vous faudra installer un serveur turn apt install coturn