Comment installer ownCloud sur CentOS 7.6

tutoriel owncloud

ownCloud est un logiciel libre permettant de créer votre propre service de stockage et collaboration dans le « cloud ». Similaire à Dropbox, la version gratuite de ownCloud n’offre toutefois pas d’espace de stockage. Le logiciel doit être installé sur un serveur VPS ou dédié. À défaut d’utiliser l’espace local du serveur pour héberger les fichiers, ownCloud peut aussi se connecter aux services de stockage suivants:

Les protocoles suivants sont aussi supportés:

  • SFTP
  • SMB (Partage Samba)
  • WebDAV

Somme toute, ownCloud offre une grande flexibilité de stockage, et la version gratuite sera suffisante pour utilisation personnel, ainsi que les petites et moyennes entreprises. Qui plus est, de multiples modules d’extension peuvent être ajoutés à ownCloud. Certains sont gratuits, d’autres sont payants:

owncloud market

Dans ce tutoriel, nous verrons comment installer ownCloud sur un serveur virtuel avec CentOS 7.6.

Étape #1: Création d’un Droplet DigitalOcean

Si vous n’avez pas déjà un serveur virtuel (ou même physique), je vous recommande d’essayer DigitalOcean. Leur serveurs cloud, appelés « Droplets », sont performants et abordables. Qui plus est, DigitalOcean vous offre de multiples emplacements de centre de données. D’ailleurs, vous obtiendrez $100 de crédit pour essayer leur service lors de votre enregistrement.

Pour créer un nouveau serveur cloud, cliquez sur « Create » depuis le panneau de contrôle de DigitalOcean:

Droplet CentOS 7.6

Sélectionnez ensuite le système d’exploitation CentOS 7.6:

creation droplet centos 7

Si vous souhaitez installer un antivirus tel que ClamAV sur votre serveur, un minimum de 2GB de mémoire vive est nécessaire:

droplet clamav

Spécifiez ensuite l’emplacement désiré pour votre Droplet:

emplacement droplet

Et finalement, entrez le nom d’hôte pour votre nouveau serveur:

digitalocean droplet nom hote

Cliquez ensuite sur « Create » pour débuter la création du nouveau Droplet. Une fois la création complétée, notez l’adresse IP du serveur.

adresse ip droplet

Ajoutez cette adresse à vos enregistrements DNS:

ajouter adresse ip au serveur dns

Entre-temps, vérifiez votre boîte de courriel. Vous y trouverez un email de DigitalOcean contenant le mot de passe du compte « root » de votre Droplet.

Étape #2: Installation de Apache, PHP, et MySQL

Connectez-vous à votre serveur en tant que « root », à l’aide d’un client SSH tel que Putty. Procédez à une mise à jour complète de CentOS et des applications installées à l’aide de Yum:

yum update -y

Ajoutez le dépôt Yum permettant d’installer PHP 7.2:

yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php72

Créez le dépôt Yum pour MariaDB:

vi /etc/yum.repos.d/mariadb.repo

Ajoutez le contenu suivant au fichier mariadb.repo:

[mariadb]
name=MariaDB
baseurl=http://yum.mariadb.org/10.3/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Sauvegardez le fichier puis quittez l’éditeur. Procédez à l’installation des applications nécessaires à ownCloud:

yum -y install epel-release MariaDB-server MariaDB-client ntp httpd mod_ssl php php-mysql php-mbstring php-zip php-opcache php-fpm php-dom php-xml php-intl php-gd redis php-pecl-redis php-pecl-apcu php-posix yum-utils certbot python2-certbot-apache samba-client

Activation et configuration de MySQL

Activez et démarrez le service MySQL:

systemctl enable mariadb
systemctl start mariadb

Sécurisez ensuite le serveur de base de données:

/usr/bin/mysql_secure_installation

Répondez aux questions comme suit:

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y

New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Activation et configuration de Apache

Procédons maintenant à la configuration du serveur Web Apache. Débutez par la désactivation du proxy HTTP:

echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf

Si le service de pare-feu de CentOS est activé, assurez-vous d’ouvrir les ports 80 (http), 443 (https), et 22 (SSH):

firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --add-service=https
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --zone=public --add-service=ssh
firewall-cmd --zone=public --permanent --add-service=ssh
firewall-cmd --reload
firewall-cmd --runtime-to-permanent
systemctl restart httpd

Assurez-vous que le serveur Web répond. Ne vous préocuppez pas des erreurs concernant SSL pour le moment:

test serveur apache httpd

Génération d’un certificat SSL Let’s Encrypt

Pour sécurisez le serveur Web, nous allons générer un certificat SSL Let’s Encrypt. Il s’agit d’un certificat SSL gratuit, qui doit être renouvellé à chaque année.

