OwnCloud : L'outil collaboratif ultime ?

Monday, February 11, 2013

Ça faisait biiiien longtemps que je n’avais pas été tant emballé par un nouveau logiciel ! Enfin, y’a eu Shinken récemment :D Bref, vous avez besoin d’une alternative à Dropbox ou d’un portail tout-en-un pour votre établissement ? OwnCloud est une solution libre, très simple d’accès et jouissant d’une communauté très réactive et productive. Nous allons ici détailler l’installation, la configuration de OwnCloud mais aussi l’ajout d’apps (plugins) et l’accès via les différents protocoles/clients.

Introduction

Personnellement, je ne connaissais pas drop-box, il s’agit d’un stockage distant où l’on peut y synchroniser des fichiers depuis différents appareils. Il y a donc une partie “serveur” et une partie “client”. Certains qualifient cette solution de sauvegarde, d’autres de partage de documents et enfin pour d’autres c’est un moyen pour synchroniser leurs différents périphériques (smartphone, tablette, pc fixe, portable, etc). Peu importe l’utilisation, dans tous les cas, les petites données finissent sur un serveur totalement opaque et hébergé aux états unis où l’on se souci autant du réchauffement climatique que de la confidentialité des données.

Il est donc naturel de chercher une alternative, que l’on puisse instancier dans son système d’information. On m’a rapidement orienté vers OwnCloud car il semblerait que l’offre soit très mince pour l’instant. Je me rends direct sur leur site (owncloud.org) et je clique sur le pti bouton “try it”. Ça, c’était ya deux semaines, depuis je passe mes journées a tester des apps, des confs, etc etc.

Les fonctionnalités qui m’ont le plus intéressées :

  • Synchronisation de répertoires et versionning
  • Accès web, accès clients lourds windows/linux/mac et accès webdav
  • Partage de fichiers entre utilisateurs OwnCloud et aussi URL public
  • Lecteurs ODF, PDF, PPT, vidéo, audio et archives intégrés
  • Bloc note intégré
  • Agendas partageables et synchronisables en caldav
  • Carnets d’adresses partageables et synchronisables en carddav
  • Authentification SAML avec auto-création des comptes

Par la suite, j’utilise OC à la place de OwnCloud, trop la flemme de l’écrire 50 fois :-)

Installation de OwnCloud

On commence par créer un volume logique qui hébergera les données des utilisateurs OC, je vais appeler ce volume “data”. Voici les commandes :

lvcreate -L <taille_lv>G -n <nom_lv> <nom_vg>
mkfs.ext4 /dev/mapper/<nom_vg>-<nom_lv>
mkdir /<nom_lv>

On édite le fstab pour pour monter le nouveau volume au démarrage :

vim /etc/fstab
/dev/mapper/<nom_vg>-<nom_lv>   /<nom_lv>                    ext4    defaults        1 2

On va le monter à la main pour poursuivre l’installation et créer un répertoire pour OC :

mount /dev/mapper/<nom_vg>-<nom_lv>   /<nom_lv>
mkdir /<nom_lv>/owncloud
chown apache:apache /<nom_lv> -R
chmod 750 /<nom_lv>/owncloud

On prépare ensuite une base de données MySQL :

mysqladmin -u root -p create owncloud
mysql -u root -p owncloud
GRANT ALL ON owncloud.* TO owncloud@localhost IDENTIFIED BY '<owncloud_pass>';
flush privileges;

Pour la configuration Apache, créez un virtual host comme indiqué dans la doc ici.

Enfin, on installe OC en deux deux :

cd /tmp/
wget http://mirrors.owncloud.org/releases/owncloud-4.5.3.tar.bz2
tar xjf owncloud-4.5.3.tar.bz2
mv owncloud /var/www/
chown apache:apache /var/www/owncloud -R

Et on termine l’installation via notre navigateur :
https://<mon_cloud>.<mon_domaine>/

On rempli les champs avec les infos qui vont bien :

Et voila, OwnCloud est installé et fonctionnel !!!

Petite astuce : Si vous vous êtes planté sur le formulaire plus haut, éditez le fichier config/config.php et modifiez la propriété “installed” sur false.

Intégration dans une fédération d’identité

Bon, on a un ownCloud fonctionnel, maintenant on va le tuner un peu :-) On va commencer par mettre en place une authentification basée sur un échange SAML. On a de la chance, il existe une application, user_saml, permettant ce mode d’authentification, on la trouve ici :
http://apps.owncloud.com/content/show.php/user_saml++?content=154410

Au préalable, il faut créer un Service Provider qui va bien. L’application user_saml s’appuie sur SimpleSamlPhp pour l’intégration dans une fédération d’identité. Une documentation d’installation de SImpleSamlPHP est disponible ici. Une fois le SP opérationnel, on peut passer à la suite.

Pour installer user_saml, il faut d’abord placer les fichiers de l’appli dans le dossier /var/www/owncloud/apps/ puis activer l’application dans l’interface d’administration. Donc on commence en SSH sur le serveur :

