Quel besoin ?
La famille s’agrandit pas mal ces derniers temps, les parents sont devenus grands-parents et demandent régulièrement des photos des petits-enfants.
Ils ont tous accès à Internet et une boite mail. Les mail-groupés s’échangent mais nous sommes limités à 3 photos que nous devons réduire pour ne pas exploser certaines boites.
Quand quelqu’un veut tirer une photo, il demande alors de renvoyer l’image originale en bonne définition, ça devient contraignant !
L’objectif est donc de trouver une solution accessible à des personnes non techniques pour échanger des photos. Le parc informatique est varié, il comprend des PC/MAC sous différents OS. Il y a également des tablettes et smartphones sur iOS et Android.
Choix technique
Je n’ai pas eu l’occasion d’évaluer plusieurs solutions techniques. En effet, OwnCloud, que je souhaitais essayer depuis longtemps en remplacement de DropBox, répond exactement au besoin :
- Accès par navigateur web + possibilité d’installer un client sur ordinateur / smartphone.
- Gestion native des utilisateurs et des groupes.
- Fonctionnalité de partage d’un dossier avec un groupe.
Il était temps d’essayer pour de vrai. Après quelques essais sur ma RaspberryPi, il est rapidement apparu que la capacité de calcul et le débit montant étaient insuffisants pour une utilisation fluide.
Je profite donc de ce paragraphe pour remercier Idem d’avoir accepté d’héberger mon serveur chez lui !
Les prochaines parties traiteront de la configuration du serveur web. Elles ne sont pas spécifiques à OwnCloud et vous pouvez les sauter si vous prenez une solution d’hébergement web clef en main.
DNS
Le DNS est le service qui associe l’URL, une adresse de site Internet comprehensible par un humain (par exemple : www.google.fr) avec une IP, l’adresse qui sert à échanger les informations entre ordinateurs sur Internet (exemple : 173.194.45.55 pour google au moment où j’écrit ces lignes).
Il existe une multitudes d’entrées différentes dans ce tableau :
- A : c’est l’association de base : mondomaine.com → IP du serveur
- CNAME pour définir un alias : www.mondomaine.com → mondomaine.com
- MX : qui sert à diriger les email de ce domaine
- NS : qui indique quel est le server de service DNS qui possède le tableau d’entrées DNS.
- Et encore pleins d’autre que je ne maitrise pas !
Comme je disposais d’un serveur dont je connaissais l’IP (cela marche aussi si vous hebergez chez vous derrière une box qui offre une IP fixe), j’ai directement acheté un nom de domaine chez OVH.
J’ai donc ajouté :
- Une entrée A : pour associer mondomaine.com et l’IP fixe.
- Une entrée CNAME : pour renvoyer owncloud.mondomaine.com sur mondomaine.com (et donc sur l’IP fixe). Nous le verrons dans la partie suivante que c’est le serveur qui s’occupera de faire le tri !
- j’ai laissé la configuration MX définie par défaut par OVH afin de profiter de leur service mail entrant.
Configuration Apache
Apache est un serveur web. Il répond aux requetes de type HTTP ou HTTPS.
Nous allons voir comment le configurer pour qu’il réponde différement sur l’adrese principale et sur le sous-domaine.
On va créer un fichier domaine.com dans /etc/apache2/sites-avaiable/ :
ServerAdmin webmaster@domaine.com
DocumentRoot /var/www /com.domaine/www/
servername www.domaine.com
errorlog /var/log/apache2/domaine.com/www-error.log
customlog /var/log/apache2/www-access.log combined
ServerAdmin webmaster@domaine.com
DocumentRoot /var/www /com.domaine/owncloud/
servername owncloud.domaine.com
errorlog /var/log/apache2/domaine.com/owncloud-error.log
customlog /var/log/apache2/owncloud-access.log combined
La première règle dit qu’il faut aller chercher les documents pour www.domaine.com dansle dossier /var/www/com.domaine/www et comment sauvegarder les log (journaux d’exécution).
C’est pas dur !
Il faut ensuite créer les dossiers sinon lorsqu’on va dire à apache de prendre ce site en compte il va crier fort !
Pour la suite, toutes les commandes console sont à exécuter en temps que root ou en utilisant sudo :
mkdir -p /var/www/com.domaine/www/
mkdir -p /var/www/com.domaine/owncloud/
mkdir -p /var/log/apache2/domaine.com/
Les dossiers ont été créés avec root comme propriétaire, or c’est apache qui va devoir les utiliser il faut donc changer le propriétaire des dossiers.
chown -R www-data:www-data /var/www/com.domaine/
Nous allons maintenant activer (enable en anglais) la nouvelle configuration du site :
a2ensite domaine.com
a2ensite pour apache2 enable site.
Owncloud
Installation
Nous alons maintenant récupérer le logiciel depuis le site officiel du projet : owncloud.org
Au moment où j’écris ces lignes, la version en cours est la 6.0.1 :
cd /tmp
wget http://download.owncloud.org/community/owncloud-6.0.1.tar.bz2
tar -xjvf owncloud-6.0.1.tar.bz2
Nous avons donc un dossier owncloud dans lequel tous les fichiers de owncloud se trouvent. Nous allons les copier dans le répertoire d’apache.
cp -r owncloud/* /var/www/com.domaine/owncloud/
Et changer de propriétaire :
chown -R www-data:www-data /var/www/com.domaine/owncloud
Depuis un navigateur web, il suffit de visiter le site pour lancer l’installation complète.

Création des utilisateurs
Pour chaque utilisateur final, il faut créer un identifiant et un mot de passe.

Il faut bien penser à créer un groupe commun à tous les utilisateur.

Il est également pratique d’avoir un utilisateur administrateur de groupe qui pourras aider les utilisateurs en cas de perte de mot de passe par exemple.
Pour l’administrateur du service, j’ai supprimé l’ensemble des documents présents par défaut et limité l’espace à 10MB.

Paramètres supplémentaires
L’application owncloud pour mobile Android est open source mais payante sur le Google Play Store. F-droid distribue cette application gratuitement, mais mes utilisateurs ne sont pas habitués à utiliser ce store. Du coup, j’ai décidé d’héberger moi même l’application.
J’ai donc édité le fichier config/config.php du répertoire owncloud en ajoutant l’entrée :
'customclient_android' => 'http://www.domaine.com/owncloud_1.5.4.apk'
Et j’ai placé le paquet dans sur mon serveur dans /var/www/com.domaine/www/
Ainsi sur l’écran d’accueil, quand l’utilisateur clique sur l’icone Android Store, il téléchargera le paquet au lieu d’être redirigé sur le play-store.

Postfix
Et si on permettait l’envoi de mail ?
C’est à la fois simple et compliqué ! A vrai dire je n’ai pas réussi à aller aussi loin que je voulais, cependant j’ai pu faire qu’on puisse envoyer des mails depuis owncloud.
Une fois postfix installé sur la machine, éditer le fichier main.cf :
#######################
# Paramètres généraux #
#######################
# Nom de domaine de messagerie principal.
mydomain = domaine.com
# Nom d'hôte.
myhostname = domain.com
# Nom de domaine utilisé pour les adresses incomplètes.
myorigin = $mydomain
# Activer l'écoute IPv6.
inet_protocols = all
# Les clients SMTP sûrs, qui auront plus de privilèges
# (concrètement, le droit d'utiliser ce serveur comme relais).
mynetworks = 127.0.0.0/8 [::1]/128
################
# Serveur SMTP #
################
# Les noms de domaine pour lesquels on accepte le courrier.
mydestination = localhost, localhost.localdomain
# Si votre FAI ne vous permet pas de poster le courrier directement,
# utiliser son serveur SMTP comme relais en décommentant cette ligne.
#relayhost = smtp.fai.com
Et c’est tout !
On a donc un service qui accepte tous les mail venant du serveur local et qui se charge de les transmettre en local si l’adresse de destination est @localhost ou @localhost.localdomain, ou alors de proche en proche à d’autres relais de mail jusqu’à leur destinataire.
HTTPS
Comme j’ai des utilisateurs qui veulent accéder au cloud via leur téléphone portable et que je n’ai aucune confiance en les opérateurs de téléphonie quant à ce qu’il stockent j’ai souhaité utiliser HTTPS pour encrypter les échanges de bout en bout.
StartSSL fournit des certificat de sécurité signés par l’autorité de certification (CA) StartCom gratuitement mais limité à un sous-domaine.

La procédure demande d’envoyer un email au hostmaster déclaré dans le WHOIS de votre domaine, (généralement hostmaster@domaine.com) c’est pour cela que j’ai laissé OVH gérer le MX de mon DNS j’ai ainsi pu faire une redirection de mon domaine vers l’adresse que j’utilise régulièrement.
En fin de procédure, StartSSL fournit 2 fichiers :
- Le certificat à sauvegarder dans /etc/ssl/certs/owncloud.domaine.com.crt
- La clé privée à sauvegarder dans /etc/ssl/private/owncloud.domaine.com.key
Il faut ensuite éditer le fichier des virtual hosts d’apache :
serveradmin admin@domain.com
servername owncloud.domaine.com
redirect /
DocumentRoot /var/www/com.domaine/owncloud
serveradmin admin@domain.com
servername owncloud.domaine.com
errorlog /var/log/apache2/domaine.com/owncloud-error.log.http
customlog /var/log/apache2/domaine.com/owncloud-access.log.http combined
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /etc/ssl/certs/owncloud.domaine.com.crt
SSLCertificateKeyFile /etc/ssl/private/owncloud.domaine.com.key
SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem
SSLCACertificateFile /etc/ssl/certs/ca.pem
Le premier virtualhost écoute sur le port 80 (HTTP), j’accepte les connexion et je les renvoie sur la partie sécurisée en HTTPS (port 443).
Le second virtualhost écoute sur le port HTTPS, en plus des infos classique (5 premières lignes), j’ai activé le cryptage SSL (lignes 7 à 9).
La 10ème indique le chemin vers mon certificat
La 11ième indique où je trouve la clef privée pour décrypter les données que le client me transmet.
Les lignes 12 et 13 donnent la chaîne de confiance, c’est ce qui garantit que l’utilisateur peut faire confiance au site qu’il visite.
Installation du module MailNotify
Il existe un module bien pratique qui envoie automatiquement un mail au groupe de partage lorsqu’un nouveau document est mis à disposition.
Il s’appelle MailNotify.
Mais son installation n’est pas instinctive. Et nécessite quelques accès supplémentaires. En l’état, il ne sera pas possible de l’utiliser si vous n’avez qu’un hébergement web.
Encore une fois nous allons télécharger le plug in puis l’envoyer dans sa destination :
cd /tmp
wget https://github.com/EELV-fr/mailnotify/archive/master.zip
unzip master.zip
On obtient un répertoire mailnotify-master contenant tout le code de ce plug-in. Il faut savoir que OwnCloud n’accepte d’activer que les plugging qui sont dans un répertoire qui a pour même nom que les informations qu’il présente. C’est surement pas clair mais en gros le dossier du pluggin doit s’appeler strictement mailnotify.
mkdir /var/www/com.domain/owncloud/apps/mailnotify
cp -r mailnotify/* /var/www/com.domain/owncloud/apps/mailnotify
chown -R www-data:www-data /var/www/com.domain/owncloud/apps/mailnotify
Puis aller avec le compte administrateur dans la partie applications et activer MailNotify.
Malheureusement ce n’est pas fini, ce plug-in nécessite d’avoir une tâche qui s’exécute périodiquement. Il faut donc ajouter au gestionnaire de tache péiodique de linux une entrée spécifique. On crée donc un fichier owncloud dans /etc/cron.d/
# /etc/cron.d/owncloud
#
# Run the owncloud mailnotify task every 15 minutes
#
SHELL=/bin/sh
PATH=/usr/local/bin:/usr/bin:/bin
########################################################################
#
*/15 * * * * root php -f /var/www/com.domain/owncloud/apps/mailnotify/lib/cronjob.php >> /var/log/owncloud.log 2>&1
La tâche périodique de MailNotify est donc appelée toute les 15 minutes, elle regarde si des nouveaux documents ont été ajoutés et si c’est le cas un email est envoyé à tous les utilisateurs du groupe de partage ayant donné leur email.
Bonjour
merci du partage
Néanmoins, pour des personnes non averties, installer un Piwigo sur un hébergement mutualisé est quand même vachement plus simple.
J’adore Owncloud mais son coté galerie je le trouve trop basique. Et il ne me semble pas qu’ils veulent vraiment l’améliorer. Et les maj de modules Owncloud Oh mon Dieu quelle horreur!! Des erreurs de jeunesse qui traînent,qui traînent… comme la maj auto d’Owncloud qui a mis bcp de temps à venir!
Ps: votre formulaire de commentaire est très buggué (ss FF 27) du fait de
#respond form#commentform p.comment-form-comment label, #respond form#commentform p.comment-form-url label, #respond form#commentform p.comment-form-email label, #respond form#commentform p.comment-form-author label
width: 50px;
notamment
Bonjour et merci pour la remarque.
J’ai choisi OwnCloud sans vraiment connaitre les autres solutions existantes. D’une mannière générale les galeries ne convennaient pas à mon usage :
*soit trop ouverte
*soit trop complexe.
Par exemple, j’ai installé ce WE le client OwnCloud pour windows (note au passage 1.5.3_rc1 car la 1.5.2 est buggée sur Win7 x64) chez des arrières-grand parent. La présentation que je leur en ai faite est un dossier dans lequel les photos sont automatiquement mise à jour, ils n’ont jamais de connexion spécifique à faire.
Pour le blog, je suis encore novice en la matière et je pense que le theme est mal choisi, merci du retour, ca fait parti des choses que je testerai mieux avant de choisir un theme définitif.
Merci pour ce tuto très instructif.
Quelques petits points :
– L’installation d’apache (apt-get install apache2) est nécessaire avant de commencer.
– Dans le fichier domaine.com, il y a un espace en trop sur la ligne 3 et 10
DocumentRoot /var/www /com.domaine/www/
au lieu de
DocumentRoot /var/www/com.domaine/www/
Voila. Sinon pour ma part j’ai un problème après l’installation de OwnCloud. Quand j’essaye d’accéder au site ) le navigateur me propose uniquement de télécharger le fichier index.php…
J’ai pas eu trop le temps de regarder, mais il semblerait qu’il manque une petite étape (sur le tuto ou sur ce que j’ai fait)
Dans tous les cas, merci.
Bon…pour mon problème de fichier index.php, il me manquait les dépendances 😀 (boulet inside)
apt-get install apache2 php5 php5-gd php5-mysql php5-json mp3info curl libcurl3 libcurl3-dev php5-curl zip git mysql-server
Merci pour les remarques, j’éditerai dans ce sens pour une installation from scratch.
Personnellement, je me suis passé de MySQL en utilisant sqlite3 pour un résultat similaire.
Bonjour, simple curiosité, n’est-ce pas plus simple de passer par des systèmes en ligne type Joomeo pour éviter tout ça ? C’est tout en ligne et ça semble bien sécurisé.
Joomeo (que je ne connaissais pas jusqu’à votre commentaire) est un service fermé.
Ma démarche d’auto-hébergement est de rester maitre de mes données. Je ne veux pas être dépendant d’un service fermé qui pourrait décider demain de revendre mes photos de familles ou de rendre l’accès payant.
En regardant sur le site, je vois les restrictions suivantes :
*10 Mo/photo : Une photo prise avec mon réflexe fait 22Mo!
*150 Mo/mois : Nous avons utilisé beaucoup plus que ça. Même en redimensionnant les photos c’est très limitant !
* Pas de « Lecture en ligne des vidéos » : ok c’est anecdotique
Je comprends la démarche d’auto-hébergement.
En fait ma réflexion est venue de l’approche technique qui m’a un peu effrayée ! Du coup, il me semblait que le process était lourd pour héberger et partager des images.
Pour les restrictions de Joomeo, c’est vrai que je n’en ai pas subi les conséquences vu que je ne suis pas une grosse photographeuse donc les 150Mo/mois me suffisent ! J’ai opté 2 fois pour leur abonnement mensuel le moins cher pour mettre les photos d’un voyage et celle d’une soirée, c’est tout.