Projet « Installation et sécurisation de Nextcloud Hub »
Un Cloud personnel : le rêve… ; gérer le stockage de fichiers, le partage de fichiers entre amis, la création de liens publics, la création de galeries photos, le streaming de vidéos ou de musiques, la synchronisation d’un dossier entre plusieurs appareils, etc…
Les données ne sont plus stockées sur les serveurs des GAFAM je ne sais où, elles sont désormais chez vous, dans votre garage ou le bureau . Vous êtes le seul maître de vos données. Vous pouvez réunir sur à un seul endroit toutes les données de tous vos appareils et y accéder depuis la maison ou l’extérieur, en évitant ainsi les publicités, la surveillance des masses etc. Bref, le rêve !
Alons-y!
Nous allons l’installer sur un Cent OS 8 (ou derivés AlmaLinux, RockyLinux)
Step 1 – Désactivez SELinux
Avant de commencer, nous devons désactiver SELinux sur le système.
Pour désactiver SELinux, ouvrez le fichier /etc/selinux/config :
nano /etc/selinux/config
Modifiez la ligne suivante :
SELINUX=disabled
Step 2 – Installez la stack LAMP
Tout d’abord, pour configurer Nextcloud, vous devez avoir un serveur LAMP en cours d’exécution sur votre système CentOS 8. Si vous avez déjà exécuté la stack LAMP, ignorez cette étape, sinon utilisez les commandes suivantes pour l’installer.
Installez Apache2
sudo dnf install httpd
Installez MySQL
sudo dnf install @mysql
sudo mysql_secure_installation
Installez PHP
NextCloud 23 required PHP 7.3 or higher version. Let’s install PHP on your system using below comamnd.
sudo dnf install php php-gd php-curl php-zip php-dom php-xml php-simplexml php-mbstring php-intl php-json
Step 3 – Download Nextcloud
After successfully configuring lamp server on your system, Let’s download latest Nextcloud from its official website.
cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-23.0.0.zip
Now extract downloaded archive under website document root and set up appropriate permissions on files and directories.
cd /var/www
sudo unzip /tmp/nextcloud-23.0.0.zip
sudo chown -R apache:apache nextcloud
sudo chmod -R 755 nextcloud
Nextcloud required a directory to keep its data. So create a data directory and set the proper permissions on nextcloud directory
mkdir -p /var/nextcloud/data
sudo chown -R apache:apache nextcloud
sudo chmod -R 755 nextcloud
Step 4 – Create MySQL User and Database
After extracting code, let’s create a MySQL database and user account for configuring Nextcloud. Use following set of command to login to MySQL server and create database and user.
mysql -u root -p
Enter password:
mysql> CREATE DATABASE nextcloud; mysql> CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password'; mysql> GRANT ALL ON nextcloud.* to 'nextcloud'@'localhost'; mysql> FLUSH PRIVILEGES; mysql> quit
Step 5 – Configure Apache
Now configure Apache server to host Nextcloud. Create a configuration file with an Alias to Nextcloud directory.
sudo vim /etc/httpd/conf.d/nextcloud.conf
Add below values:
Alias /nextcloud"/var/www/nextcloud"
<Directory /var/www/nextcloud> Options +FollowSymlinks AllowOverride All Dav off
SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud
Save file and close it. Now, restart Apache service to reload changes.
sudo systemctl restart httpd
Step 6 – Run Nexctloud Web Installer
Now access the Nextcloud directory on a web browser as below. Change localhost to your server IP address or domain name.
http://server_ip/nextcloud/
OCC : Script d’administration Il existe un script dans nextcloud nommé « occ » à la racine de Nextloud.
sudo -u apache php occ list
sudo -u apache php occ upgrade
sudo -u apache php occ db:convert-type --all-apps mysql mysqluser mysqlhost mysqlbase
Si on souhaite monter la limite à 512Mo par exemple, il faut éditer le fichier /etc/php.ini et modifier les lignes suivantes :
Code BASH :
upload_max_filesize = 512M post_max_size = 512M
Pour solutionner le problème « default phone region incorrect », editez le fichier « config/config.php » et d’ajouter la ligne:
'default_phone_region' => 'FR',
Installation d’un certificat SSL
Lors de son installation, Apache vient avec des certificats auto-signés. Nous utiliserons dans ce guide l’un d’entre eux:
a2enmod ssl
a2ensite default-ssl
service apache2 reload
Activation du HSTS
Cette fonctionnalité permet de rediriger toutes vos connexions non chiffrées (HTTP) vers celles qui sont sécurisées (HTTPS).
dnf install mod_ssl
firewall-cmd --zone=public --permanent --add-service=https
success
firewall-cmd --reload
success
#openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/httpd.key -x509 -days 365 -out /etc/pki/tls/certs/httpd.crt #nano /etc/httpd/conf.d/ssl.conf change this lines FROM: SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key TO: SSLCertificateFile /etc/pki/tls/certs/httpd.crt SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
#systemctl reload httpd
Créez la tache Cron avec:
crontab -u apache -e
Ajoutez cette ligne: */5 * * * * /usr/bin/php -f /var/www/nextcloud/cron.php
Vérifiez la tache:
crontab -u apache -l
Pour la tache cron ne pas oublier d’activer les options dans le fichier /etc/php.d/40-apcu.ini et decommentez/modifiez la ligne apc.enable_cli=1 :
; Enable APCu extension module extension = apcu.so
; This can be set to 0 to disable APCu apc.enabled=1
; Setting this enables APCu for the CLI version of PHP ; (Mostly for testing and debugging). apc.enable_cli=1
Si la tache cron ne se lance pas comme prévu, tentez de la lancer manuellement et consultez les logs.
#sudo -u apache php -f /var/www/nextcloud/cron.php
Et voila le travail !
Un peu de personnalisation, et notre Nextcloud tout neuf est maintenant prêt.
Télécharger Installation de Nextcloud TP_FD.pdf