Nextcloud


Une relecture est en cours. FIche non validée !
Vous pouvez parcourir et utiliser l'un des scripts d'installation suivants :
- Script pour Nginx

Présentation du logiciel Nextcloud


Nextcloud vous permet de stocker vos fichiers (documents, photos, vidéos, etc.), vos contacts, vos calendriers, vos tâches et favoris sur votre propre cloud auto-hébergé (nécessite un serveur ou un hébergement).

Toutes vos données sont ainsi accessibles depuis n'importe quel navigateur. Il est également possible de les synchroniser grâce aux logiciels clients (Windows, Mac, Linux, iOS, Android, Windows Mobile).
Des fonctionnalités avancées de partage sont proposées (à durée limitée et/ou avec mot de passe par exemple).

De nombreux plugins sont proposés par la communauté afin d'étendre les fonctionnalités : ajout d'une suite bureautique, mise en place d'un gestionnaire de mots de passe, visioconférence, etc.

Il propose également de nombreuses fonctionnalités à destination des entreprises (intégration dans l'infrastructure de l'entreprise, sécurité avancée, gestion des droits, workflow, etc.).

Il s'agit d'un fork du logiciel Owncloud .

Source : Framasoft pour la description ci-dessus, 2020

Installation et configuration serveur

Un serveur Web est un service permettant de répondre à des interractions sur un réseau internet ou externe, généralement internet.Pour ce faire, les serveurs Web utilisent principalement le protocole HTTP, permettant le transfert de fichiers entre un serveu et les utilisateurs dudit serveurs, généralement appelés clients.

Si vous n'avez pas de logiciel serveur installé sur votre machine, il vous faudra, pour ce tutoriel, installer Apache.
Nous commençons par réaliser une mise à jour du système à l'aide du terminal via la commande apt update, suivi d'un apt install pour installer Apache ainsi que son module PHP, dont nopus verrons l'utilité plus tard:

sudo apt update
apt install apache2 libapache2-mod-php


L'on peux s'assurer qu'apache s'active au démarage grâce à la commande suivante

systemctl enable apache2

On peut au passage activer quelques fonctionalités d'Apache qui ous seront sans doute utiles plus tard :

a2enmod headers
a2enmod rewrite
a2enmod deflate


Puis l'on redémare le serveur pour prendre en compte les changements :

systemctl reload apache2

Lorsque vous hébergez vous même votre propre serveur, il est vivement recommandé de mettre en place un pare-eu. En effet, ce sytème de sécurité permet de rendre votre service accessible qu'aux utilisateurs agrées, tout en vous protégeant de l'execution de commandes indésirables.
Nous utiliserons ici ufw, un outil de configuration simplifié du pare-feu Netfliter :

sudo apt-get install ufw

Afin de rendre votre service accesible depuis l'exterieur de votre structure, nous allons procéder à une ouverture de ports. Un port est comparable à une porte permettant au monde exterieur d'accèder à votre serveur via votre routeur ou box internet. Par sécurité, ces ports sont fermés par défaut, il faut donc les ouvrir vair l'interface d'aministration de votre box ou routeur. Malheureusement, la méthode d'ouverture de ces ports diffère en fonction de chaques forunisseur d'accès internet (SFR, Orange, Free...)...
Cependant, une recherche internet du type "ouverture ports box" suvit du nom de votre fournisseur internet devrait vous permettre de trouver la marche à suivre 😉.

Il vous faudra donc préalablement ouvrir le port 80 sur votre box ou routeur via les protocole TCP et UDP, pour rediriger les utilisateurs externes vers l'adesse IP de votre serveur, adresse qui est en quelque sorte son numéro d'identification internet. Cette adresse IP peut-être récupérer en lançant la commande suivante :

sudo ip a

Ce qui nous donne quelque chose ressemblant à ceci:

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0@if152:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 8e:fb:71:1f:fa:61 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.1.228/24 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 72407sec preferred_lft 72407sec
    inet6 fe80::8cfb:71ff:fe1f:fa61/64 scope link 
       valid_lft forever preferred_lft forever            

L'adresse IP est ci dessus surlignée en jaune. Nous pouvons faire en sorte que le parre feux accepte les requètes des utilisateurs passant par le port 80 ainsi que les requètes provenant du protocole HTTP :