cd /tmp/
wget https://github.com/pitbulk/apps/archive/master.tar.gz
tar zxvf master
cp -pr apps-master/user_saml /var/www/owncloud/apps/
chown apache:apache /var/www/owncloud/apps/ -R
rm -rf apps-master master.tar.gz

Ensuite, on se connecte à l’interface en tant qu’administrateur, puis on va dans la gestion des applications pour activer l’application “SAML user and group backend”. Il nous reste à configurer l’application dans l’interface d’administration :

Ici rien de compliqué, le champs “SimpleSAMLphp SP source” correspond à l’ID de votre application dans le fichier authsource.php de votre installation SimpleSaml. Pour le mapping des attributs, c’est à vous de voir ce dont vous avez besoin. L’attribut groupe est optionnel. Je vous conseille d’activer la création de comptes automatique. Vous pourrez gérer les droits d’accès dans la conf du SP SimpeSaml, par exemple, en limitant les IdP autorisés à identifier des utilisateurs.

A noter que la procédure d’installation de l’application “user_saml” peut s’appliquer pour d’autres applications qui ne seraient pas directement fournies avec OC. Dans le doute, je vous ai fais un petit résumé dans la partie suivante.

Ajouter des applications

Une des grandes forces de ownCloud est son “magasin” d’applications. Il est très simple de développer des applis pour ownCloud et donc la communauté en a produit déjà un grand nombre que l’on peut retrouver ici :
http://apps.owncloud.com/

L’ajout d’une nouvelle application est très simple, il suffit de télécharger les sources de l’appli et de les mettre dans le dossier apps/ de l’instance ownCloud. On active ensuite l’application par l’intermédiaire de l’interface d’administration. Voici les quelques commandes nécessaires :

cd /tmp/
wget <url_appli>/<appli>.tar.gz
tar zxvf <appli>.tar.gz
mv <appli> /var/www/<mon_owncloud>/apps/
chown apache:apache /var/www/<mon_owncloud>/apps/

Puis, allez dans l’interface de gestion des applications (connecté en administrateur) :
https://<mon_owncloud>/settings/apps.php

Et activez les applications que vous voulez tester :

Méfiez vous quand même des applis qui n’ont pas été testées pour votre version de ownCloud. Si elle génère une fatal error PHP, vous pouvez vous retrouver bloqué. C’est l’inconvénient des projets trop actifs :D

Les accès clients

Je vais décrire ici, dans les grandes lignes, comment accéder aux diverses fonctionnalités de ownCloud. Je ne peux pas tester tous les clients pour chaque type de protocoles, je vais me limiter à un exemple de poste de travail en Ubuntu avec Thunderbird.

Accès avec clients lourds

On l’oublie rapidement devant la tonne d’applications mais ownCloud à la base est une alternative à dropbox. Il offre donc la possibilité de synchroniser des répertoires sur vos différents appareils informatiques et votre espace sur OC. Le client lourd est disponible pour une majorité de distribution, je l’ai testé sur windaube, sur CentOS et Ubuntu, ça marche tout seul.

Sur Ubuntu, vous trouverez les commandes ici : http://software.opensuse.org/download/package?project=isv:ownCloud:devel&package=owncloud-client

Sur ma VM de test en Ubuntu 12.10, même pas besoin de toucher aux dépôts, le client lourd est disponible dans les dépôts officiels :

apt-get install owncloud-client

Lancez l’application sans être root. Il y aura un avertissement au démarrage du client vous invitant à configurer votre accès à OC. Pour cela, faites un clic droit sur l’icône OC dans le menu en haut à gauche, puis cliquez sur “Configure …” :

Il suffit d’indiquer le nom complet de votre instance OC et vos identifiants :

Une fois valider, le client va tenter de se connecter avec les informations fournies. Si tout se passe bien, vous devriez avoir un beau message vert “Congratulations, your ownCloud can be connected!”.

Donc le tuyau fonctionne, maintenant il faut indiquer à OC ce qu’il doit synchroniser. Il s’agit de créer des sortes de liens symboliques entre un dossier local et un dossier distant. Pour créer un lien, cliquez sur l’icône OC dans la systray puis sur “Add folder…” :

Ensuite, on sélectionne le dossier local que l’on souhaite synchroniser et on lui met un nom court pour le retrouver plus tard :

Sur l’écran suivant, on choisit le nom du dossier distant. Le client va contacter le serveur pour vérifier si le dossier existe. Si il n’existe pas, il va vous proposer de le créer, cliquez sur “Create” puis sur “Finish” et voila vous avez synchronisé votre dossier :

Peut on utiliser un dossier distant existant ? La réponse est oui et c’est même dans ce mode qu’on utilisera le plus souvent la synchronisation. Le but étant d’avoir accès à ses documents sur tous ces appareils (PC fixe, portable, tablet, smartphone) ou les retrouver depuis n’importe où !

Accès en WebDav

Une autre façon d’accéder à ses fichiers est un montage webDav. Ouvrez Nautilus (explorateur de Gnome), cliquez sur “Fichier” -> “Se connecter à un serveur …” :