Commencez par générer une clé d’encryption DH (Diffie-Hellman):

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Nous allons ensuite créer un dossier « .well-known » qui contiendra les fichiers temporaires nécessaires lors de la création du certificat SSL:

mkdir -p /var/lib/letsencrypt/.well-known
chgrp apache /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt

Créez ensuite le fichier de configuration pour Let’s Encrypt:

vi /etc/httpd/conf.d/letsencrypt.conf

Ajoutez ensuite le contenu suivant au fichier letsencrypt.conf:

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>

Quittez l’éditeur puis créez maintenant le fichier de configuration SSL pour Apache:

vi /etc/httpd/conf.d/ssl-params.conf

Insérez le contenu suivant dans le fichier:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off

Sauvegardez le fichier puis quittez l’éditeur. Rechargez ensuite la configuration d’Apache:

systemctl reload httpd

Lancez ensuite la requête de création du certificat SSL. Modifiez la commande suivante pour utiliser votre adresse de courriel ainsi que votre nom de domaine:

certbot certonly --agree-tos --email stephane@webmestre101.com --webroot -w /var/lib/letsencrypt/ -d cloud.stephanebrault.com

Fusionnez ensuite les fichiers du certificat SSL:

cat /etc/letsencrypt/live/cloud.stephanebrault.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/cloud.stephanebrault.com/cert.dh.pem

Nous allons maintenant procéder à la configuration d’un hôte virtuel:

vi /etc/httpd/conf.d/cloud.stephanebrault.com.conf

Insérez le contenu suivant en prenant soin de modifier le nom d’hôte:

<VirtualHost *:80>
ServerName cloud.stephanebrault.com

Redirect permanent / https://cloud.stephanebrault.com/
</VirtualHost>

<VirtualHost *:443>
ServerName cloud.stephanebrault.com

DocumentRoot /var/www/html
ErrorLog /var/log/httpd/cloud.stephanebrault.com-error.log
CustomLog /var/log/httpd/cloud.stephanebrault.com-access.log combined

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/cloud.stephanebrault.com/cert.dh.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cloud.stephanebrault.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/cloud.stephanebrault.com/chain.pem

# Other Apache Configuration

</VirtualHost>

Sauvegardez le fichier de configuration puis redémarrez le service Apache:

systemctl restart httpd

Vérifiez ensuite que la connexion HTTPS fonctionne correctement:

apache verification certificat ssl

 

Configuration de PHP et PHP-FPM

Pour ce tutoriel, nous allons configurer Apache afin que les fichiers PHP soient traités par PHP-FPM (FastCGI Process Manager). Commencez par ouvrir le fichier de configuration de PHP-FPM:

vi /etc/php-fpm.d/www.conf

Recherchez la ligne suivante:

listen = 127.0.0.1:9000

Et modifiez-la ainsi:

; listen = 127.0.0.1:9000 
listen = /var/run/php-fpm/default.sock

Trouvez les lignes suivantes:

;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660

Et modifiez-les comme suit:

listen.owner = apache 
listen.group = apache 
listen.mode = 0660

Retirez le point-virgule devant ces deux lignes:

php_admin_value[memory_limit] = 128M
php_value[opcache.file_cache]  = /var/lib/php/opcache

Sauvegardez le fichier de configuration de PHP-FPM puis quittez l’éditeur. Activez puis démarrez php-fpm:

systemctl enable php-fpm
systemctl restart php-fpm

Maintenant que PHP-FPM est configuré, modifiez la configuration d’Apache. Ouvrez le fichier de configuration php.conf:

vi /etc/httpd/conf.d/php.conf

Apportez les modifications suivantes:

<IfModule mod_php7.c>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
# <FilesMatch \.(php|phar)$>
# SetHandler application/x-httpd-php
# </FilesMatch>

# Proxy declaration
<Proxy "unix:/var/run/php-fpm/default.sock|fcgi://php-fpm">
# we must declare a parameter in here (doesn't matter which) or it'll not register the proxy ahead of time
ProxySet disablereuse=off
# Note: If you configure php-fpm to use the "ondemand" process manager, then use "ProxySet disablereuse=on"
</Proxy>
# Redirect to the proxy
<FilesMatch \.php$>
SetHandler proxy:fcgi://php-fpm
</FilesMatch>

#
# Uncomment the following lines to allow PHP to pretty-print .phps
# files as PHP source code:
#
#<FilesMatch \.phps$>
# SetHandler application/x-httpd-php-source
#</FilesMatch>

#
# Apache specific PHP configuration options
# those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/tmp"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"

php_value opcache.file_cache "/var/lib/php/opcache"
</IfModule>

