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 :)