Sélectionnez ensuite “WebDav sécurisé” comme Type de service. Indiquez ensuite l’URL du service WebDav qui a cette forme <mon_ownCloud>.<mon_domaine>/remote.php/webdav/ (ne pas mettre de https://) et enfin votre identifiant :

On indique son mot de passe OC et le répertoire distant est disponible dans l’explorateur.

Synchroniser son agenda avec Thunderbird

Une des applications livrées par défaut avec OwnCloud est l’agenda. Cette application est très complète, elle permet de synchroniser son agenda avec différents appareils mais aussi de partager ce dernier avec d’autres utilisateurs OC. Il manque encore quelques options pour le partage mais pour le reste c’est parfait ! Ça gère même les invitations aux réunions :-)

Le plugin Lightning ajoute la gestion d’agendas dans Thunderbird, on va utiliser ce dernier pour synchroniser notre agenda OC avec Thunderbird. Ce plugin est disponible dans le dépôt des addons Mozilla :
https://addons.mozilla.org/fr/thunderbird/addon/lightning/

Une fois le fichier XPI téléchargé et installé, on va configurer la connexion caldav. Si vous avez une vieille version de Thunderbird, il est possible que vous ayez des difficultés à trouver la bonne version de lightning. Il faut en tester plusieurs jusqu’à en trouver une qui accepte de s’installer (ou mettre à jour votre Ubuntu :D).

Dans le menu “Fichier” -> “Nouveau”, cliquez sur “Agenda…”. On va créer un agenda du type “Sur le réseau” :

Ensuite, on indique qu’il s’agit du protocole CalDav et on va renseigner l’URL d’emplacement de l’agenda. Cette URL peut être trouvé dans l’interface de ownCloud, il y a deux URL CalDav proposée, mais une seule marche. Je vous ai fais une petite capture d’écran en 3 étapes (pourtant j’aime pas les screenshots dans une doc !!) pour trouver rapidement la fameuse URL :

Bon sinon, si vous n’avez que l’agenda par défaut et que vous connaissez votre login, il vaut mieux “calculer” l’URL soit même qui aura pour forme :
https://<mon_owncloud>.<mon_domaine>/remote.php/caldav/calendars/<login_owncloud>/defaultcalendar

On revient sur Thunderbird, où nous en étions à créer l’agenda :

Il nous reste à afficher l’onglet d’agenda dans notre Thunderbird. Dans le menu, cliquez sur “Événements et taches” puis sur “Agenda”.

Synchroniser ses contacts avec Thunderbird

OC intègre un carnet d’adresses qui s’appuie sur le format vCard. Il est possible de synchroniser ce carnet avec d’autres outils via le protocole carddav. Thunderbird ne propose pas de plugins sur le site de Mozilla, mais le projet SOGO développe un plugin pour Thunderbird et le met à disposition de tous, il s’appelle SOGO Connector ! De plus, il est très bien suivi : une bonne réactivité à chaque nouvelle version de Thunderbird.

Comme pour le plugin Lightning, on va d’abord télécharger le XPI puis l’installer. Pour trouver le plugin SOGO Connector :
http://www.sogo.nu/fr/downloads/frontends.html

Avant de configurer Thunderbird, on va récupérer l’URL d’accès au carnet d’adresse (même principe que pour l’agenda). Pour cela, on se connecte à l’interface OC et on va dans l’application “Contacts”. En bas à droite de la liste des carnets d’adresses, cliquez sur l’engrenage puis sur “Plus …” pour faire apparaitre vos différents carnets d’adresse, cliquez ensuite sur “Afficher le lien CardDav” pour récupérer l’emplacement de votre carnet :

Retour sur Thunderbird, allez dans le menu “Outils” et cliquez sur “Carnets d’adresses”. Une fois dans la fenêtre de gestion des contacts, allez dans le menu “Fichier” -> “Nouveau” et créez un “carnet d’adresse distant” avec pour emplacement l’URL récupérée plus haut :

Vous pouvez maintenant synchroniser vos contacts Thunderbird vers OC et inversement !! Vous pouvez aussi créer une liste globale sur OC que vous partagerez à tous, ici tout le monde pourra monter cet annuaire dans Thunderbird à la manière de la liste d’adresses globale Exchange !!

Conclusion

OwnCloud est une vraie alternative libre à Dropbox, permettant de garder le contrôle sur ses données. Mais avec l’ajout d’applications, on peut transformer notre OC en un véritable portail de travail collaboratif regroupant à peu prêt tout ce qui est nécessaire (agenda, carnet d’adresse, échange de fichier, messagerie instantanée, …). Ce logiciel est très populaire actuellement et bénéficie d’une communauté ultra réactive et ouverte aux propositions. Le code est bien foutu et possède une API accessible et complète, ce qui vous permettra d’adapter ownCloud à tous vos besoins !

Références

Et c’est tout !

ArticleGeekcaldavcarddavcollaboratifdropboxfédération d identitéocowncloudowncloud-clientsamlsimplesamlphpthunderbirduser_samlwebdav
Le contenu de ce site est sous licence Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)

Gamb

DIY

VirtualHosts Apache : Un script pour générer les fichiers de conf

LAMP : Sauvegarder facilement ses sites web