OwnCloudCet article décrit l’installation et la maintenance d’un serveur OwnCloud sur un serveur dédié tournant sous CentOS 7. OwnCloud est une plateforme de stockage et de partage de fichiers et d’applications en ligne. C’est une alternative à Dropbox, lequel est basé sur un Cloud public. Dans OwnCloud, le stockage de données se fait au sein de l’infrastructure de l’entreprise, et les accès sont soumis à la politique de sécurité informatique de celle-ci.

OwnCloud vous permet de partager certains fichiers et répertoires de votre ordinateur en les synchronisant avec le serveur OwnCloud. Il suffit de définir le ou les répertoires partagés. Leur contenu est immédiatement synchronisé avec le serveur ainsi qu’avec tous les postes clients que vous définissez, que ceux-ci tournent sous Microsoft Windows, sous Mac OS X ou sous Linux. OwnCloud fonctionne également avec les smartphones et les tablettes.

Note pour les chipoteurs : Oui, je préfère OwnCloud à Nextcloud.

Prérequis

Configuration de SELinux

Étant donné que nous installons OwnCloud en-dessous de /var/www, tous les fichiers nouvellement créés seront correctement étiquetés httpd_sys_content_t. Rien à signaler de ce côté-là.

OwnCloud doit pouvoir envoyer des mails via Postfix, ce qu’il faut explicitement autoriser.

$ sudo setsebool -P httpd_can_sendmail on

Apache possède les droits d’écriture sur une partie de l’arborescence /var/www/slackbox-owncloud/html. Ces droits d’écriture seront définis par le biais des permissions Unix classiques, mais il faut également le spécifier du côté de SELinux.

$ sudo setsebool -P httpd_unified on

Enfin, si l’on souhaite configurer le verrouillage transactionnel des fichiers avec Redis, il faut que OwnCloud puisse se connecter au serveur Redis.

$ sudo setsebool -P httpd_can_network_connect on

Installation des modules PHP

En dehors d’une installation minimale de PHP 7.2 avec rh-php72, rh-php72-php-fpm et rh-php72-php-mysqlnd, OwnCloud requiert également les modules PHP suivants.

  • rh-php72-php-gd
  • rh-php72-php-mbstring
  • rh-php72-php-opcache
  • rh-php72-php-intl

Installer ces modules et relancer PHP-FPM et Apache.

$ sudo systemctl restart rh-php72-php-fpm httpd

Configuration de l’hôte virtuel

La configuration de l’hôte virtuel autorise les directives placées dans le fichier .htaccess à la racine de l’installation. Le module WebDAV doit être désactivé, étant donné qu’OwnCloud utilise son propre serveur DAV interne SabreDAV. Voici à quoi cela ressemble sur ma machine de test.

# /etc/httpd/conf.d/10-cloud.slackbox.fr-ssl.conf

# http://cloud.slackbox.fr -> https://cloud.slackbox.fr
<VirtualHost *:80>
  ServerName cloud.slackbox.fr
  Redirect / https://cloud.slackbox.fr
</VirtualHost>

# https://cloud.slackbox.fr
<VirtualHost _default_:443>
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/slackbox-owncloud/html"
  <Directory "/var/www/slackbox-owncloud/html">
    Options +FollowSymlinks
    AllowOverride All
    <IfModule mod_dav.c>
      Dav off
    </IfModule>
  </Directory>
  ServerName cloud.slackbox.fr:443
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/sd-100246.dedibox.fr/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/sd-100246.dedibox.fr/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/sd-100246.dedibox.fr/fullchain.pem
  BrowserMatch "MSIE [2-5]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
  ErrorLog logs/cloud.slackbox.fr-error_log
  CustomLog logs/cloud.slackbox.fr-access_log common
</VirtualHost>

Téléchargement

Créer un répertoire de téléchargement approprié pour ranger OwnCloud.

$ mkdir -p ~/webapps/owncloud

Télécharger OwnCloud.

$ cd ~/webapps/owncloud
$ wget -c https://download.owncloud.org/community/owncloud-10.3.2.tar.bz2

Installation

Créer la base de données.

$ mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.52-MariaDB MariaDB Server

MariaDB [(none)]> create database `slackbox-owncloud`;
Query OK, 1 row affected (0.02 sec)

MariaDB [(none)]> grant all on `slackbox-owncloud`.* 
    -> to slackboxuser@localhost 
    -> identified by '********';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

L’hôte virtuel se situera dans /var/www/slackbox-owncloud/html. Créer le répertoire parent, décompresser l’archive téléchargée à l’intérieur de ce répertoire et renommer le répertoire owncloud résultant en html.