sudo apt install ufw
sudo ufw allow 80/tcp
sudo ufw allow 80/udp
sudo ufw allow "Apache Full"


Il est possible que la comande "Apache Full" retourne l'erreur Could not find a profile matching 'Apache Full'. Dans ce cas, il nous faut créer un script permettant l'authorisation du trafic provenant du port 80 vers le serveur Apache, ce grâce à la commande suivante :

nano /etc/ufw/applications.d/Apache_Full

Ensuite, il vous suffit de copier les quelques lignes suivantes dans le fichier :

[Apache Full]
title=<Web Server(HTTP,HTTPS)>
description=<Apache v2 is the next generation of the omnipresent Apache web server.>
ports=80/tcp|80/udp

Il vous suffira alors d'effectuer les deux commandes suivantes pour qu'ufw prenne en compte et active le script nouvellement créé :

ufw app update "Apache Full"
sudo ufw allow "Apache Full"

On active ufw au démarage du serveur :

sudo systemctl enable ufw
sudo ufw enable


Vous pouvez vérifier les changements en exécutant :

sudo ufw status

Le résultat de cette commande vous montrera via ces quelques lignes lignes que les trafics exterieurs passant par le port 80 et via le protocole de communication HTTP est désormais autorisé :

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW       Anywhere                  
80/udp                     ALLOW       Anywhere                  
Apache Full                ALLOW       Anywhere                  
80/tcp (v6)                ALLOW       Anywhere (v6)             
80/udp (v6)                ALLOW       Anywhere (v6)             
Apache Full (v6)           ALLOW       Anywhere (v6)             

Vous pouvez maintenant vérifier que votre serveur est opérationnel en tapant dans la bare d'URL de votre moteur de recherche l'adresse IP que vous avez précédement récupéré, ce qui devrait nous donner :

image WikiInstall_Capture_du_20200701_103618.png (78.8kB)

Si c'est le cas, félicitation ! Votre serveur Apache est désormais opérationnel 😁.

Installation d'un système de gestion base de données

Une base de données est un ensemble d'informations ou donénes organisées en tableaux afin d'être facilement accessibles, gérées et mises à jour. Un système de gestion de base de données (SGBD) est un logiciel permettant de stocker, manipuler et accéder à ces données.

Deux modèles de bases de données se détachent :
  • • les bases de données relationnelles. Elles sont constituées d’un ensemble de tableaux reliés entre eux par des relations. Au sein de ces tableaux, les données sont classés par catégories (ou attributs). Le langage standard pour manipuler ce genre de données est le Structured Query Langage (SQL). Parmi les plus connues, citons SQLite, Oracle, MySQL, MariaDB (fork de MySQL), PostgreSQL et Microsoft SQL Server.
  • • les bases de données NoSQL . Plus récentes, elles présentent une architecture distribuée et permettent la manipulation de volume de données importants. Elles sont en plein essor dans le contexte du Big Data. On retiendra comme logiciels Cassandra, MongoDB , Voldemort, CouchDB et SimpleDB .
Nous détaillons ci-dessous l'installation et l'utilisation des serveurs de base de données MariaDB et PostgreSQL compte tenu de la vaste documentation disponible.

Installation du serveur de base de données MariaDB


MariaDB s'installe via le paquet mariadb-server
apt install mariadb-server
Par défaut, le seul compte utilisateur disponible dans MariaDB est le compte root, non protégé par mot de passe. Ce comportement n’étant pas sécurisé, nous allons lancer un script de configuration:
mysql_secure_installation
qui permet de :
  • • changer le mot de passe au compte root de MariaDB ;
  • • empêcher les connexions anonymes ;
  • • désactiver les connexions distantes réalisées avec le compte root ;
  • • supprimer la base de test.

Installation et utilisation des clients


Pour pouvoir se connecter et administer la base de données du serveur MariaDB (resp. PostgreSQL ) depuis un terminal, on installe le client correspondant
apt install mariadb-client
(resp. apt install postgresql-client)