Redémarrez le service httpd:

systemctl restart httpd

Nous allons maintenant tester la configuration d’Apache, PHP, et PHP-FPM. Créez un fichier nommé info.php:

vi /var/www/html/info.php

Insérez-y le contenu suivant:

<?php phpinfo(); ?>

Et modifiez l’appartenance du fichier:

chown apache.apache /var/www/html/info.php

Accédez maintenant à ce fichier depuis votre navigateur Web et assurez-vous que le serveur utilise bien PHP-FPM:

phpinfo php-fpm

Activation et configuration de Redis

Redis est un système de gestion de base de données « clé-valeur » haute performance, résidant en mémoire. L’extension Redis permet d’accroître la performance de PHP, particulièrement lorsque le serveur est très sollicité.

Afin d’utiliser l’extension Redis pour PHP, Redis doit être exécuté en tant que service. Pour ce faire, modifiez le fichier redis.conf:

vi /etc/redis.conf

Repérez le paramètre daemonize et changez sa valeur à « yes »:

daemonize yes

Sauvegardez le fichier et quittez l’éditeur. Activez et démarrez ensuite le service Redis:

systemctl enable redis
systemctl start redis

Étape #3: Installation de ClamAV

ClamAV est un antivirus gratuit. Tapez cette commande pour l’installer:

yum install -y clamav clamav-scanner clamav-scanner-systemd clamav-server clamav-server-systemd clamav-update

Éditez le fichier de configuration:

vi /etc/clamd.d/scan.conf

Mettez la ligne suivante en commentaire et sauvegardez scan.conf:

# Example

Activez le mode local en retirant le « # » devant cette ligne:

LocalSocket /var/run/clamd.scan/clamd.sock

Sauvegardez le fichier puis quittez l’éditeur et lancez la mise à jour de ClamAV:

freshclam

Ajoutez ensuite une tâche « cron » afin que ClamAV soit mis à jour automatiquement:

vi /etc/crontab

Ajoutez cette ligne à la toute fin du fichier:

47 * * * * /usr/bin/freshclam --quiet

Sauvegardez le fichier et quittez l’éditeur. Rechargez ensuite la configuration du service cron:

systemctl reload crond

Dorénavant, ClamAV sera mis à jour à une fois par heure. Activez et démarrez ClamAV:

systemctl enable clamd@scan.service
systemctl start clamd@scan.service

Étape #4: Installation de ownCloud

Le serveur est maintenant prêt pour l’installation de ownCloud. Dans un premier temps, vous devez créer la base de données. Connectez-vous à MySQL à l’aide du mot de passe spécifié à l’étape #2:

mysql -u root -p

Créez ensuite la base de données ownCloud:

MariaDB [(none)]> CREATE DATABASE owncloud;

Ajustez les permissions d’accès:

MariaDB [(none)]> GRANT ALL ON owncloud.* to 'owncloud'@'localhost' IDENTIFIED BY 'mot_de_passe';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

Afin d’installer ownCloud à l’aide de Yum, vous devez premièrement importer la clé de validation à l’aide de la commande « rpm »:

rpm --import https://download.owncloud.org/download/repositories/stable/CentOS_7/repodata/repomd.xml.key

Vous pouvez ensuite télécharger le fichier de dépôt Yum pour ownCloud:

curl -L https://download.owncloud.org/download/repositories/stable/CentOS_7/ce:stable.repo -o /etc/yum.repos.d/ownCloud.repo

Lorsqu’un fichier de dépôt Yum est ajouté, utilisez la commande « clean » afin que Yum prenne en considération le changement:

yum clean expire-cache

Procédez ensuite à l’installation de ownCloud:

yum install -y owncloud-files

Ajustez les permissions sur le répertoire de configuration de ownCloud:

chmod -R 0775 /var/www/html/owncloud/config

Désactivez SELinux temporairement:

setenforce 0

Par défaut, ownCloud stock les fichiers des utilisateurs dans /var/www/html/owncloud/data. Nous allons donc créer un répertoire en dehors de /var/www/html afin d’accroître la sécurité.

mkdir /var/oc_data
chown -R apache.apache /var/oc_data

Pointez maintenant votre navigateur Web à l’adresse https://[votresiteweb.com/owncloud:

owncloud assistant installation

Spécifiez un nom d’utilisateur et un mot de passe pour le compte d’administrateur de ownCloud. Dans le champs « Data folder », entrez:

/var/oc_data

Cliquez ensuite sur « MySQL/MariaDB » et entrez les coordonnées de la base de données ainsi que l’identifiant de connexion puis cliquez sur « Finish setup ».

Une fois l’installation complétée, modifiez le fichier de configuration de ownCloud:

vi /var/www/html/owncloud/config/config.php