$ cd /var/www
$ sudo mkdir slackbox-owncloud
$ sudo chown microlinux:microlinux slackbox-owncloud/
$ cd slackbox-owncloud/
$ tar -xjf ~/webapps/owncloud/owncloud-10.3.2.tar.bz2 
$ ls
owncloud
$ mv owncloud/ html

La définition manuelle des permissions serait quelque peu fastidieuse. Pour nous faciliter la tâche, OwnCloud a publié un script shell sur son site, qu’il suffit d’adapter à nos besoins.

Une fois que j’ai rangé le script owncloud.sh dans le répertoire ~/bin de mon administrateur microlinux, j’édite une poignée de variables en fonction de mon installation. Voici les variables du script dans la configuration par défaut.

ocname='owncloud'
ocroot='/var/www'
ocpath=$ocroot/$ocname
ocdata=$ocroot/$ocname/'data'
ocapps_external=$ocpath/'apps-external'
oldocpath=$ocroot/$ocname'_'$(date +%F-%H.%M.%S)

linkroot='/var/mylinks'
linkdata=$linkroot/'data'
linkapps_external=$linkroot/'apps-external'

htuser='www-data'
htgroup='www-data'
rootuser='root'

Et voici la version modifiée en fonction de mon installation.

ocname='html'
ocroot='/var/www/slackbox-owncloud'
ocpath=$ocroot/$ocname
ocdata=$ocroot/$ocname/'data'
ocapps_external=$ocpath/'apps-external'
oldocpath=$ocroot/$ocname'_'$(date +%F-%H.%M.%S)

linkroot='/var/mylinks'
linkdata=$linkroot/'data'
linkapps_external=$linkroot/'apps-external'

htuser='apache'
htgroup='apache'
rootuser='microlinux'

Il ne me reste plus qu’à exécuter le script en confirmant les choix par défaut.

$ chmod +x owncloud.sh 
$ sudo ./owncloud.sh 

Do you want to secure your .htaccess files post installing/upgrade (y/N)? n
Do you want to upgrade an existing installation (y/N)? n
Do you want to use ln instead of mkdir for creating directories (y/N)? n
Do you also want to chmod/chown these links (y/N)? n

Creating or linking possible missing directories 
mkdir /var/www/slackbox-owncloud/html/data

mkdir /var/www/slackbox-owncloud/html/apps-external 

chmod files and directories excluding data and apps-external directory 
chmod data and apps-external directory (mkdir) 

chown files and directories excluding data and apps-external directory 
chown apps directory 
chown config directory 
chown updater directory 
chown data and apps-external directories (mkdir) 

chmod occ command to make it executable

À présent, ouvrir l’assistant d’installation dans l’interface web d’OwnCloud.

Installation OwnCloud

  1. Définir un compte administrateur.
  2. Choisir MySQL/MariaDB comme serveur de bases de données.
  3. Renseigner les paramètres de connexion à la base, en précisant le port 3306.
  4. Cliquer sur Terminer l’installation.

À présent, on peut se connecter à OwnCloud avec l’identifiant et le mot de passe de l’administrateur que l’on vient de définir.

Installation OwnCloud

Lors de la première connexion, OwnCloud affiche une info sur les clients pour les différentes plateformes.

Installation OwnCloud

Une fois qu’on a fermé la fenêtre d’infos, voilà comment se présente la configuration par défaut, avec une poignée de documents et d’images qui font office de démo.

Installation OwnCloud

Peaufiner la configuration

Si l’on est connecté en tant qu’administrateur, cliquer sur le nom du login en haut à droite de la page, aller dans Paramètres dans le menu contextuel, puis suivre le lien Administration > Généraux. La page affiche une série d’avertissements de sécurité et de configuration, que nous allons traiter l’un après l’autre, pas forcément dans l’ordre proposé.

Installation OwnCloud

Configurer le cache de la mémoire

Nous allons commencer par le troisième avertissement, qui concerne une possible amélioration des performances de notre installation.

Installer le cache APCu.

$ sudo yum install rh-php72-php-pecl-apcu

Redémarrer PHP-FPM et Apache.

$ sudo systemctl restart rh-php72-php-fpm httpd

Éditer config/config.php et ajouter l’option suivante.

