Configuration d'OwnCloud

Continuons avec la configuration d'OwnCloud 8.2

Configurer l'authentification des utilisateurs depuis un LDAP (ou Active Directory)

Il faut commencer par installer php5-ldap sur le serveur

apt-get install php5-ldap && service apache2 restart

Puis dans la page d’ajout des applications de owncloud regarder dans les « applications désactivées » afin de trouver celle-ci « LDAP user and group backend » et l’activer

Il faut ensuite se rendre dans les paramètres d’administration d’Owncloud, puis dans la partie LDAP remplir les infos suivantes (les valeurs en italiques sont à adapter)

  • Hôte : mon_controleur_de_domaine.domain.com
  • DN Utilisateur : cn=mon_user_owncloud,ou=Services,ou=Utilisateurs,dc=domain,dc=com
  • Mot de passe : pwd_mon_user_owncloud
  • Un DN de base par ligne : dc=domain,dc=com

On clique ensuite sur “Poursuivre” et sélectionne le (ou les) groupe(s) d'utilisateurs Active Directory qui aura accès à Owncloud et dans lequel Owncloud devra chercher

Après avoir cliquer sur “Poursuivre” à nouveau, on est invité à sélectionner quels attributs permettrons le login, j'y ajoute “Adresse mail LDAP/AD” et sélectionne “sAMAccountName” pour “Autres attributs”

Je suis ensuite invité à choisir quels groupes seront disponibles dans OwnCloud

Et c'est finit pour le LDAP à partir de maintenant on peut se loguer avec un compte qui appartient au(x) groupe(s) définit ci dessus lors de l'étape suivant la configuration du serveur LDAP.

BONUS : Après quelques jours d'utilisation, je me suis rendu compte que les noms d'utilisateurs dans le dossier “data” d'owncloud n'était pas correct, tout comme les adresses mails des utilisateurs récupérés depuis l'active directory, pour corriger cela j'ai trouvé dans les paramètres d'administration LDAP d'OwnCloud dans l'onglet “Avancé” les paramètres suivants à remplir (pour un active directory 2012)

Voir aussi ce Blog qui m'a bien aidé à résoudre ce problème

Installer et activer un "memcache" pour améliorer les performances

ATTENTION : il faut choisir entre APCu et Redis, voir paragraphe suivant pour Redis

Installer APCu (en console/ssh)

apt-get install php5-apcu

Editer le fichier de config “/var/www/owncloud/config/config.php”

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

Et y ajouter en fin de fichier

'memcache.local' => '\OC\Memcache\APCu',

Fermer en enregistrant le fichier :wq

Relancer Apache pour appliquer les modifications

service apache2 restart

Installer et configurer "Redis" pour la gestion du verrouillage transactionnel de fichiers

Sources : Documentation: Configuring Memory Caching

Documentation: Configuring Transactionnal File Locking

Blog en0ch.se: Tutoriel pour Ubuntu (et par conséquence Debian en adaptant)

Installer le serveur redis et le module php5

apt-get install redis-server php5-redis

apt-get install php5-dev
pecl install redis

Pour activer redis et le module PHP5 qui va bien

touch /etc/php5/mods-available/redis.ini
echo 'extension=redis.so' > /etc/php5/mods-available/redis.ini
php5enmod redis && service apache2 restart

On vérifie que redis tourne bien et sa version

ps ax|grep redis
php --ri redis

Et on finit par modifier le fichier de config “/var/www/owncloud/config/config.php”

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

Pour y ajouter les lignes suivantes (Attention si le fichier contient déja “'memcache.local' ⇒ '\OC\Memcache\APCu',” supprimer cette ligne)

'memcache.local' => '\\OC\\Memcache\\Redis',
'filelocking.enabled' => 'true',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
'timeout' => 0,
'dbindex' => 0,
),

Fermer en enregistrant le fichier :wq

Relancer Apache pour appliquer les modifications

service apache2 restart

Installer, Activer et configurer le support de stockage externe à OwnCloud

Installation des pré-requis pour des partages Samba

Se rendre dans la page qui permet l'ajout d'applications et aller dans celle “désactivées”

Dans l'administration désormais on peut voir un message d'avertissement concernant “smbclient”

Allons donc en ssh/console sur le serveur et installons le

apt-get install smbclient

On valide avec O

