UBUNTU – Owncloud

Installation d’un serveur owncloud

I. Présentation

ownCloud est une application OpenSource de stockage en ligne et de gestion de fichiers, on l’apparente généralement au très connu Dropbox. Pour mettre en place ce service vous devez disposer d’un serveur web utilisant PHP et MySQL ou SQLite.

Parmi les fonctionnalités, on y trouve évidemment la possibilité de partager des fichiers mais également de lire de la musique directement en ligne grâce au lecteur intégré, un calendrier, une gestion de contacts, la visualisation et l’édition de documents en ligne, la visualisation et le classement de photos dans des galeries, etc. De plus, de nombreux plug-ins sont disponibles afin de greffer de nouvelles fonctionnalités à ownCloud.

Dans ce tutoriel, on installera ownCloud sur une machine Ubuntu, avec Apache pour le serveur web couplé à PHP et MySQL.

Pré-requis :

Installer un serveur ubuntu avec openssh et LAMP

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install phpmyadmin

Installation des dépendances :

sudo apt-get install apache2 php5 php5-common php5-gd
sudo apt-get install php5-mysql curl libcurl3 libcurl3-dev php5-curl

II. Installation d’ownCloud

Tout d’abord, télécharger la dernière version d’owncloud sur le site officiel.

Uploader l’archive sur votre serveur et extraire les fichiers :

sudo tar -xzvf owncloud-6.0.1.tar.bz2

Attention la commande peut changer en fonction de la version d’owncloud téléchargée.

Copier les fichiers extraits à la racine du serveur web :

sudo cp -r owncloud /var/www/html

Donner les droits d’écriture nécessaire à l’installation d’owncloud :

cd /var/www/html/owncloud
sudo mkdir data
sudo chown -R www-data:www-data /var/www/owncloud/data
sudo chown -R www-data:www-data /var/www/owncloud/apps
sudo chown -R www-data:www-data /var/www/owncloud/config

Activer les modules complémentaires d’Apache : Rewrite permet la réécriture d’URL et Headers permet de gérer les en-têtes des requêtes et réponses HTTP :

sudo a2enmod rewrite
sudo a2enmod headers

Pour une question de sécurité il faut empêcher l’accès au répertoire « data » d’ownCloud, pour cela un fichier .htaccess est déjà présent et pré-configuré dans ownCloud. Il contient une directive permettant de refuser l’accès à tout le monde et une seconde permettant d’empêcher le listing de tout le contenu du répertoire.

Note : « data » est le répertoire des données d’ownCloud

Afin que le fichier .htaccess soit pris en compte, la directive AllowOverride de votre serveur web doit être définie sur « All » et non sur « None » sinon les fichiers .htaccess sont ignorés. Pour cela nous allons configurer un virtualhost dans apache :

cd /etc/apache2/sites-available
sudo nano owncloud.conf

Dans un premier temps nous allons juste configurer les options par défaut sans s’occuper de la sécurisation :

<VirtualHost *:80>
DocumentRoot /var/www/owncloud/
<Directory /var/www/owncloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Une fois le fichier de configuration terminé, enregistrer et fermer.

Initialiser le nouveau VirtualHost :

sudo a2ensite owncloud.conf

Redémarrer Apache :

sudo service apache2 reload

III. Création de la base de données

mysql -u root -p
CREATE USER "owncloud"@"localhost" IDENTIFIED BY "password";
CREATE DATABASE owncloud;
GRANT ALL PRIVILEGES ON owncloud.*TO "owncloud"@"localhost";
FLUSH PRIVILEGES;

Il faudra ensuite renseigner les champs correspondants (user, password, nom de la base de données, ..).

IV. Finalisation de la mise en place

ownCloud est fin prêt, tout est fonctionnel. Vous pouvez vous connecter avec l’utilisateur «admin ».

Ouvrir un navigateur et se rendre à l’adresse suivante  :

http:// »ip_de_votre_serveur »/owncloud

 

V. Sécurisation d’owncloud et création du VitrualHost

Sous Apache2, nous allons commencer par créer un VirtualHost (“site”) avec une configuration qui fonctionnera avec le HTTPS (port 443)

sudo nano /etc/apache2/sites-available/owncloud.conf

Modifier le fichier précédemment crée pour obtenir :

<VirtualHost *:80>
DocumentRoot /var/www/owncloud/
</VirtualHost>
<VirtualHost *:443>
ServerName xxxxx.fr
ServerAlias xxx.xxxx.fr
DocumentRoot /var/www/owncloud/
# Activation du mode SSL
SSLEngine On
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
# On indique ou est le certificat
SSLCertificateFile /etc/ssl/certs/owncloud.crt
SSLCertificateKeyFile /etc/ssl/private/owncloud.key
<Directory /var/www/owncloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Nous allons maintenant activer le module SSL dans Apache2 pour que celui-ci puisse être utilisé dans nos échanges ownCloud :

sudo a2enmod ssl

VI. Création du certificat auto-signé

Maintenant nous pouvons accéder à Owncloud via le HTTPS, seulement on peut encore passer aussi via le HTTP, nous allons donc le forcer à utiliser le HTTPS. Il faut aller modifier un fichier PHP dans Owncloud pour forcer l’accès en HTTPS. Dans “/var/www/config/owncloud/config.php“, ajouter :

‘forcessl’ => true,

Nous allons ensuite passer à la génération de nos clés, on crée un répertoire pour les clés :

cd /etc/apache2/ && sudo mkdir CertOwncloud && cd CertOwncloud

On génère notre clé sur 1024 bits :

sudo openssl genrsa -out owncloud.key 1024

Création des “.key” et “.csr” :

sudo openssl req -new -key owncloud.key -out owncloud.csr

On rempliera ensuite les données du certificat correctement, il est important de noter que l’absence du CommonName pourra générer des erreurs plus tard. dans CommonName mettre votre nom de domaine auquel s’appliquera voter certificat, ex : mobaitec.fr)

On crée ensuite le fichier de certificat :

sudo openssl x509 -req -days 365 -in owncloud.csr -signkey owncloud.key -out owncloud.crt

On copiera ensuite nos certificats là on tous les certificats sont stockés :

sudo cp owncloud.crt /etc/ssl/certs
sudo cp owncloud.key /etc/ssl/private

Ensuite on redémarre apache après avoir vérifié sa configuration :

sudo apachectl configtest
sudo service apache2 restart

On pourra ensuite vérifier dans notre navigateur que le HTTPS est bien utilisé en nous rendant sur l’interface web de notre ownCloud :

https:// »ip_du_serveur »/owncloud

Bien que le certificat soit ici auto-signé (il n’est pas reconnu par une véritable autorité de certification), le chiffrement des échanges est bien présent.

VII. Personnalisation d’owncloud

Contenu du fichier /var/www/owncloud/config/config.php

Ce fichier permet par exemple de configurer un serveur smtp pour l’envoi de mail ou la taille maximum des fichiers pouvant être envoyés via owncloud..

<?php
$CONFIG = array (
‘instanceid’ => ‘xXXxxXXXX’,
‘passwordsalt’ => ‘afc48a57bd6d97bd93bea70a3c24da’,
‘datadirectory’ => ‘/var/www/owncloud/data’,
‘dbtype’ => ‘mysql’,
‘version’ => ‘6.0.0.16’,
‘dbname’ => ‘owncloud’,
‘dbhost’ => ‘localhost’,
‘dbtableprefix’ => ‘oc_’,
‘dbuser’ => ‘oc_admin’,
‘dbpassword’ => ‘5b7f3a1357bdfda4f0fe9d86e48e3a’,
‘installed’ => true,
‘forcessl’ => true,
‘theme’ => ‘aitec’,
‘maxZipInputSize’ => 838860800,
‘allowZipDownload’ => true,
‘mail_domain’ => ‘cloud.mobaitec.fr’,
‘mail_smtpdebug’ => false,
‘mail_smtpmode’ => ‘smtp’,
‘mail_domain’ => ‘mobaitec.fr’,
‘mail_smtpdebug’ => false,
‘mail_smtpmode’ => ‘smtp’,
‘mail_smtphost’ => ‘smtp.mobaitec.eu’,
‘mail_smtpport’ => 25,
‘mail_smtptimeout’ => 10,
‘mail_smtpsecure’ =>  »,
‘mail_smtpauth’ => true,
‘mail_smtpauthtype’ => ‘LOGIN’,
‘mail_smtpname’ => ‘smtp@xxxxx.xx’,
‘mail_smtppassword’ => ‘xXXxxxx’,
‘check_for_working_webdav’ => false,
);

Personnalisation d’owncloud

Dans /var/www/owncloud/themes

Créer un dossier avec le nom du theme que l’on souhaite utiliser (ici aitec)

Sudo mkdir aitec

Copier le dossier /var/www/owncloud/core dans /var/www/owncloud/themes

Dans /var/www/owncloud/themes/core/css

Modifier les couleurs etc

Pour les logos, remplacer les fichiers logo.png et logo-wide.png par ceux que l’on souhaite afficher