'datadirectory' => '/var/www/slackbox-owncloud/html/data',
'overwrite.cli.url' => 'https://cloud.slackbox.fr',
'dbtype' => 'mysql',
'version' => '10.3.2.2',
'dbname' => 'slackbox-owncloud',
'dbhost' => 'localhost:3306',
'dbtableprefix' => 'oc_',
'dbuser' => 'slackboxuser',
'dbpassword' => '*************',
'logtimezone' => 'UTC',
'memcache.local' => '\OC\Memcache\APCu',
'apps_paths' => ...

Lorsqu’on recharge la page, on s’aperçoit que le problème est réglé.

Installation OwnCloud

Configurer le verrouillage transactionnel des fichiers

Le premier avertissement concerne le verrouillage transactionnel des fichiers.

Installer le serveur Redis 5 et le module PHP correspondant. Les paquets en provenance des dépôts de paquets SCLo ont parfois des noms un peu barbares.

$ sudo yum install rh-redis5-redis sclo-php72-php-pecl-redis5

Activer et démarrer le serveur Redis.

$ sudo systemctl enable rh-redis5-redis --now

Redémarrer PHP-FPM et Apache.

$ sudo systemctl restart rh-php72-php-fpm httpd

Éditer config/config.php et ajouter l’option suivante.

'logtimezone' => 'UTC',
'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
  'host' => 'localhost',
  'port' => '6379',
],
'apps_paths' => ...

On recharge la page, et le problème est également réglé.

Installation OwnCloud

Utiliser les tâches planifiées du système

Il ne reste plus qu’à traiter l’avertissement concernant les tâches planifiées du système.

Avant toute chose, on vérifiera si l’on dispose bien d’un lien symbolique /usr/bin/php qui pointe vers l’installation en vigueur de PHP dans /opt/rh.

Éditer une tâche automatisée qui lance cron.php toutes les 15 minutes.

$ sudo crontab -u apache -e
*/15 * * * * /usr/bin/php /var/www/slackbox-owncloud/html/occ system:cron

Dans la section Cron de la page, il faudra configurer l’utilisation du service correspondant.

Installation OwnCloud

À partir de là, notre système fonctionne parfaitement. On pourra en profiter en passant pour basculer le Canal de mise à jour vers une utilisation en production.

Installation OwnCloud


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : HébergementServeur

10 commentaires

lann · 27 mars 2020 à 9 h 54 min

Pourquoi Owncloud plutôt que Nextcloud ?

    kikinovak · 27 mars 2020 à 9 h 56 min

    Pourquoi cette question à chaque fois que je publie quelque chose sur OwnCloud ?

      lann · 27 mars 2020 à 21 h 35 min

      Désolé. Je ne lis pas tout tes articles et encore moins tous les commentaires

        kikinovak · 27 mars 2020 à 22 h 22 min

        Du coup je tente une réponse en vrac.

        1. J’utilise OwnCloud depuis cinq ans environ. J’en suis très content, du coup je n’ai pas envie d’en changer. Never change a winning team.

        2. OwnCloud ne souffre pas d’un rythme de développement frénétique. J’ai horreur des projets qui n’arrêtent pas de me balancer des mises à jour à la figure toutes les semaines.

        3. J’ai l’impression (mais je peux me tromper) que les développeurs de OwnCloud préfèrent peaufiner les détails plutôt que d’ajouter désespérément de nouvelles fonctionnalités.

        4. Je sais bien que Nextcloud a fait le meilleur choix de licence, mais en regardant de près, OwnCloud me permet d’utiliser librement et gratuitement le canal de mise à jour production, alors que chez Nextcloud je dois payer le prix fort pour ça.

        Voili voilou.

          lann · 28 mars 2020 à 20 h 27 min

          Super
          Merci pour ta réponse

Nico · 27 mars 2020 à 16 h 49 min

Pourquoi ne pas utiliser Docker pour la partie stateless?

    kikinovak · 27 mars 2020 à 18 h 11 min

    Parce que je suis un adepte du principe KISS.

    Mais je note la suggestion dans un coin de ma tête.

    Merci.

Jo · 15 mai 2020 à 2 h 32 min

Est-ce que je peux utiliser la même configuration sur un serveur local à mon domicile et accéder à owncloud a distance hors de mon réseau local. Ou dois je obligatoirement avoir un serveur dédié?

    kikinovak · 15 mai 2020 à 11 h 27 min

    C’est possible, mais ce n’est pas exactement une tâche triviale. Il vaut mieux opter pour un serveur dédié pour ne pas se compliquer la vie.

      Jo · 15 mai 2020 à 21 h 01 min

      Merci pour votre réponse je vais acheter vos livre pour m’entraîner à faire un serveur local. En espérant qu’un jour vous nous ferait un Tito dessus

Les commentaires sont fermés.