Installation d'un serveur Sparkleshare sur Debian et d'un client Sparkleshare sur Ubuntu
Cet article a été publié par Benjamin
le 20-03-13 à 22:35 dans la catégorie Auto hébergement
Tags :
- auto-hebergement
- Libre
- Serveur
- Ubuntu
Depuis quelques temps, j'ai en tête un "projet" que j'aimerais bien mettre en place chez moi : un cloud personnel. Ayant un serveur@home avec deux disques durs (avec réplication de l'un sur l'autre), je souhaitais en faire un serveur de stockage de mes données (présentes sur plusieurs PC fixes et portables) via un logiciel de cloud. Au départ, j'ai testé Owncloud (version 5) mais je n'ai pas été convaincu donc j'ai cherché un autre logiciel. Le deuxième plus "connu" est Sparkleshare, j'ai décidé de le tester.
Voici comment j'ai installé le serveur sur une Debian Squezze et le client sur une Ubuntu 10.04 et une 12.04. Je vous donnerai ensuite mes impressions sur cette solution.
I. Serveur
Installation
Nous allons utiliser un assistant très pratique pour installer et configurer le serveur Sparkleshare. Cet assistant s'appelle dazzle. Pour l'obtenir, il suffit de lancer cette commande (en tant que root) :
curl https://raw.github.com/hbons/Dazzle/master/dazzle.sh --output /usr/bin/dazzle && chmod +x /usr/bin/dazzle
Une fois installé, vous devez utiliser la commande dazzle pour configurer le serveur :
dazzle setup
L'assistant effectuera toutes les actions nécessaires pour la mise en place de Sparkleshare :
- Vérification de la présence de git et installation si nécessaire
- Création d'un compte utilisateur "storage" qui sera utilisé pour utiliser Sparkleshare
- Configuration du compte "storage" (en particulier des accès SSH, car tout se fait en SSH)
- Rechargement du serveur SSH
Note : À ce moment, j'ai eu une erreur avec mon serveur SSH. Il refusait de redémarrer et m'affichait l'erreur suivante :
/etc/ssh/sshd_config line 93: Directive 'AuthorizedKeysFile' is not allowed within a Match block
Il s'agit d'une erreur due aux lignes ajoutées par Sparkleshare à la fin du fichier /etc/ssh/sshd_config (utilisée pour l'accès SSH au compte "storage"). Après pas mal de recherches, je me suis rendu compte que l'erreur était due à la version de mon openssh-server. Sur ma Debian Squeeze, la version installée était la 5.5 (1:5.5p1-6+squeeze3). La configuration ajoutée par Sparkleshare n'est compatible qu'avec la version d'openssh-server 6.x.
Pour remédier à ce problème, j'ai dû mettre à jour mon openssh-server via les dépôts testing de Debian (ce qui a nécessité une mise à jour du paquet libc6-dev) au passage. Cela a installé la version 6 (1:6.0p1-4) d'openssh-server et cela a résolu mon problème.
Configuration
Maintenant que mon serveur est installé, j'ai créé (toujours via dazzle) un répertoire destiné à accueillir mes données à synchroniser. Pour ce faire, il faut utiliser la commande suivante :
dazzle create DOSSIER
ou en crypté :
dazzle create-encrypted DOSSIER_CRYPTE
Voici le résultat de la commande :
Creating encrypted project "DOSSIER_CRYPTE"...
-> /usr/bin/git init --bare /home/storage/DOSSIER_CRYPTE-crypto
-> /usr/bin/git config --file /home/storage/DOSSIER_CRYPTE-crypto/config receive.denyNonFastForwards true
-> echo "*.DMG -delta" >> /home/storage/DOSSIER_CRYPTE-crypto/info/attributes
-> chown --recursive storage:storage /home/storage
-> chmod --recursive o-rwx /home/storage/DOSSIER_CRYPTE-crypto
Project "DOSSIER_CRYPTE-crypto" was successfully created.
To link up a SparkleShare client, enter the following
details into the "Add Hosted Project..." dialog:
Address: ssh://storage@mon_ip:mon_port
Remote Path: /home/storage/DOSSIER_CRYPTE-crypto
To link up (more) computers, use the "dazzle link" command.
On voit que le dossier est créé dans le répertoire /home/storage (qui est la homedir de notre utilisateur storage).
Voila, la partie serveur est presque terminée, il faudra faire une dernière action lors de la configuration de notre client mais nous verrons cela plus bas.
II. Client
Installation
Sparkleshare n'est pas officiellement packagé pour Ubuntu dans ses versions 10.04 jusqu'à 11.10. Ceci dit, un dépôt PPA est disponible (compatible avec Ubuntu 10.04 -> 11.10). Il ne s'agit pas des dépôt officiels, aussi, installez-le en connaissance de cause. Vous devez l'ajouter et lancer l'installation grâce à ces commandes :
sudo add-apt-repository ppa:warp10/sparkleshare
sudo apt-get update
sudo apt-get install sparkleshare libwebkit1.1-cil git-core python-nautilus
Depuis la version 12.04, tout est packagé de base, donc cette commande sera suffisante :
sudo apt-get install sparkleshare libwebkit1.1-cil git-core python-nautilus
Configuration
Le premier lancement du client vous permettra de renseigner quelques informations (nom, prénom, adresse mail) et vous affichera un petit tuto. Une fois passé cette présentation, il va falloir "relier" le client avec le serveur. Pour cela, récupérez le contenu du fichier présent dans le répertoire SparkleShare de votre homedir (il s'agit de la clé publique du client). Retournez sur le serveur puis lancez la commande suivante :
dazzle link
Après avoir appuyé sur Entrée, vous n'avez plus qu'à coller la clé publique de votre client, valider une dernière fois et le tour est joué.
Dernière étape, l'ajout du nouveau dépôt (le répertoire que nous avons créé ci-dessus) sur le client. Pour cela, il suffit de cliquer sur l'icône Sparkleshare de votre zone de notification puis "Ajouter un projet hébergé" :
Choisissez ensuite "on my own server" (notez que vous pouvez vous brancher sur des serveurs git publics tels que Github) puis renseignez l'adresse de votre serveur et le répertoire de destination (il s'agit des données que vous avez eu lors de la configuration du répertoire sur le serveur) :
Address: ssh://storage@mon_ip:mon_port
Remote Path: /home/storage/DOSSIER_CRYPTE-crypto
Après avoir validé, vous avez accès à votre répertoire (qui sera synchronisé avec tous les clients en temps réel).
Note : Je n'ai pas testé les clients Mac et Windows mais je suppose que l'installation et surtout la configuration sont à peu près identiques.
III. Conclusion
Sparkleshare est un très bon logiciel. Les échanges sont chiffrés (via SSH), rapides, l'installation n'est pas trop difficile et c'est basé sur git. Malheureusement, le gros point noir qui est vraiment rédhibitoire pour moi c'est que je ne peux pas retrouver mes fichiers directement sur le serveur. Dans le fameux répertoire créé sur le serveur, tout est hashé, crypté, bref, complètement inutilisable :
Autrement dit, il faut obligatoirement avoir un client pour accéder aux données. Moi je voulais pouvoir avoir les données disponibles depuis les clients mais également directement sur mon serveur. Sparkleshare ne propose pas cela.
C'est la raison pour laquelle je n'irai pas plus loin dans mon utilisation de cet outil. Il faut que j'en trouve un autre. Si vous avez des idées, faites-moi signe :)
Edit : Du coup, voici ce que j'ai fait pour supprimer Sparkleshare :
userdel storage
rm -rf /home/storage/
rm /usr/bin/dazzle
#Modification du fichier /etc/ssh/sshd_config pour supprimer les liens avec /home/storage puis :
/etc/init.d/ssh reloadGIT reste installé sur le serveur mais ça c'est pas bien grave.
Commentaires
Pourquoi pas unsion tout simplement ?
Il permet de synchroniser des dossiers/fichiers entre plusieurs répertoires, comme rsync, mais dans les deux sens.
On peut utiliser ssh pour synchroniser avec des dossiers distants.
On peut donc accéder aux données comme on accède à un dossier classique sur le serveur.
L'installation est simple (apt-get, mais attention à bien avoir la même version partout), et la configuration, c'est juste un petit fichier à éditer.
http://www.cis.upenn.edu/~bcpierce/...
http://wiki.mandriva.com/fr/Unison
Je viens de me faire griller en vitesse sur un tuto que je rédigeais :)
Pour ma part, j’ai choisi sshfs. Tu gardes ainsi la sécurité du protocole ssh et la simplicité d’utilisation du protocole nfs.
Si tu n'as pas accroché avec OwnCloud et Sparkleshare, peut-être aimerais tu la version full-web proposée par Idleman : DropCenter http://projet.idleman.fr/dropcenter...
Salut,
Merci pour ton article. J'ai longtemps aussi cherché une solution de sauvegarde/synchronisation/accès multiple à mes données et j'avais essayé sans succès sparkleshare, il y a quelques mois. Je suis d'accord avec toi concernant Owncloud même si je n'ai pas essayé la version 5. Avec Owncloud la synchronisation avait entraîné le création de milliers de fichiers *_conflict sans que je n'en trouve vraiment la cause.
Depuis j'utilise Unison qui est vraiment une très bonne appli. J'ai essayé la dernière version avec laquelle on peut faire de la synchronisation en temps réel (cad à chaque modif de fichier comme dropbox) mais c'est un peu trop gourmand en ressource et j'ai préféré un bon vieux cron.
En quoi Unison ne serait pas une solution pour toi ?
Merci
Désolé je n'avais pas vu le commentaire de FLo
Pour Etno72
Une solution sshfs seule n'est pas équivalente à un système de type sparkleshare: en effet, si tu n'as plus de connexion, tu n'as plus de fichier!
Si tu cherche synchroniser tes données et à pouvoir les utiliser sur le serveur qui te servira de point de chute c'est de la 'réplication' de donnée qu'il te faut mettre ne place et le champion tout trouvé pour ça c'est rsync ;)
Couplé à un script tout bête de synchro / resynchro ( reception / envoi selon ce que tu cherche à faire )
La synchro couplé à du cron et à la commande d'extinction du PC, la resynchro à chaque démarrage du pc et tu à ton bidulle fonctionnel ;)
Sinon il est sympa ton application que tu présente et reste une bonne alternative à Owncloud.
Peut-être seafile (http://seafile.com/en/download/)
Git, toujours git... Pour moi l'affaire est simple; j'ai créé un partage NFS limité au réseau local sur mon serveur, et pour l'accéder depuis l'extérieur, j'utilise sftp via KIO ou gvfs (ou Emacs). le seul inconvénient etant que cette méthode ne permet pas de sauvegardes, mais c'est vite corrigé avec un script ceintura de sauvegarde périodique.
@Flo : Je ne me suis jamais trop penché sur unison, c'est une piste à explorer, merci.
@TimCruz : Désolé :) Surtout que je n'avais pas prévu de faire de tuto comme ça, c'est juste que j'ai installé ça hier et j'ai pris des notes, donc je me suis dit pourquoi ne pas en faire profiter tout le monde.
Je ne connais pas DropCenter, j'ajoute ça à ma liste.
@etno712 : C'est vrai que j'avais oublié sshfs. Je ne sais pas si on peut monter un répertoire partagé via SSH dans un Windows. Je souhaite une intégration forte avec l'OS Windows. Le seul inconvénient (comme l'a dit michelange c'est que si le serveur n'est plus là, plus de données en local)
@michelange : Unison est peut être la solution, je ne l'écarte pas :)
@clochette : c'est vrai q'un système de synchro via scripts peut être intéressant, je pense que je partirai dessus si je ne trouve rien d'autre
@Jan : Je ne connaissais pas seafile, je viens de l'essayer sur leur site et j'ai vu qu'il y a vait un tas de clients, je vais tester ça rapidement !
@etenil : En effet, git semble assez utile pour ce genre de besoin.
Pour l'instant j'utilise Owncloud 5 à titre personnel, j'ai fais ce choix car j'aimerais exploiter plusieurs ce ses services :
- Stockage de fichier.
- Stockage des favoris de mes navigateurs.
- News (alternative à Google Reader).
Par contre, Owncloud ne supporte pas (ou très mal) le partage de fichiers entre utilisateurs, donc au boulot j'ai préféré déployé Seafile comme solution alternative à dropbox.
Question bête : Tu n'es pas en mesure d'installer un client sur ton serveur également ?! (oui, je sais, ca peut paraitre tellement idiot, qu'il est possible d'être passé à coté :p)
Si tu testes seafile je suis preneur de tes retours. J'ai la même problématique que toi, pour l'instant j'utilise un bête partage NFS en local. J'ai horreur de owncloud qui est tout pourri selon moi, et j'avais vu seafile sans avoir eu le temps de tester encore.
@Nassim : Je ne savais pas que OC faisait du partage de favoris et lecteur de RSS. Moi j'utilise RSSLounge qui me convient parfaitement mais pas de centralisation de mes favoris.
@Nono : J'y ai pensé mais ce n'est pas possible car je n'ai pas d'interface graphique sur mon serveur et je veux conserver mon arborescence de fichiers :)
@G-rom : Si je teste, je ferai un tuto/compte rendu, c'est vrai que ça me branche plutôt bien ce seafile.
@Benjamin: Il te suffit d'aller dans le menu d'Owncloud pour ajouter/activer des applications supplémentaires. Le module News qui sert d’agrégateur de flux RSS n'est pas encore sortie en version stable mais il peut être téléchargé depuis les sources du projet disponibles sur Github.
Après reste à savoir s'ils vont proposer une API permettant la synchronisation avec une application mobile (Android ou autre). Pour les favoris, j'ai personnellement été obligé de coder un petit addon pour Chrome car la solution par défaut impose l'ajout d'un favoris permettant de sauvegarder l'URL ouverte... ça ne s'intégrait pas très bien à l'interface de Chrome.
Concernant :
"Je ne sais pas si on peut monter un répertoire partagé via SSH dans un Windows" peut être que swish http://www.swish-sftp.org/ ou sftp net drive http://www.eldos.com/sftp-net-drive... pourraient te convenir ?
@michelange: Oui sshfs n’est pas la solution parfaite mais pour moi c’est un très bon compromis !
@Benjamin: Sur la toile, on trouves des client sshfs pour windows mais je n’ai aucune idée de ce qu’ils valent.
@etenil: le problème de gvfs, c’est qu’il intègre mal les dossiers distant par rapport à sshfs. Dans la majorité des cas et pour un utilisateur basique c’est parfait. Mais quand tu veux utiliser un environnement genre Eclipse sur ces dossiers, ça devient problématique. Et puis avec sshfs, tu as le petit plus sans intérêt: avoir l’aperçu de tes documents dans ton gestionnaire de fichiers :)
- Pas de mode hors ligne (nativement).
- Pas de gestion des conflits.
- Pas de gestion native d'ACL.
En gros, quitte à faire "rustique", autant utiliser git+ssh, au moins on a le mode hors ligne et la gestion des conflits... avec de la bidouille on peut même bricoler une gestion d'ACL. D'ailleurs, les solutions type sparkleshare ou seafile se base sur du git (dans le cas de seafile, sur un système de versionning se rapprochant de git mais qui n'est pas git).
@Benjamin, peut être que baracudadrive réponde à ton besoin! (http://barracudadrive.com/)
Cherchant à faire un peu la même chose que toi, j'ai trouvé cette alternative, je pense que je vais l'utiliser (sur un rasberry pi ;) ).
On peut accéder aux fichiers stockés sur le serveur avec un web interface ou via webdav ( possibilité de monter un lecteur réseau depuis un poste windows, Mac, ou de le monter sur linux comme un système de fichier avec dav2fs). le tout sécurisé par https!
Il y a une gestion des droits sur les répertoires avec des users, groups et des "ACL"
Il est possible de synchroniser des répertoires avec un rsync, un client pour windows et macOS est disponible. Par défaut la synchro se fait du serveur vers le client, mais je pense que si on bidouille leur script batch (pour windows) c'est tout à fait possible de faire l'inverse, c'est une commande rsync!
Et pas mal d'autres fonctionnalités (un CMS, tunnel SSL...) que l'on peut désactiver si on ne les utilises pas.
L'interface web n'est pas toujours très intuitive au début, ni très jolie, mais fonctionnelle.
Pour ma part je pense m'orienter vers cette solution
Salut,
question bête (j'ai pas testé) : et si tu crées sur ton serveur un dossier non crypté, tu as quand même un problème d'accès à l'arborescence ?
Merci pour vos conseils, je pense que je vais rester sur owncloud quand même pour le calendrier synchronisé sur mon android. Je viens de tester et tout fonctionne bien.
@Mamoud : j'ai pensé à la même chose que toi :) J'ai testé en crypté et en non-crypté mais j'ai rencontré le même problème.
ta pensé à agora_project?
Ah c'est marrant on doit mettre ça en place au boulot :)
Je pense qu'il n'y a pas de client de synchro pour PC avec agora projet par contre.
Voilà la solution pour utiliser Sparkleshare sur ton serveur et avoir accès aux donnees sur ce même serveur : https://github.com/hbons/SparkleSha...
Ah en effet, c'est presque parfait sauf que c'est en lecture seule qu'on fait le montage, moi j'ai besoin d'écrire également :)
Mais merci pour l'adresse !
A l'auteur de cet article:
Les fichiers ne sont pas directement lisibles sur le serveur car le serveur stock le strict minimum: le format interne du dépôt git.
Mais pour accéder aux fichiers depuis le serveur ou depuis n'importe où, il suffit d'utiliser directement git, c'est ce que fait le client sparkleshare.
Un "git clone /home/storage/project" récupèrera tout de façon accessible (mais aussi tout l'historique.) Pour ne récupérer que la dernière version voir http://stackoverflow.com/a/163769.
Par contre ça ne gère pas les dépôts chiffrés, pour ça il faudra regarder ce que fait sparlkeshare (je crois me souvenir avoir lu qu'ils faisaient du chiffrement standard aes-256, donc ça doit se déchiffrer avec des outils standards aussi)
C'est marrant, j'ai eu une discussion avec mon collègue hier qui m'a dit la même chose, d'utiliser un git clone pour tout récupérer sur le serveur.
Problème : cela duplique les données sur le serveur.
A quand le tuto seafile sur la framboise Benjamin ?
Le plus vite possible :)
Dès que j'ai 1/2 journée de libre en fait.
Je tombe sur cette page et suis intéressé de voir que Seafile en titille plus d'un. J'ai installé OwnCloud 5 il y a peu et je ne comprends vraiment pas ce qu'on lui trouve de génial. Buggé à fond !!!
Bref, je suis allé voir du côté de Ajaxplorer et je dois dire que j'en suis assez content pour l'instant. A voir si ça vous dit.
Quant à Seafile, je compte bien aussi le tester mais apparemment il n'est pas compatible Debian 7 et, sauf erreur, je ne vois rien concernant une possibilité de se connecter en HTTPS.