La connexion à MariaDB (resp. PostgreSQL ) s'effectue à l'aide de la commande
mariadb -u db_user -D db_name -p
(resp. psql -U db_user -d db_name -W)
où db_name désigne le nom de la base de données et db_user le nom de l'utilisateur à utiliser.
Il est aussi possible d'utiliser mariadb (resp. psql) en mode non interactif, avec l'option -e :
mariadb -u db_user -D db_name -p -e "SQL_expression "
(resp. psql -U db_user -d db_name -W -c "SQL_expression")

Il est aussi possible d'utiliser l'application Web Adminer (anciennement PhpMyAdmin ) pour manipuler les bases de données SQL gérées par SQLite, MariaDB et PostgreSQL . Il suffit pour cela de télécharger le fichier adminer.php sur un serveur Web (HTTP+PHP) et d'y faire pointer son navigateur Web.

En général, une application Web requiert la création d'un compte utilisateur et d'une base de données dédiée. Ceci peut se faire depuis le client avec les requêtes SQL suivantes
CREATE DATABASE db_name;
CREATE USER 'db_user' IDENFIED BY PASSWORD 'password';
GRANT ALL PRIVILEGES ON db_name.* TO 'db_user'@localhost IDENTIFIED BY 'password'
FLUSH PRIVILEGES;
db_name désigne le nom de la base de données, db_user le nom de l'utilisateur et password le mot de passe utilisateur.

Installation PHP

Le langage PHP est un language de programation donc l'objectif principal est de générer des pages web dynamiques. A contrario d'une page statique dont le contenu est identique à chaque consulation, une page dynamique verra son contenu varier en fonction des différents paramètres, tels que les actions de l'utilisateur (heure, nom de l'utilisateur, champs remplis, etc).

Le serveur HTTP Apache interprète nativement le langage PHP en ajoutant le module libapache2-mod-php
apt install libapache2-mod-php

Nous allons en profiter pour installer quelques modules PHP qui nous seront utiles pour le Wiki 😁:

sudo apt install php-{curl,gd,intl,memcache,xml,zip,mbstring,json}

Ensuite, vous aurez besoin d'instaler module permettant à PHP de communiquer avec le SGBD MariaDB :

sudo apt install php-mysql

Lorsque vous y êtes invité, tapez "Y" et "Entrée" pour confirmer l'installation.

Il est désormais nécessaire de redémarer Apache afin qu'il prenne en compte tout ces changements :

sudo systemctl reload apache2

Afin de vérifier que PHP fonctionne correctement sous Ngnix, nous allons créer un fichier info.php à la racine de notre serveur Web, comme ceci :

sudo nano /var/www/html/info.php

Saisisez ensuite ces deux lignes dans le fichier nouvellement créé :

<?php
phpinfo();

Appuyez simultanément sur "CTRL+O" puis sur la touche "Entrée" pour sauvegarder et fermer le fichier info.php.

Maintenant, tapez votre adresse ip dans la bare d'URL de votre navigateur, suivi de /info.php. Normalement, cette page devrait apparaitre :

image Capture_du_PHP_Apache.png (59.5kB)

Félicitations, PHP fonctionne correctement avec votre serveur apache ! serveur Ngnix est désormais capable d'interpréter et d'intéragir avec le langage PHP !

Installation de NextCloud

Afin de pouvoir stocker et gérer gérer les données relatives aux utilisateurs, NextCloud a besoin d'une base de donnée dédiée. Nous allons créer cette dernière en entrant dans l'interface de MariaDB.

mysql

Nous pouvons désormais créer une base de donnée vierge, que nous appelerons ici "nextcloud" :

create database nextcloud;

Maintenant que notre base de donnée est créée, nous allons créer un utilisateur pour cette base, en lui donnant tous les droits d'accès à celle-ci. N'oubliez pas de remplacer "nom_utilisateur" et "mot_de_passe" par le nom et le mot mot de passe que vous souhaitez accorder à ce futur utilisateur 😌.

grant all privileges on nextcloud.* TO 'nom_utilisateur'@'localhost' identified by 'mot_de_passe';

Sous Linux, les logiciels serveurs utilisent un groupe d'utilisateur nommé "www-data". Afin que le serveur NextCloud puisse être correctement créé, il est nécessaire d'accorder les droits d'accès à ce groupe au dossier contenant votre NextCloud, commme ceci :

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

