OwnCloudCet article décrit l’installation et la maintenance d’un serveur OwnCloud sur un serveur dédié tournant sous Rocky Linux 8. 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.

AstuceNote pour les chipoteurs : Oui, j’utilise OwnCloud. Non, je n’utilise pas Nextcloud. Oui, je sais que Nextcloud c’est le futur, et je l’utiliserai volontiers dans le futur. Pour l’instant, rien ne me motive à migrer vers autre chose du moment que tout fonctionne parfaitement. L’herbe est toujours plus verte ailleurs.

Prérequis

En dehors des paquets de base de PHP 7.4, OwnCloud a besoin de quelques modules supplémentaires dont certains sont fournis exclusivement par le dépôt tiers de Remi Collet :

# dnf install -y php-gd php-intl php-pecl-zip php-process
# systemctl reload httpd php-fpm

Configuration de SELinux

L’utilisation de SELinux en mode renforcé (Enforcing) améliore de façon significative la sécurité de notre installation OwnCloud, mais elle nécessite de procéder à quelques petits ajustements.

É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 :

# 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 :

# 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 :

# setsebool -P httpd_can_network_connect on

AstucePour afficher la liste complète des booléens SELinux personnalisés, on pourra utiliser la commande semanage boolean -lC.

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-155842.dedibox.fr/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/sd-155842.dedibox.fr/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/sd-155842.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 en un endroit approprié :

# mkdir -v ~/webapps/owncloud
mkdir: created directory '/root/webapps/owncloud'

Récupérer l’archive compressée de l’application :

# cd webapps/owncloud/
# wget -c https://download.owncloud.com/server/stable/owncloud-10.13.4.tar.bz2

Installation

Créer la base de données :

# mysql -u root -p
Enter password: **********
Welcome to the MariaDB monitor.
MariaDB [(none)]> create database `slackbox-owncloud`;
Query OK, 1 row affected (0.001 sec)

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

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.004 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/
# mkdir -v slackbox-owncloud
mkdir: created directory 'slackbox-owncloud'
# chown nobody:nobody slackbox-owncloud/
# cd slackbox-owncloud/
# tar -xjf ~/webapps/owncloud/owncloud-10.13.4.tar.bz2 
# ls
owncloud
# mv -v owncloud/ html
renamed 'owncloud/' -> 'html'

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

  • instance.sh
  • owncloud_prep.sh

Rangez-ces deux scripts dans un endroit approprié comme par exemple ~/bin et rendez-les exécutables :

# cd ~/bin
# chmod +x instance.sh owncloud_prep.sh

Voici les variables du script instance.sh dans la configuration par défaut :

ocname='owncloud'
ocroot='/var/www'

linkroot='/mnt/owncloud_data'

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

Voici une petite vue d’ensemble sur la signification exacte de ces variables :

  • ocname : le répertoire qui contient l’application OwnCloud.
  • ocroot : le chemin complet vers ocname.
  • linkroot : le chemin complet vers les répertoires data et apps-external.
  • htuser : l’utilisateur qui fait tourner Apache.
  • htgroup : le groupe qui fait tourner Apache.
  • rootuser : de manière pragmatique, c’est l’utilisateur auquel on va attribuer tout ce qui n’appartient pas à Apache.

J’adapte le script à mon installation :

ocname='html'
ocroot='/var/www/slackbox-owncloud'

linkroot='/var/www/slackbox-owncloud'

htuser='apache'
htgroup='apache'
rootuser='nobody'

Il ne me reste plus qu’à l’exécuter :

# ./instance.sh 

Consider backing up the database before you continue when upgrading!

Following parameters used

ocname: html
ocroot: /var/www/slackbox-owncloud
linkroot: /var/www/slackbox-owncloud
htuser: apache
htgroup:  apache
rootuser:  nobody

Do you want to secure your .htaccess files post installing/upgrade (y/N)? n
Do you want to install a new instance (y/N)? n
Do you want to upgrade an existing installation (y/N)? n
Use links for data and apps-external directories (Y/n)? y
Do you want to chmod/chown these links (y/N)? y

Creating or linking possible missing directories 
ln /var/www/slackbox-owncloud/html/data --> /var/www/slackbox-owncloud/data
ln /var/www/slackbox-owncloud/html/apps-external --> /var/www/slackbox-owncloud/apps-external

chmod files and directories excluding data and apps-external directory
chmod data and apps-external directory (linked) 
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 (linked) 

chmod occ command to make it executable 

SUCCESS

AstuceJ’ai surligné en rouge la seule occurrence où je n’ai pas accepté le choix par défaut. Concrètement, j’attribue par là les répertoires data et apps-external à l’utilisateur apache et au groupe apache.

Ouvrir l’assistant d’installation dans un navigateur web :

OwnCloud installation

  • Définir un compte administrateur.
  • Vérifier le chemin vers l’emplacement du répertoire de données data.
  • Choisir MySQL/MariaDB comme serveur de bases de données.
  • Renseigner les paramètres de connexion à la base, en précisant explicitement le port 3306.
  • Cliquer sur Terminer l’installation.

OwnCloud 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 :

OwnCloud

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

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 :

OwnCloud

Si l’on est connecté en tant qu’administrateur, cliquer sur l’identifiant 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 quant à la configuration :

OwnCloud

Configurer le cache de la mémoire

Nous allons commencer par l’avertissement qui concerne une possible amélioration des performances de notre installation.

Installer le cache APCu :

# dnf install -y php-pecl-apcu

Prendre en compte les modifications :

# systemctl reload httpd php-fpm

É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.13.4.1',
  'dbname' => 'slackbox-owncloud',
  'dbconnectionstring' => '',
  'dbhost' => 'localhost:3306',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'slackboxuser',
  'dbpassword' => '**********',
  'allow_user_to_change_mail_address' => '',
  '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é :

OwnCloud

Configurer le verrouillage transactionnel des fichiers

Le prochain avertissement concerne le verrouillage transactionnel des fichiers.

Installer le serveur Redis et le module PHP correspondant :

# dnf install -y redis php-pecl-redis5

Activer et démarrer le serveur Redis :

# systemctl enable redis --now

Prendre en compte l’installation du nouveau module PHP :

# systemctl reload httpd php-fpm

É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é :

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.

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

# 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 :

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 :

OwnCloud

Documentation

La documentation officielle est un joyeux mélange de rigueur et de flou artistique. Voici une vue d’ensemble des pages qui m’ont été utiles pour installer et configurer 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.

 


1 commentaire

Cascador · 12 janvier 2024 à 13 h 43 min

Yo,

Tu as vu https://nextcloud.com/blog/kiteworks-acquires-owncloud-dracoon/ ?

Tcho !

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *