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