Pour OwnCloud 8.2.1, on installe en plus libsmbclient pour PHP5, SAUF QUE elle n'est pas dans les dépôts Debian, pas grave Owncloud nous la mets à disposition

On ajoute le dépôts qui va bien (Source : software.opensure.org )

echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community:/8.1/Debian_8.0/ /' >> /etc/apt/sources.list.d/php5-libsmbclient.list

On installe la librairie (et CIFS-Utils) et l'active

apt-get update && apt-get install php5-libsmbclient cifs-utils && php5enmod libsmbclient

Si l'on retourne dans l'administration d'Owncloud on constate que le message a disparu !

Configuration

Contexte de la configuration souhaitée : se connecter à un NAS disponible sur le même réseau local afin de mettre les données du NAS à disposition des utilisateurs par l'interface d'OwnCloud (on pourrait aussi appliquer la même configuration dans le cas d'un serveur de fichiers windows à la place du NAS Synology, ce dernier utilisant les partages samba/windows)

On ajoute dans la page d'administration par exemple, un partage qui sera commun à tous, pour ma part il est accessible sur mon NAS, j'ai fais le choix que chaque utilisateur y accède avec ses droits liés à son compte LDAP (active directory)

Je reviens dans l'explorateur de fichiers d'OwnCloud et c'est ok ! je peux accéder à mon répertoire pourtant localisé sur mon NAS

A noter que pour les NAS Synology comme le mien, le répertoire HOME de l'utilisateur n'a pas l'ai de vouloir se monter… le contournement trouvé pour le moment consiste à monter ce “HOME” du NAS via SFTP au lieu de SMB/CIFS, pour la connexion SFTP owncloud permet d'ajouter un port à la suite du nom d'hôte sous ce format “mon_nas:port_sftp

Configurer OwnCloud pour utiliser HTTPS

On va commencer par configurer Apache pour accepter les connexions sécurisées par SSL

a2enmod ssl
a2ensite default-ssl.conf
service apache2 restart

Editer les fichiers /etc/apache2/sites-available/000-default.conf ET default-ssl.conf

000-default.conf

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

        ServerAdmin webmaster@mondomaine.com
        DocumentRoot /var/www/owncloud
        Redirect permanent / https://cloud.mondomaine.com/
<Directory /var/www/owncloud>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

        ErrorLog ${APACHE_LOG_DIR}/owncloud_error.log
        CustomLog ${APACHE_LOG_DIR}/owncloud_access.log combined

</VirtualHost>

default-ssl.conf

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@domaine.com
                ServerName cloud.domaine.com
                DocumentRoot /var/www/owncloud
                #LogLevel warn
                ErrorLog ${APACHE_LOG_DIR}/owncloud_error.log
                CustomLog ${APACHE_LOG_DIR}/owncloud_access.log combined

                SSLEngine On
                SSLVerifyClient none
                SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0ean-shutdown downgrade-1.0 force-response-1.0
                SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
                SSLHonorCipherOrder On
                SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA256 EECDH+aRSA+SHA256 EDH+aRSA EECDH !EECDH+aRSA+RC4 !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
                # On autorise SSLV3 et TLSv1, on rejette le vieux SSLv2
                SSLProtocol all -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
                Header always add Strict-Transport-Security "max-age=15768000"
                SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
                ServerSignature Off
                SSLCertificateFile      /etc/apache2/ssl/owncloud_2015.crt
                SSLCertificateKeyFile /etc/apache2/ssl/owncloud_2015.key

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>

                BrowserMatch "MSIE [2-6]" \
                                nokeepalive ssl-unclean-shutdown \
                                downgrade-1.0 force-response-1.0
                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

               <Directory /var/www/owncloud>
                         Options Indexes FollowSymLinks
                         AllowOverride All
                         Allow from all
                         Require all granted
                         #Dav Off
                         Satisfy Any
                </Directory>
        </VirtualHost>
</IfModule>

Générons maintenant les certificats et clés pour le serveur, pour suivre la logique de mes configurations Apache, je créé le dossier /etc/apache/ssl et me place dedans

Source des commandes de génération SSL : Blog IT-Connect.fr

cd /etc/apache2/ && mkdir ssl
openssl genrsa -out owncloud_2015.key 2048
openssl req -new -key owncloud_2015.key -out owncloud_2015.csr
openssl x509 -req -days 365 -in owncloud_2015.csr -signkey owncloud_2015.key -out owncloud_2015.crt

Remarque importante : si vous décidez de mettre en place un Reverse Proxy vous aurez besoin de récupérez ces fichiers .key et .crt garder les précieusement donc pour la suite

Relancer apache

service apache2 restart

N'oublions pas de modifier la configuration d'OwnCloud en éditant le fichier “/var/www/owncloud/config/config.php” et en y ajoutant les lignes et en les adaptant à votre config

  'overwrite.cli.url' => 'https://cloud.mondomaine.com/',
  "overwritehost"     => "cloud.mondomaine.com",
  "overwriteprotocol" => "https",
  "overwritewebroot"  => "/",
  "overwritecondaddr" => "^192\.168\.1\.100$",

C'est ok si tout va bien nous avons désormais accès à OwnCloud via l'URL http://cloud.mondomaine.com qui redirige automatiquement vers httpS://cloud.mondomaine.com

Configurer un Reverse Proxy avec Apache pour OwnCloud (avec HTTPS)

Pas de détails sur la partie “Reverse proxy” en elle-même, pour cela beaucoup de site sur internet décrivent comment en installer/configurer un dont ce Tutoriel

Pour résumé le concept de Reverse Proxy cela consiste à pouvoir héberger plusieurs sites web et éventuellement serveurs web, on en expose un en frontal (avec les règles NAT qui vont bien pour le port 80 et/ou 443) qui fera office de relais pour se connecter sur les autres serveurs web que l'on ne peut/veux pas “NATé”

C'est particulièrement pratique lorsque l'on a qu'une seule adresse IP publique disponible mais que l'on souhaite hébergé XX sites web sur cette même IP…

ATTENTION il faut commencer par désactiver la ligne “Redirect permanent / https://cloud.mondomaine.com/” dans le fichier “/etc/apache/sites-available/000-default.conf” avant de continuer ce paragraphe

Nous partons donc sur une autre machine, où est installé Apache2.4 avec mod_proxy_http activé, si ce n'est pas le cas bref rappel

apt-get install apache2 && a2enmod proxy_http && service apache restart

Ensuite nous éditons un nouveau fichier, que je décide de nommer “cloud.mondomaine.com” dans /etc/apache/sites-available sur ce nouveau serveur dit “reverse proxy”

cloud.mondomaine.com

<VirtualHost *:443>

        # Décommentez cette ligne et indiquez-y l'adresse courriel de l'administrateur du site
        ServerAdmin webmaster@mondomaine.com

        # Classique, votre nom de domaine
        ServerName cloud.mondomaine.com

        # Si jamais vous avez d'autres domaines renvoyant sur ce site, utilisez la dircetive ServerAlias
        # Vous pouvez utiliser le joker * pour prendre en compte tout les sous-domaines
        #ServerAlias www2.my-domain.com www.my-other-domain.com *.yet-another-domain.com

        # L'emplacement des logs.
        ErrorLog /var/log/apache2/cloud.mondomaine.com-https-error.log
        #LogLevel warn
        CustomLog /var/log/apache2/cloud.mondomaine.com-https-access.log combined

        # SSL magic
        #
        # Il est nécessaire d'activer SSL, sinon c'est http qui sera utilisé
        SSLEngine On
        SSLVerifyClient none
        # On autorise uniquement les clefs de cryptage longue (high) et moyenne (medium)
        SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
        SSLHonorCipherOrder On
        SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA256 EECDH+aRSA+SHA256 EDH+aRSA EECDH !EECDH+aRSA+RC4 !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
        # On autorise SSLV3 et TLSv1, on rejette le vieux SSLv2
        SSLProtocol all -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
        Header always add Strict-Transport-Security "max-age=15768000"
        # La clef publique du serveur :
        SSLCertificateFile /etc/apache2/ssl/owncloud_2015.crt

        # La clef privée du serveur:
        SSLCertificateKeyFile /etc/apache2/ssl/owncloud_2015.key

        BrowserMatch "MSIE [2-6]" \
                                nokeepalive ssl-unclean-shutdown \
                                downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

        # Theses lines only apply of the rewrite module is enabled.
        # This is a security enhancement recommanded by the nessus tool.
        <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
        RewriteRule .* - [F]
        </IfModule>
        <IfModule mod_rewrite.c>
        <IfModule mod_proxy.c>

        #Ne commentez jamais cette ligne, elle évite que votre serveur soit utilisé comme proxy par des gens mal-intentionnés.
        ProxyRequests Off

        # Cetet option passe les nom d'hôte au serveur, ce qui vous permet d'utiliser également des hôtes virtuels sur le serveur principal.
        ProxyPreserveHost On

        # Les lignes classiques de proxy. Comme dit au dessus, on passe le flux en http.
        ProxyPassReverse / http://192.168.1.100
        RewriteRule ^/(.*) http://192.168.1.100/$1 [P,L]

        </IfModule>
        </IfModule>

        # Autoriser l'accès au contenu à travers le proxy.
        #Ne l'enlevez pas si vous voulez que le site fonctionne !
        <Location />
        Order deny,allow
        Allow from all
        </Location>

</VirtualHost>


        <VirtualHost *:80>
        # Cette partie va permettre de rediriger d'éventuelles requêtes en HTTP vers l'HTTPS
        # Vous pouvez également configurer le proxy à la place de la règle de réécriture si vous voulez autoriser l'accès en HTTP
        ServerName cloud.domaine.com
        #ServerAlias www2.my-domain.com www.my-other-domain.com *.yet-another-domain.com

        # Theses lines only apply of the rewrite module is enabled.
        # This is a security enhancement recommanded by the nessus tool.
        <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{REQUEST_METHOD} ^{TRACE|TRACK}
        RewriteRule .* - [F]
        </IfModule>

        # On renvoit toutes les requêtes HTTP vers l'HTTPS.
        Redirect permanent / https://cloud.mondomaine.com/

        </VirtualHost>

Une fois ce fichier enregistré avec :wq, il faut activer le fichier de configuration Apache que l'on vient de créer et relancer apache

a2ensite cloud.mondomaine.com && service apache2 restart

N'oubliez pas de vérifier les règles NAT sur votre box/routeur afin de rediriger le port 80 et 443 vers notre reverse proxy.

Installer et configurer libreoffice pour Owncloud (Application Documents)

Pour commencer, il faut installer libreoffice-writer avec la commande

apt-get install --no-install-recommends libreoffice-writer

Ensuite dans l'administration d'Owncloud, dans la partie “Documents” (dans le menu de gauche) configurer les paramètres suivants

A noter que si vous avez une installation un peu “exotique” il faudra sûrement spécifier le “preview_libreoffice_path” dans config.php d'owncloud…

Voir aussi Documentation officielle Owncloud 8 sur la configuration des "documents collaboratifs"

Pour ma part ces 2 seules étapes ont suffit à activer le support des documents .doc/.docx dans Owncloud 8 et rend du coup l'application “Documents” un peu Google Docs clone… en moins bien certes mais auto-hébergé :)

Résoudre problème d'upload impossible si fichiers supérieurs à 2Mo

Source : Documentation Owncloud

Dans mon cas de figure précédemment décrit dans cette page et celle concernant l'installation, je me suis retrouver dans l'impossibilité d'upload de “gros fichiers” (supérieurs à 2Mo pour être précis) à cause de la configuration par défaut d'Apache2

Il faut pour corriger le problème éditer /etc/php5/apache2/php.ini (sur Debian 8)

vi /etc/php5/apache2/php.ini

Rechercher les paramètres

  • upload_max_filesize
  • post_max_size
  • upload_tmp_dir
  • output_buffering

Grâce à /upload_max_filesize saisi au clavier dans VI on peut trouver rapidement la ligne concernant le paramètre upload_max_filesize

Les paramètres devront être décommentés s'ils le sont, sinon ajouté s'ils n'existent pas encore et on doit leur attribuer ces valeurs (par exemple à vous d'adaptez)

upload_max_filesize = 16G
post_max_size = 16G
upload_tmp_dir = /var/big_temp_file/
output_buffering = 0

Enregistrer et fermer le fichier :wq, si le dossier /var/big_temp_file n'existe pas il faut le créer et donner les droits à Apache d'y accéder

mkdir /var/big_temp_file && chown www-data:www-data /var/big_temp_file

Puis relancer apache

service apache2 restart

Si vous avez tout suivi et que tout va bien vous pouvez désormais uploader des fichiers jusqu'à 16Go/fichiers !