Transformer un Raspberry Pi en passerelle vers Hubic d'OVH : Nginx, script Toorop & Cloudfuse

10 mars 2014 - Attention, il semble que le code de https://github.com/Toorop/HubicSwiftGateway ne soit plus fonctionnel aujourd'hui... Il faudrait vraisemblablement se rabattre vers https://github.com/oderwat/hubic2swiftgate...

Hubic est une intéressante offre de stockage en ligne proposée par OVH, le champion français de l'hébergement web. Elle dispose notamment d'un bon rapport qualité/prix (60€ HT/an pour 500 Go). Mais elle souffre de plusieurs défauts : pas de client Linux disponible au moment de l'écriture de ces lignes, et le client Windows/MacOs se résume à un client de synchronisation comme le client d'ownCloud ou celui de Dropbox et peut être insuffisant pour réaliser des sauvegarde de données (par exemple des photos).

Voici une reprise de plusieurs bonnes idées glanées sur le net pour pallier ces défauts : nous allons transformer un Raspberry Pi en passerelle Hubic ce qui permettra à tous les périphériques du réseau local d'accéder à Hubic en se passant du client d'OVH.

Introduction technique

Hubic s'appuie (si la presse spécialisée dit vrai) sur OpenStack, et plus précisément sur OpenStack Object Storage encore appelé Swift. Il est donc possible de se connecter à Hubic à l'aide d'un client swift que l'on pourra installer sur son système avec son gestionnaire de paquets préféré (pour les non-linuxiens, Cyberduck intègre normalement les fonctionnalités d'un client swift).

Toutefois, OVH a ajouté à Hubic une couche d'authentification qui n'est pas gérée par défaut par les clients swift. Heureusement entrent alors en jeu les talents de Toorop et son fort utile script que nous allons déployer plus bas.

Un script PHP pour passer l'étape d'authentification

Toorop a développé un script fort utile qui se charge de l'authentification auprès d'Hubic et permet ensuite une "libre" communication avec un client swift. Le script en question est codé en PHP et est disponible ici : https://github.com/Toorop/HubicSwiftGateway.

Installons d'abord un serveur web + PHP sur le Raspberry Pi (que l'on considèrera dans la suite propulsé par Raspbian, dérivée de Debian). Par souci de légèreté, nous déploierons ici Nginx :

aptitude install nginx php5-fpm

puis téléchargeons le script de Toorop :

cd /var/www
git clone https://github.com/Toorop/HubicSwiftGateway.git
cp -R /var/www/HubicSwiftGateway-master/src/www /var/www/HubicSwiftGateway

et créons un nouvel hôte virtuel dans la configuration de nginx qui pointera vers /var/www/HubicSwiftGateway :

touch /etc/nginx/sites-available/hubicgw

Le fichier de configuration pourra contenir :

server {
       server_name hubicgw.raspberry.lan;
       root /var/www/HubicSwiftGateway;
       index index.html index.htm index.php;

       location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

On active cet hôte virtuel par :

cd /etc/nginx/sites-enabled
ln -s ../sites-available/hubicgw

et on redémarre nginx :

service nginx restart

La première étape est passée : si on appelle dans le navigateur hubicgw.raspberry.lan alors le système devrait répondre "Headers AUTH_USER and/or AUTH_KEY are missing" ce qui est normal et atteste d'un bon fonctionnement du script php. Le travail sur le Raspberry Pi s'achève ici : il est fin prêt à jouer le rôle de passerelle vers Hubic.

Se connecter alors avec le client swift

A partir de maintenant, les actions sont à effectuer sur les postes depuis lesquels on souhaite accéder à Hubic. On peut dès lors se connecter à Hubic à l'aide du client swift que l'on aura préalablement installé sur la machine de son choix (par ex. aptitude install swift sous Debian) :

swift -A http://hubicgw.raspberry.lan/ -U login_hubic -K motdepasse_hubic

(bien sûr, si le réseau local sur lequel on se trouve n'est pas parfaitement sécurisée Wifi, CPL..., on veillera à activer une connexion https pour éviter que des oreilles indiscrètes ne viennent écouter notre login et notre mot de passe Hubic !)

Simplifier l'accès grâce à cloudfuse

Nous allons poursuivre en installant sur le poste local le petit utilitaire cloudfuse que l'on trouvera ici : https://github.com/redbo/cloudfuse. Une fois téléchargé, il faut le compiler et l'installer par :

./configure
make
make install

On créera alors un fichier .cloudfuse à la racine du compte utilisateur :

username=login_hubic
authurl=http://hubicgw.raspberry.lan
cache_timeout=20

et la commande suivante permettra d'effectuer le montage de l'accès hubic comme un dossier classique de votre ordinateur :

cloudfuse /mnt/hubic/ api_key=password_hubic

Il nous est dès lors possible de naviguer au sein de l'espace hubic depuis le gestionnaire de fichiers favori.

Faire ses sauvegardes avec rsync sur Hubic

Tout est en place pour la dernière étape : nous pouvons désormais utiliser rsync (fameux logiciel unix de sauvegarde) pour synchroniser notre répertoire de photos avec sa sauvegarde en ligne :

rsync -var --size-only /path/to/my/photos /mnt/hubic/default/mon/dossier/photos

Bonnes sauvegardes !