Votre base de donnée est désomais créée et prête à être utilisée par votre Wiki
Pour télécharger la dernière version de NextCloud, rendez-vous sur ce lien.

Choisissez Web Installer et sauvegardez l'url de téléchargement qui vous est proposée.

Ouvrez maintenant un terminal sur votre machine qui hébergera le serveur NextCloud, et placez vous dans le dossier qui sera la racine de serveur NextCloud :

sudo cd /var/www/html/nextcloud

Vous allez maintenant pouvoir télécharger les fichiers d'installation de NextCloud. Pour ce faire, nous allons utiliser la commande wget, suivie de l'url que vous avez sauvegardée jsute avant, ce qui nous donne dans le cas présent :

sudo wget https://download.nextcloud.com/server/installer/setup-nextcloud.php

Vous pouvez dors et déjà accèder à votre serveur NextCloud en entrant l'adresse IP dans la barre d'Url de votre navigateur, suivi d'un "/" suivi de nextcloud:

adresse_ip_du_serveur/nextcloud

Votre serveur NextCloud vous acceuillera avec une page de configuration.

Une fois sur cette page, il vous suffit de remplir les champs, les boutons "Aide" vous expliqueront comment 😁 .
Il faut juste savoir que le champ "Base de donnée MySQL" correspond au nom de la base de donnée que vous avez précédement créé, "Nom d'utilisateur MySQL" au au nom d'utilisateur que vous avez créé pour utiliser la base, et "Mot de passe MySQL" au mot de passe dudit utilisateur.

Cette fiche n'est pas relue. La fin doit être mise à jour et testée.



Et ensuite ?

Pour le moment, votre Wiki n'est acessible que par l'adresse IP de la machine sur lequel il est implémenté. Au dela du fait que cette solution est loin d'être ergonomique, laisser apparaitre son adresse IP au yeux de tous est assz risqué...

La solution est de lier son adresse IP à ce que l'on appellle un nom de domaine, qui est un nom redirigeant les requètes des utilisateurs sur l'adresse IP.
A titre d'exemple, lorsque vous voulez aller sur Wikipededia, vous ne tapez pas son adresse IP dans la barre d'URL ou de recherche, vous tapez tout simplement... Wikipedia 🤷.

Vous pouvez obtenir un nom de domaine pour votre Wiki par différents prestataires, notament OVH.
Lorsque vous accèdez à certains sites, vous remarquerez que leur URL commence parfois (souvent) par HTTPS.l'HTTPS reprend le protocole HTTP tout en rajoutant une couche de sécurité nommé SSL. Cette couche permet nottament de chiffrer toutes les données échangées entre le client et le serveur, ce qui est préférable.
Afin d'ajouter cette couche, vous pouvez utiliser le service Certbot., proposant un certificat permttant l'activation du SSL sur votre site.
Il faut bien avouer que l'accès aux fichier du serveur et leur édition via le terminal est loin d'être ergonomique... de plus qe l'on ne peux pas y accèder à distance 😕.

Afin d'accèder au terminal de votre serveur depuis une autre machine, vous pouvez utiliser le protocole SSH, un tutoriel pour Debian est disponible ici.

Pour pouvoir accèder aux fichiers depuis une interface graphique et transférer des fichiers d'un d'ordinateur distant sur votre serveur, vous pouvez installer ce que l'on appelle un serveur FTP. Un tutoriel pour debian est disponible ici.
L'utilisation de ce protocole vous facilitera grandement la vie, notament pour les mises à jour de votre Wiki 😁.

Pour pouvoir accèder à vos fichiers depuis un réseau exterieur à celui sur lequel est connecté votre serveur, vous devrez procéder à une ouverture de ports de votre box ou routeurs internets. Par exemple, pour le SSH, le port utilisé par défaut est le port 22, et 21 pour le FTP.

Onlyoffice -> https://helpcenter.onlyoffice.com/server/linux/document/linux-installation.aspx
Behind proxy -> https://helpcenter.onlyoffice.com/server/document/document-server-proxy.aspx
Jouralisation -> /var/log/onlyoffice/documentserver

Collabora -> https://www.collaboraoffice.com/code/linux-packages/
Behind proxy -> https://www.collaboraoffice.com/code/nginx-reverse-proxy/