Owncloud : Différence entre versions

De DiouxX's Wiki
Aller à : navigation, rechercher
(Page créée avec « {{ Introduction | Cette page permet d'installer et configurer le service Owncloud }} == Installation == === Prérequis === ==== Database ==== Owncloud se connecte à u... »)
 
(Mise à jour)
 
(6 révisions intermédiaires par le même utilisateur non affichées)
Ligne 39 : Ligne 39 :
  
 
==== Apache ====
 
==== Apache ====
 +
 +
Nous allons configurer 2 virtual hosts au point de vue apache afin de rediriger toutes les requêtes '''http''' vers la version '''https''' d'owncloud
 +
 +
===== cloud.conf =====
 +
<br>
 +
{{ Console root | sudo nano /etc/apache2/sites-enables/cloud.conf}}
 +
<br>
 +
<pre>
 +
<VirtualHost *:80>
 +
        ServerName cloud.domain.be
 +
        RedirectMatch ^/$ https://cloud.domain.be/
 +
</VirtualHost>
 +
</pre>
 +
<br>
 +
On active le vhosts :
 +
<br>
 +
{{ Console root | sudo a2ensite cloud.conf }}
 +
<br>
 +
{{ Note | Il est possible qu'il soit nécessaire d'activer le mode rewrite d'apache '''sudo a2enmod rewrite''' }}
 +
<br>
 +
 +
===== cloud_ssl.conf =====
 +
<br>
 +
{{ Console root | sudo nano /etc/apache2/sites-enables/cloud_ssl.conf}}
 +
<br>
 +
<pre>
 +
<VirtualHost *:443>
 +
        ServerName cloud.domain.be
 +
        DocumentRoot /var/www/owncloud
 +
        #RedirectMatch ^/$ https://cloud.domain.be/owncloud
 +
 +
        SSLEngine On
 +
        SSLCertificateFile    /etc/apache2/ssl/cloud.domain.be.crt
 +
        SSLCertificateKeyFile /etc/apache2/ssl/cloud.domain.be.key
 +
        SSLCACertificateFile  /etc/apache2/ssl/cacert.pem
 +
 +
        <Directory /var/www/owncloud>
 +
                Options Indexes FollowSymLinks MultiViews
 +
                AllowOverride All
 +
                Order allow,deny
 +
                Allow from all
 +
                # add any possibly required additional directives here
 +
                # e.g. the Satisfy directive (see below for details):
 +
                Satisfy Any
 +
        </Directory>
 +
 +
        ErrorLog /var/log/apache2/error-cloud.log
 +
 +
        # Possible values include: debug, info, notice, warn, error, crit,
 +
        # alert, emerg.
 +
        LogLevel warn
 +
 +
        CustomLog /var/log/apache2/access-cloud.log combined
 +
</VirtualHost>
 +
</pre>
 +
<br>
 +
{{ Note | La partie concernant la création des certificats ssl n'est pas vue dans cette documentation.<br>Reportez-vous à la documentation sur [[Postfix-tls]] }}
 +
<br>
 +
On active le vhosts :
 +
<br>
 +
{{ Console root | sudo a2ensite cloud_ssl.conf }}
 +
<br>
 +
 +
==== PHP ====
 +
 +
On peut modifier certaines valeurs du fichier {{ File | /etc/php5/apache2/php.ini }} afin d'accélerer la vitesse d'affichage de l'interface web :
 +
 +
* Le paramètre '''realpath_cache_size'''
 +
<pre>
 +
; Determines the size of the realpath cache to be used by PHP. This value should
 +
; be increased on systems where PHP opens many files to reflect the quantity of
 +
; the file operations performed.
 +
; http://php.net/realpath-cache-size
 +
;realpath_cache_size = 16k
 +
realpath_cache_size = 512k
 +
</pre>
 +
 +
* Paramètre relatif aux téléchargement de fichiers
 +
<pre>
 +
; Whether to allow HTTP file uploads.
 +
; http://php.net/file-uploads
 +
file_uploads = On
 +
 +
; Temporary directory for HTTP uploaded files (will use system default if not
 +
; specified).
 +
; http://php.net/upload-tmp-dir
 +
;upload_tmp_dir =
 +
 +
; Maximum allowed size for uploaded files.
 +
; http://php.net/upload-max-filesize
 +
upload_max_filesize = 1024 M
 +
 +
; Maximum number of files that can be uploaded via a single request
 +
max_file_uploads = 20
 +
</pre>
  
 
=== Administrateur et base de donnée ===
 
=== Administrateur et base de donnée ===
Ligne 124 : Ligne 219 :
 
<pre>
 
<pre>
 
   'mail_smtpmode'  => 'smtp',
 
   'mail_smtpmode'  => 'smtp',
   'mail_smtphost'  => '192.168.100.5',
+
   'mail_smtphost'  => 'IP_server',
 
   'mail_smtpport'  => 25,
 
   'mail_smtpport'  => 25,
 
   'mail_smtptimeout'  => 30,
 
   'mail_smtptimeout'  => 30,
Ligne 134 : Ligne 229 :
  
 
== Troubleshooting ==
 
== Troubleshooting ==
 +
 +
=== An unhandled exception has been thrown ===
 +
 +
Si après une tentative de mise à jour d'Owncloud, vous trouvez le message d'erreur suivant lors du processus : '''An unhandled exception has been thrown'''
 +
 +
<pre>
 +
exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1598 Binary logging not possible.
 +
Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog
 +
mode 'STATEMENT'' in /srv/www/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:91
 +
</pre>
 +
 +
la procédure suivante pourrait résoudre le problème.
 +
 +
Il s'agirait d'une variable global de MySQL a modifié.
 +
On se connecte à son serveur MySQL et on rentre la command suivante :
 +
<pre>
 +
mysql> SET GLOBAL binlog_format = 'MIXED';
 +
</pre>
 +
 +
Ensuite, sur le serveur Owncloud, dans le dossier owncloud, on rentre les commandes suivantes :
 +
 +
Cette commande, retire le mode maintenance du serveur
 +
<br>
 +
{{ Console root | sudo -u www-data php occ maintenance:mode --off }}
 +
<br>
 +
 +
Cette commande réalise la mise à jour du serveur
 +
<br>
 +
{{ Console root | sudo -u www-data php occ upgrade }}
 +
<br>
 +
Si tout se passe correctement, vous deviez avoir une sortie console comme ceci :
 +
<pre>
 +
Turned on maintenance mode
 +
Checked database schema update
 +
Checked database schema update for apps
 +
Updated database
 +
Turned off maintenance mode
 +
Update successful
 +
</pre>
 +
 +
Sources :
 +
* https://github.com/owncloud/core/issues/16008
 +
* https://dev.mysql.com/doc/refman/5.5/en/binary-log-setting.html
 +
* https://dev.mysql.com/doc/refman/5.6/en/binary-log-setting.html
 +
* https://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html#troubleshooting
 +
 +
=== After update to 8.1 an error message appears, that not internet access is available. ===
 +
 +
# copy "config/ca-bundle.crt" in the zip of the owncloud server download file
 +
# put it in the "config/" directory of my owncloud instance (for me "/var/www/config" as absolute path)
 +
 +
that's all, afterwards the warning was gone.
 +
 +
Source :
 +
* https://github.com/owncloud/core/issues/17448
 +
 +
=== General error: 1598 Binary logging not possible. ===
 +
Se connecter à Mysql ou PHPMyAdmin et exécuter la requête SQL suivante :
 +
<pre>
 +
SET GLOBAL binlog_format = 'ROW';
 +
</pre>
 +
 +
Source :
 +
* https://forum.owncloud.org/viewtopic.php?t=29456&p=92408
  
 
== Procédures ==
 
== Procédures ==
Ligne 140 : Ligne 299 :
 
On se rend dans le dossier du répertoire web
 
On se rend dans le dossier du répertoire web
 
<br>
 
<br>
{{ Console | cd /var/www }}
+
{{ Console | cd /var/www/html }}
 
<br>
 
<br>
 
On réalise un backup du dossier
 
On réalise un backup du dossier
Ligne 148 : Ligne 307 :
 
On réalise un backup de la base de donnée
 
On réalise un backup de la base de donnée
 
<br>
 
<br>
{{ Console root | 1=mysqldump --lock-tables -h [server] -u [username] -p[password] > owncloud-sqlbkp_`date +"%Y%m%d"`.bak }}
+
{{ Console root | 1=mysqldump --lock-tables -h [server] -u [username] -p[password] ownclouddb > owncloud-sqlbkp_`date +"%Y%m%d"`.bak }}
 
<br>
 
<br>
 
<pre>
 
<pre>
Ligne 168 : Ligne 327 :
 
{{ Console root | sudo chown -R www-data:www-data owncloud }}
 
{{ Console root | sudo chown -R www-data:www-data owncloud }}
 
<br>
 
<br>
 +
 +
Il se peut, si votre instance owncloud possède une taille importante, que le message suivant apparaisse quand vous essayer de vous reconnecter à l'interface web
 +
<br>
 +
[[Fichier:Owncloud-update-grande-instance.png|centré]]
 +
<br>
 +
Dans ce cas comme indiqué, il est nécessaire de passer en ligne de commande pour réaliser l'update.
 +
On se rend dans le dossier {{ File | owncloud}} et on exécute la commande suivante :
 +
<br>
 +
{{ Console | sudo -u www-data php occ upgrade }}
 +
<br>
 +
La mise à jour se réalisera en mode console.
 +
  
 
[[Catégorie:Applicatifs]]
 
[[Catégorie:Applicatifs]]

Version actuelle datée du 9 septembre 2016 à 13:13

Cette page permet d'installer et configurer le service Owncloud

Installation

Prérequis

Database

Owncloud se connecte à une base de donnée ( MySQL, PostgreSQL, SQLite). Dans notre exemple, nous allons utilisé MySQL. Vous pouvez créer la base de donnée soit avec un outil graphique ou en ligne de commande :

CREATE SCHEMA `ownclouddb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;


  • ownclouddb : est le nom de la DB
  • utf8 : est le type d'encodage de la DB

On crée également un utilisateur spécifique pour la connexion à la base de données.

Serveur Web

Pour installé Owncloud, le serveur qui va l'accueillir à besoin de plusieurs paquets installé apache2 et php5

Konsole.png
[root@ordi ~]# sudo apt-get install apache2 php5 php5-cli php5-commin php5-curl php5-gd php5-imagick php5-ldap php5-mysql php5-odbc php5-pgsql php5-xlmrpc libapache2-mod-php5


Owncloud

Installation

On récupère la dernière version de owncloud que l'on va placer dans le répertoire du serveur web

Konsole.png
[root@ordi ~]# cd /var/www && sudo wget http://download.owncloud.org/community/owncloud-latest.tar.bz2 && sudo tar -xjf owncloud-latest.tar.bz2
[root@ordi ~]# sudo chown -R www-data:www-data owncloud


Une fois désarchivé, vous devriez avoir accès à owncloud soit via l'adresse IP du serveur http://IP/owncloud ou via le nom DNS que vous aurez configuré comme décrit ici

Configuration

Apache

Nous allons configurer 2 virtual hosts au point de vue apache afin de rediriger toutes les requêtes http vers la version https d'owncloud

cloud.conf


Konsole.png
[root@ordi ~]# sudo nano /etc/apache2/sites-enables/cloud.conf


<VirtualHost *:80>
        ServerName cloud.domain.be
        RedirectMatch ^/$ https://cloud.domain.be/
</VirtualHost>


On active le vhosts :

Konsole.png
[root@ordi ~]# sudo a2ensite cloud.conf


BlocNotes.png
À noter !
Il est possible qu'il soit nécessaire d'activer le mode rewrite d'apache sudo a2enmod rewrite


cloud_ssl.conf


Konsole.png
[root@ordi ~]# sudo nano /etc/apache2/sites-enables/cloud_ssl.conf


<VirtualHost *:443>
        ServerName cloud.domain.be
        DocumentRoot /var/www/owncloud
        #RedirectMatch ^/$ https://cloud.domain.be/owncloud

        SSLEngine On
        SSLCertificateFile    /etc/apache2/ssl/cloud.domain.be.crt
        SSLCertificateKeyFile /etc/apache2/ssl/cloud.domain.be.key
        SSLCACertificateFile  /etc/apache2/ssl/cacert.pem

        <Directory /var/www/owncloud>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                Allow from all
                # add any possibly required additional directives here
                # e.g. the Satisfy directive (see below for details):
                Satisfy Any
        </Directory>

        ErrorLog /var/log/apache2/error-cloud.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access-cloud.log combined
</VirtualHost>


BlocNotes.png
À noter !
La partie concernant la création des certificats ssl n'est pas vue dans cette documentation.
Reportez-vous à la documentation sur Postfix-tls


On active le vhosts :

Konsole.png
[root@ordi ~]# sudo a2ensite cloud_ssl.conf


PHP

On peut modifier certaines valeurs du fichier /etc/php5/apache2/php.ini afin d'accélerer la vitesse d'affichage de l'interface web :

  • Le paramètre realpath_cache_size
; Determines the size of the realpath cache to be used by PHP. This value should
; be increased on systems where PHP opens many files to reflect the quantity of
; the file operations performed.
; http://php.net/realpath-cache-size
;realpath_cache_size = 16k
realpath_cache_size = 512k
  • Paramètre relatif aux téléchargement de fichiers
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 1024 M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

Administrateur et base de donnée

Une fois arrivé sur la page pour la première fois, vous devez compléter les informations concernant l'utilisateur administrateur et les informations de connexion pour la base de données.

Authentification OpenLDAP

Pour mettre en place l'authentification LDAP, il faut ajouter une application. Pour ce faire, on se rend dans le panneau d'administration


Et on clique sur la croix permettant d’accéder aux applications disponibles.


On choisis LDAP user and group backend et on active l'application


Maintenant, si on retourne dans la panneau d'administration, on retrouve différents champs qui vont nous permettre de configurer l'authentification via LDAP. On remplit d'abord les infos de connexion au serveur LDAP :

On sélectionne dans la fenêtre suivante, les classes d'objets pour les utilisateurs pouvant se connecter à Owncloud. Cela permet de restreindre éventuellement l'accès à Owncloud aux utilisateurs ne possédant pas ces différentes classes d'objets.

Dans la fenêtre suivante, on spécifie via quel attribut les utilisateurs vont pouvoir se connecter : nom d'utilisateur et/ou adresse email et les champs correspondant dans le LDAP

fail2ban

Pour mettre en place fail2ban pour owncloud, nous allons devoir modifier un peu le code source de Owncloud. Pas de panique, cela n'engendre aucun dysfonctionnement à Owncloud.

Tout d'abord, on va créé un fichier de log spécifique :

Konsole.png
[root@ordi ~]# sudo touch /var/log/owncloud-fail.log && sudo chown www-data:www-data /var/log/owncloud-fail.log


On va insérer un code dans la fonction checkPassword du fichier /var/www/owncloud/lib/private/user/database.php, juste avant le “return false”. Ce qui donne ceci :

else {
                        $today = new DateTime();
                        date_timezone_set($today, timezone_open('Europe/Paris'));
                        $IPClient= $_SERVER['REMOTE_ADDR'];     
                        $logAuth = fopen('/var/log/owncloud-fail.log', 'a+');
                        fputs($logAuth, date_format($today, 'Y/m/d H:i:s') . " Password check failed for: \t" . $
                        fclose($logAuth);
                        return false;
                }

On passe à présent à la création de la prison Fail2ban dans /etc/fail2ban/filter.d/owncloud.conf

	
#Owncloud jail
[Definition]
failregex = <HOST>$

On test que la regex match bien. (Effectuez une erreur de login sur l’interface avant)

Konsole.png
[user@ordi ~]$ fail2ban-regex /var/log/owncloud-fail.log /etc/fail2ban/filter.d/owncloud.conf


On ajoute cette prison à la configuration dans /etc/fail2ban/jail.conf

[owncloud]
enabled = true
port = http,https
filter = owncloud
logpath = /var/log/owncloud-fail.log
maxretry = 3

On redémarre fail2ban pour prendre en compte les nouveaux changements

Konsole.png
[root@ordi ~]# sudo service fail2ban restart


Warning.png
Attention !
Il faut quand même garder en tête que les lignes dans le php seront à réécrire à chaque mise à jour de Owncloud.


Envoi de mail

S'il n'y a pas de serveur mail installé sur le même serveur que l'instance OwnCloud, il est nécessaire de préciser un serveur SMTP pour qu'OwnCloud puisse envoyer des emails.

Il nous faut éditer le fichier /var/www/owncloud/config/config.php et rajouter les paramètres suivants :

  'mail_smtpmode'  => 'smtp',
  'mail_smtphost'  => 'IP_server',
  'mail_smtpport'  => 25,
  'mail_smtptimeout'  => 30,
  • mail_smtphost : l'IP ou le nom DNS du serveur SMTP
  • mail_smtpport : le numéro de port du serveur SMTP
  • mail_smtptimeout : si un scanner de malware ou SPAM tourne sur le serveur SMTP, il est nécessaire d'augmenter le timeout SMTP ( 30s ou 60s ont l'air d’être des valeurs corrects)

Troubleshooting

An unhandled exception has been thrown

Si après une tentative de mise à jour d'Owncloud, vous trouvez le message d'erreur suivant lors du processus : An unhandled exception has been thrown

exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1598 Binary logging not possible.
Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog 
mode 'STATEMENT'' in /srv/www/owncloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:91

la procédure suivante pourrait résoudre le problème.

Il s'agirait d'une variable global de MySQL a modifié. On se connecte à son serveur MySQL et on rentre la command suivante :

mysql> SET GLOBAL binlog_format = 'MIXED';

Ensuite, sur le serveur Owncloud, dans le dossier owncloud, on rentre les commandes suivantes :

Cette commande, retire le mode maintenance du serveur

Konsole.png
[root@ordi ~]# sudo -u www-data php occ maintenance:mode --off


Cette commande réalise la mise à jour du serveur

Konsole.png
[root@ordi ~]# sudo -u www-data php occ upgrade


Si tout se passe correctement, vous deviez avoir une sortie console comme ceci :

Turned on maintenance mode
Checked database schema update
Checked database schema update for apps
Updated database
Turned off maintenance mode
Update successful

Sources :

After update to 8.1 an error message appears, that not internet access is available.

  1. copy "config/ca-bundle.crt" in the zip of the owncloud server download file
  2. put it in the "config/" directory of my owncloud instance (for me "/var/www/config" as absolute path)

that's all, afterwards the warning was gone.

Source :

General error: 1598 Binary logging not possible.

Se connecter à Mysql ou PHPMyAdmin et exécuter la requête SQL suivante :

SET GLOBAL binlog_format = 'ROW';

Source :

Procédures

Mise à jour

On se rend dans le dossier du répertoire web

Konsole.png
[user@ordi ~]$ cd /var/www/html


On réalise un backup du dossier

Konsole.png
[root@ordi ~]# sudo rsync -a owncloud/ owncloud_bkp`date +"%Y%m%d"`/


On réalise un backup de la base de donnée

Konsole.png
[root@ordi ~]# mysqldump --lock-tables -h [server] -u [username] -p[password] ownclouddb > owncloud-sqlbkp_`date +"%Y%m%d"`.bak


Pour SQLite
sqlite3 data/owncloud.db .dump > owncloud-sqlbkp_`date +"%Y%m%d"`.bak
Pour PostgreSQL
PGPASSWORD="password" pg_dump owncloud -h [server] -U [username] -f owncloud-sqlbkp_`date +"%Y%m%d"`.bak

On supprime tous les dossier sauf le dossier config et data

Konsole.png
[root@ordi ~]# cd owncloud
[root@ordi ~]# ll
[root@ordi ~]# sudo find . -mindepth 1 -maxdepth 1 ! -path ./data ! -path ./config -exec rm -rf {} \;
[root@ordi ~]# ll


On télécharge et désarchive la derniere version

Konsole.png
[root@ordi ~]# cd ..
[root@ordi ~]# sudo wget http://download.owncloud.org/community/owncloud-latest.tar.bz2
[root@ordi ~]# sudo tar -xjf owncloud-latest.tar.bz2
[root@ordi ~]# ls owncloud


On remet les droits correct

Konsole.png
[root@ordi ~]# sudo chown -R www-data:www-data owncloud


Il se peut, si votre instance owncloud possède une taille importante, que le message suivant apparaisse quand vous essayer de vous reconnecter à l'interface web

Owncloud-update-grande-instance.png


Dans ce cas comme indiqué, il est nécessaire de passer en ligne de commande pour réaliser l'update. On se rend dans le dossier owncloud et on exécute la commande suivante :

Konsole.png
[user@ordi ~]$ sudo -u www-data php occ upgrade


La mise à jour se réalisera en mode console.