Insérez les paramètres suivants à la fin de la configuration:

<?php 
$CONFIG = array ( 
 'updatechecker' => false, 
 'instanceid' => '11111111111111', 
 'passwordsalt' => '22222222222222222222222222222', 
 'secret' => '33333333333333333333333333333333333333333', 
 'trusted_domains' =>  
 array ( 
   0 => 'cloud.stephanebrault.com', 
 ), 
 'datadirectory' => '/var/oc_data', 
 'overwrite.cli.url' => 'https://cloud.stephanebrault.com/owncloud', 
 'dbtype' => 'mysql', 
 'version' => '10.1.1.1', 
 'dbname' => 'owncloud', 
 'dbhost' => 'localhost', 
 'dbtableprefix' => 'oc_', 
 'dbuser' => 'owncloud', 
 'dbpassword' => 'mot_de_passe', 
 'logtimezone' => 'UTC', 
 'installed' => true,
 'memcache.local' => '\\OC\\Memcache\\APCu',
 'memcache.locking' => '\\OC\\Memcache\\Redis',
 'redis' =>  
   array (
     'host' => 'localhost',
     'port' => 6379,
   ),
);

Étape #5: Ajout d’une tâche Cron

Afin d’automatiser la maintenance de ownCloud, ajoutez une tâche cron pour le compte apache:

crontab -u apache -e

La commande crontab utilise l’éditeur « vi ». Pour insérer du texte, appuyez sur la touche « i » (pour « insertion »). Ajoutez ensuite cette ligne afin d’exécuter les tâches de maintenance une fois toutes les 15 minutes:

*/15 * * * * /usr/bin/php -f /var/www/html/owncloud/cron.php

Appuyez sur la touche « Esc » et tapez « :wq » (write and quit) pour sauvegarder le fichier et quitter l’éditeur. Rechargez la configuration du service cron:

systemctl reload crond

Étape #6: Configuration de ownCloud

Connectez-vous à l’interface Web de ownCloud à l’aide du compte d’administrateur créé à l’étape #4. Depuis le menu de droite, sélectionnez « Settings »:

owncloud settings

Dans la section « Personal > General », entrez votre adresse de courriel et cliquez sur « Set email ».

owncloud parametres personnels generaux

Profitez-en pour changez la langue pour « Français ».

Toujours dans le module « Paramètres », aller dans « Administration > Généraux ». Entrez votre l’adresse de courriel qui recevra les notifications administratives dans la section « Serveur e-mail »:

owncloud parametres generaux administration

Assurez-vous aussi qu’il n’y a aucun message d’erreur sous « Avertissements de sécurité & configuration ». Si vous rencontrez des erreurs, publiez-les ici en commentaire.

Étape #7: Ajout d’un utilisateur ownCloud

Pour ajouter un nouvel utilisateur ownCloud, cliquez sur le menu en haut à droite, puis sur « Utilisateurs »:

owncloud nouvel utilisateur

Entrez les informations pour le nouvel utilisateur puis cliquez sur « Créer ». Un mot de passe sera généré et envoyé à l’adresse courriel du nouvel utilisateur.

L’interface de ownCloud est tout de même simple à utiliser alors je ne m’attarderai pas davantage sur le sujet, je vous laisse l’explorer.

Les applications ownCloud

Une des caractéristiques clés de ownCloud est le « Marché », où on y trouve de multiples applications gratuites. Pour y accéder, vous devez être connecté en tant qu’administrateur.

owncloud market

Voici quelques applications intéressantes:

    • Contacts: Cette application permet d’accéder aux carnets d’adresses hébergés sur le serveur CardDAV de ownCloud. CardDAV est un protocole de communication qui permet à d’autres applications et d’autres appareils de se connecter à un carnet d’adresse distant.
    • OnlyOffice: Permet de créer ou modifier des documents en format DOC, DOCX, ODT, RTF, TXT, XLS, XLSX, ODS, CSV, PPTX, PPT, ODP.
    • Custom Groups: Si vous utilisez ownCloud dans une grande entreprise, ce module vous permettra d’ajouter des groupes d’utilisateurs supplémentaires afin de gérer les droits d’accès de façon granulaire.
    • Diagnostics: Utile pour les administrateurs du serveur, ce module journalise les évènements en fonction d’évènements (connexion, téléchargement, etc.) ou par utilisateur. Cet outil fourni aussi des informations quant aux ressources utilisées.

ownCloud ne possède toutefois pas autant d’applications disponibles que son alternative, NextCloud. Basé sur un « fork » de ownCloud, NextCloud propose aussi une version gratuite ainsi qu’une version pour entreprises. Mais tout ça, c’est pour un autre tutoriel.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.