Il existe des centaines de façons de partager des fichiers via Internet. Les services les plus populaires comme DropBox ou Google Drive, peuvent faire l’affaire pour des quantités limitées. Par contre, dès que l’on commence à avoir plus de volume ou que l’on veux gérer des équipes de tarvail, les prix de ces plateformes montent de façon exponentielle. Il existe pourtant des solutions gratuites, libres, et sécuritaires. La solution la plus intéressante ces dernières années est, à mon avis, NextCloud version communautaire.
NextCloud supporte Windows, Mac, Linux, Android et iOS. Vous pouvez l’installer sur un ordinateur de votre réseau local, ou encore, l’héberger sur une machine virtuelle (VM) en location dans le cloud. Il y a plusieurs avantages à mettre votre NextCloud en hébergement externe. Entre autres, Ubuntu 18.04 sera déjà installé et vous n’aurez pas besoin de compromettre la sécurité de votre LAN en ouvrant des ports sur votre routeur. Mais surtout, en cas de sinistre, vos données sont hors d’atteinte.
Passons à l’action…
Prérequis pour un serveur local sur votre LAN:
- Un ordinateur capable de rouler adéquatement GNU/Linux et avoir déjà installé Ubuntu 18.04 (exemple minimal: 2 Gb RAM + iCore 2 Duo)
- Un disque dur SATA ou SSD de la grosseur qui vous plaira.
- Un RAID serait apprécié.
Prérequis pour une VM:
- 1 processeur virtuel pour les bas débits.
2 processeurs ou plus pour les plus grandes demandes. - 1Gb de mémoire RAM au minimum.
2 Gb ou plus pour les plus grandes demandes. - Pour la grosseur de votre disque virtuel, allez-y selon vos besoins et votre budget.
On divise l’installation en 5 étapes
Préparer un serveur Web (Apache2) pour NextCloud
Préparer la base de donnée MariaDB
Installer NextCloud (version 13.02)
Optimiser les performances
Sécuriser la connexion avec OpenSSL
Préparer un serveur Web
Installer le serveur apache
sudo apt install apache2
Pour restreindre l’accès aux répertoires, dans apache2.conf, retirer « Indexes » et ne gardez que « FollowSymLinks ».
sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/apache2/apache2.conf
Démarrez le service « apache2 » et assurez-vous qu’il soit toujours en marche.
sudo systemctl start apache2.service sudo systemctl enable apache2.service
Avant de passer à l’étape suivante, assurez-vous que tout fonctionne. Visitez la page Web par défaut de apache2.
Si vous ne connaissez pas votre adresse IP, voici une commande qui vous donne l’adresse IP de votre serveur.
sudo ip add | grep inet
Ajoutez le dépôt pour les modules PHP 7.
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
Installez PHP 7 et les modules nécessaires.
sudo apt install php7.1
sudo apt install libapache2-mod-php7.1 php7.1-common php7.1-mbstring php7.1-xmlrpc php7.1-soap php7.1-apcu php7.1-smbclient php7.1-ldap php7.1-redis php7.1-gd php7.1-xml php7.1-intl php7.1-json php7.1-imagick php7.1-mysql php7.1-cli php7.1-mcrypt php7.1-ldap php7.1-zip php7.1-curl
Ajustez les paramètres PHP 7.1 en fonction des besoins de Nextcloud
sudo nano /etc/php/7.1/apache2/php.ini
memory_limit = 256M
upload_max_filesize = 500M
date.timezone = America/Montreal
Préparer la base de données MariaDB
Installez le serveur mariadb et le client aussi.
sudo apt install mariadb-server mariadb-client
Ensuite activez les services.
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Pour bien sécuriser votre installation, lancez mysql_secure_installation et répondez au questionnaire. Notez que vous allez devoir choisir un mot de passe.
sudo mysql_secure_installation
Set root password? [Y/n]: Y
New password: MonMotDePasseRoot
Re-enter new password: MonMotDePasseRoot
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Redémarrez le serveur MariaDB
sudo systemctl restart mariadb.service
Créez une base de donnée NextCloud.
sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE nextcloud;
MariaDB [(none)]> CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'MonMotDePasse';
MariaDB [(none)]> GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'MonMotDePasse' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Installer NextCloud (version 13.02)
Téléchargez et installez Nextcloud dans le répertoire « /var/www/html/nextcloud ».
Ajustez les permissions et attribuez l’utilisateur et le groupe à « www-data ».
cd ~ mkdir temp cd temp wget https://download.nextcloud.com/server/releases/nextcloud-13.0.2.zip sudo apt install unzip unzip nextcloud-13.0.2.zip sudo mv nextcloud /var/www/html sudo chown -R www-data:www-data /var/www/html/nextcloud/ sudo chmod -R 755 /var/www/html/nextcloud/ sudo systemctl restart apache2.service sudo systemctl status apache2.service
Vous devriez voir un rapport qui ressemble à ceci.
apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Sat 2018-05-26 18:49:57 UTC; 41s ago Process: 2060 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) Process: 2065 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 2081 (apache2) Tasks: 6 (limit: 1113) CGroup: /system.slice/apache2.service ├─2081 /usr/sbin/apache2 -k start ├─2084 /usr/sbin/apache2 -k start ├─2085 /usr/sbin/apache2 -k start ├─2086 /usr/sbin/apache2 -k start ├─2087 /usr/sbin/apache2 -k start └─2088 /usr/sbin/apache2 -k start May 26 18:49:57 ncubuntu1804 systemd[1]: Stopped The Apache HTTP Server. May 26 18:49:57 ncubuntu1804 systemd[1]: Starting The Apache HTTP Server... May 26 18:49:57 ncubuntu1804 systemd[1]: Started The Apache HTTP Server.
Créez un fichier site pour apache2 et enregistez-le. Vous pouvez l’appeler nextcloud.conf.
sudo nano /etc/apache2/sites-available/nextcloud.conf
ServerAdmin me@myserver.com DocumentRoot /var/www/html/nextcloud/ ServerName xx.xx.xx.xx ServerAlias www.xx.xx.xx.xx Alias / "/var/www/html/nextcloud/" Options +FollowSymlinks AllowOverride All Require all granted Dav off SetEnv HOME /var/www/html/nextcloud SetEnv HTTP_HOME /var/www/html/nextcloud ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
Pour que cette configuration soit bonne vous devez activer les modules suivants et relancer Apache2
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite
sudo a2enmod headers
sudo systemctl restart apache2
Finalement, ouvrez votre site Nextcloud et entrez les informations pour votre base de données MariaDB
Optimisez les porformances
Si ce n’est pas déjà fait, ouvrez « php.ini » et apportez les modifications suivantes.
sudo nano /etc/php/7.1/apache2/php.ini
file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_filesize = 500M
display_errors = Off
date.timezone = America/Montreal
Sécurisez vorte Serveur Nextcloud
Afin d’utiliser les certificats SSL, vous devez installer OpenSSL. Dans cette configuration le certificat est auto signé. Il est simplement associé l’adresse IP ou au nom du serveur.
sudo mkdir -p /etc/apache2/ssl
sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/nextcloud.pem -keyout /etc/apache2/ssl/nextcloud.key
Créez votre fichier nextcloud-ssl.conf
sudo nano /etc/apache2/sites-available/nextcloud-ssl.conf
ServerAdmin me@opencanopea.com DocumentRoot /var/www/html/nextcloud ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on # A self-signed (snakeoil) certificate can be created by installing # the ssl-cert package. See # /usr/share/doc/apache2/README.Debian.gz for more info. # If both key and certificate are stored in the same file, only the # SSLCertificateFile directive is needed. SSLCertificateFile /etc/apache2/ssl/nextcloud.pem SSLCertificateKeyFile /etc/apache2/ssl/nextcloud.key #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire SSLOptions +StdEnvVars SSLOptions +StdEnvVars
Activez le site Nextcloud en mode SSL.
sudo a2ensite nextcloud-ssl.conf
systemctl reload apache2
Éditez votre fichier nextloud.conf et mettez les règles de réécritures décrites en vert. Ces règles redirigent les visites vers le site sécurisé.
ServerAdmin me@opencanopea.com DocumentRoot /var/www/html/nextcloud/ ServerName 00.00.00.00 ServerAlias oc.00.00.00.00 Alias / "/var/www/html/nextcloud/" RewriteEngine on ReWriteCond %{SERVER_PORT} !^443$ RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] Options +FollowSymlinks AllowOverride All Require all granted Dav off SetEnv HOME /var/www/html/nextcloud SetEnv HTTP_HOME /var/www/html/nextcloud ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
Redémarrez Apache2
sudo a2enmod ssl
systemctl reload apache2
Activer la sécurisation des dossiers via « .htaccess ». Pour cela, mettez les lignes en vert dans votre fichier nextcloud-ssl.conf. Cet ajustement prévient le visionnement des documents Nexcloud par navigation web.
Profitez de l’occasion pour paramètrer « Strict-Transport-Security ».
ServerAdmin lcayer@opencanopea.com DocumentRoot /var/www/html/nextcloud Options Indexes FollowSymLinks AllowOverride All Require all granted Header always set Strict-Transport-Security "max-age=15552000; includeSubdomains;" ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on # A self-signed (snakeoil) certificate can be created by installing # the ssl-cert package. See # /usr/share/doc/apache2/README.Debian.gz for more info. # If both key and certificate are stored in the same file, only the # SSLCertificateFile directive is needed. SSLCertificateFile /etc/apache2/ssl/nextcloud.pem SSLCertificateKeyFile /etc/apache2/ssl/nextcloud.key #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire SSLOptions +StdEnvVars SSLOptions +StdEnvVars </IfModul
Voilà! Votre serveur NextCloud est en route et bien sécurisé.
Prochanement…
Coment installer un filtre anti Crypto -Virus sur votre serveur NextCloud.
À propos de l’auteur:
Louis Cayer est chargé du développement des affaires chez PointLog Solutions Inc. Il est l’instigateur du projet OpenCanopea. Consultez www.opencanopea.com pour des détails sur nos hébergements NextCloud et Owncloud.