Et si on faisait un vrai cloud personnel ?

Un vrai cloud personnel

Le concept de cloud tel qu’il est originellement énoncé est intéressant dans le sens où disposer de toutes les données que l’on désire n’importe où sur la planète sans se balader avec une clé USB ou encore un disque dûr externe est tentant. Cependant, on remarque que cela pose certains problèmes récurrents comme le sujet – très en vogue en ce moment – de la sécurité. Comment sont traitées nos données ? Sont-elle à l’abri des regards indiscrets et/ou des scripts vous affichant de la publicité ciblée ? Si vous voulez être à peu près sûr de pouvoir contrôler vos données, il vous faut passer par un ou des prestataires dignes de confiance (ils se font rares, ceux-là !), délocaliser vos informations dans un endroit où on ne se permettra pas d’aller jeter un oeil n’importe où n’importe comment (petite Suisse, si tu m’entends) ou encore gérer vous-même votre propre petit serveur, choix que j’ai finalement fait.

Bien sûr, il n’est pas possible de garantir que vous pourrez mieux gérer la sécurité de votre propre serveur qu’un prestataire habitué à ces pratiques, mais vous vous sentirez peut-être moins l’objet de la curiosité des services d’espionnage. S’ils viennent jusque sur votre propre serveur pour s’en prendre à vos données, c’est que vous avez fait quelque chose d’un peu plus répréhensible que simplement vous être inscrit sur un site à forte affluence. Enfin, je m’égare un peu, revenons-en au sujet initial: le cloud personnel.

Si vous rêvez d’avoir un petit serveur qui vous permette de faire un mini-cloud qui vous sera dédié RAM et CPU (mauvais jeu de mots), vous pouvez vous rabattre sur la solution proposée par OwnCloud. Un super projet qui, à mon humble avis, a de l’avenir. C’est très simple à installer (les guides officiels sont bien faits) même sur un simple hébergement Web mutualisé. C’est un sacré plus ! En ce qui me concerne, j’ai trouvé ce script très bien, mais il me manquait encore des sauvegardes de mes données… oui, parce que j’aime quand même tester des paramètres et il m’arrive de tout faire tomber quand j’active de nouveaux réglages. J’aime donc être sûr que tout va pouvoir repartir comme c’était avant.

C’est là que je ressors mon BitTorrent Sync, bien sûr ! Ayant chez moi un petit Raspberry Pi, je l’ai couplé à un disque dûr externe et synchronise les données du serveur sur le Web avec celui-ci. Cela m’évite de perdre d’un seul coup tous mes documents (même s’ils ne sont pas très précieux, c’est toujours désagréable) et j’en dispose ainsi toujours d’une copie chez moi, au cas où. Autre aspect intéressant: pouvoir synchroniser ses données entre mon Raspberry, mon serveur et mon ordinateur. BitTorrent Sync s’avère très efficace dans cette tâche. Mais il lui manque quelque chose, à savoir:

Comment pouvoir accéder à mes documents lorsque je ne suis pas chez moi, ou que je suis sur mon smartphone ?

Et bien à cette question, on peut répondre: OwnCloud ! C’est là que c’est intéressant ! En couplant les deux logiciels on peut arriver à faire quelque chose de sympa, mais ça demande quelques réglages.

Et pour terminer cette introduction, on peut répondre à une autre question que je me suis posée avant de me lancer dans l’aventure:

 Comment synchroniser rapidement une grande quantité de fichiers et pouvoir y accéder simplement, si possible par l’OS, sans trop de manipulations ?

A cette question, je répondrai: BitTorrent Sync ! Cet outil servira en effet de synchroniseur de fichiers entre le serveur OwnCloud et les postes clients.

Les postulats de base

Pour cette petite marche à suivre pour réaliser votre propre serveur Cloud synchronisé avec votre machine personnelle ou un autre équipement permettant la sauvegarde (exemple: un NAS domestique), vous aurez besoin des prérequis suivants:

  • Avoir un serveur (web) avec OwnCloud installé et configuré à votre guise. Le serveur ne doit pas être un simple hébergement mutualisé, sinon vous n’aurez probablement pas accès aux fonctions nécessaires
  • Avoir installé, sur ce serveur, un Ubuntu 12.04 ou supérieur, ou toute distribution basée sur Debian
  • Avoir téléchargé la dernière version de BitTorrent Sync, l’avoir envoyé sur votre serveur dans votre répertoire personnel (/home/votreuser/), et décompressé

Configuration de BitTorrent Sync sur le serveur

Pour commencer, si vous avez décompressé l’archive contenant BitTorrent Sync, vous devriez avoir un fichier exécutable nommé très sobrement « btsync« . Je vous recommande d’aller le placer à un endroit où il sera facilement localisable, par exemple parmi les autres applications, soit sur votre serveur et en tant qu’utilisateur root:

mkdir /etc/btsync/ # créer le répertoire qui contiendra BitTorrent Sync
mv /home/votreuser/btsync /etc/btsync/ # déplacer btsync dans le nouveau répertoire

Dans le nouveau répertoire /etc/btsync, veuillez créer un nouveau fichier sync.conf (ou nommez-le comme bon vous semble, mais souvenez-vous-en !) contenant les indications suivantes (exemple):

{
  "device_name": "NomDeMonServeur",
  "listening_port" : 0,                       // 0 - randomize port

/* storage_path dir contains auxilliary app files
   if no storage_path field: .sync dir created in the directory
   where binary is located.
   otherwise user-defined directory will be used
*/
  "storage_path" : "/votre/espace/de/stockage/btsync/.sync",

// uncomment next line if you want to set location of pid file
  "pid_file" : "/votre/espace/de/stockage/btsync/btsync.pid",

  "check_for_updates" : true,
  "use_upnp" : true,                              // use UPnP for port mapping

/* limits in kB/s
   0 - no limit
*/
  "download_limit" : 0,
  "upload_limit" : 0,

/* remove "listen" field to disable WebUI
   remove "login" and "password" fields to disable credentials check
*/
  "webui" :
  {
    "listen" : "0.0.0.0:8888",
    "login" : "utilisateur",
    "password" : "votrepasswd"
  }

/* !!! if you set shared folders in config file WebUI will be DISABLED !!!
   shared directories specified in config file
   override the folders previously added from WebUI.
*/
/*
  ,
  "shared_folders" :
  [
    {
//  use --generate-secret in command line to create new secret
      "secret" : "MY_SECRET_1",                   // * required field
      "dir" : "/home/user/bittorrent/sync_test", // * required field

//  use relay server when direct connection fails
      "use_relay_server" : true,
      "use_tracker" : true,
      "use_dht" : false,
      "search_lan" : true,
//  enable sync trash to store files deleted on remote devices
      "use_sync_trash" : true,
//  specify hosts to attempt connection without additional search
      "known_hosts" :
      [
        "192.168.1.2:44444"
      ]
    }
  ]
*/

// Advanced preferences can be added to config file.
// Info is available in BitTorrent Sync User Guide.

}

Les informations qui vous seront importantes de modifier sont mises en évidence en bleu et font référence aux éléments suivants:

  1. Le nom de machine: ce nom représentera votre serveur sur le réseau BitTorrent. C’est celui-ci qui sera affiché lorsque vous vous connecterez à un partage.
  2. Le chemin de stockage système (storage path): ce chemin contient les données système de BTSync. Donnez-lui un endroit où il peut aller les stocker et où il aura le droit de le faire (un répertoire où www-data a le droit d’accéder, de préférence pas dans votre répertoire Web accessible de l’extérieur… vous comprendrez pourquoi l’utilisateur www-data plus loin)
  3. Le chemin vers le fichier PID (pid file): le fichier PID contient les informations sur l’instance de BTSync qui tourne actuellement. Même consigne: le chemin doit être accessible en écriture par l’utilisateur www-data
  4. Votre nom d’utilisateur et votre mot de passe: ces informations vous seront vitales pour accéder à l’interface de gestion de BTSync via le Web.

Vous trouverez sans doute plus d’informations sur le paramétrage spécifique à effectuer sur le site de BitTorrent, sans aucun doute.

Déclarer BitTorrent Sync comme processus système

Afin de pouvoir lancer BitTorrent Sync en tant que processus système qui sera exécuté en permanence et qui se lancera à nouveau au redémarrage du serveur, il vous faut créer un nouveau fichier, cette fois-ci dans /etc/init.d/. A titre personnel, j’ai appelé ce fichier « btsync », tout simplement. Il s’agit d’un script Shell qui sera exécutable. Placez-y le contenu suivant:

#! /bin/sh
# /etc/init.d/btsync
#
# Carry out specific functions when asked to by the system
case "$1" in
start)
    start-stop-daemon -c www-data:www-data --start -x /etc/btsync/btsync -- --config /etc/btsync/sync.conf
    ;;
stop)
    killall btsync
    ;;
*)
    echo "Usage: /etc/init.d/btsync {start|stop}"
    exit 1
    ;;
esac
exit 0

Bien sûr, si vous avez changé l’emplacement de l’exécutable « btsync » délivré par BitTorrent, vous devrez adapter le script selon votre configuration personnelle. Idem si vous avez nommé autrement le fichier de configuration que j’avais nommé « sync.conf ». Maintenant que le script est prêt, vous pouvez l’activer en tant que processus système en exécutant les commandes suivantes:

chmod +x /etc/init.d/btsync
update-rc.d btsync defaults

Vous pourriez être face à l’avertissement suivant lorsque vous exécutez la deuxième commande, ne vous en faites pas, ce n’est pas un problème, juste une indication que votre script ne dispose pas de toutes les informations (auteur, date de création, etc.) qu’il souhaiterait avoir:

insserv: warning: script 'btsync' missing LSB tags and overrides

Voilà ! Vous pouvez démarrer et arrêter votre service BitTorrent Sync à l’aide des commandes suivantes:

service btsync start
service btsync stop

En prime, votre service sera configuré pour s’exécuter en tant qu’utilisateur www-data, ce qui est primordial pour pouvoir toucher aux fichiers d’OwnCloud !

Couplage avec OwnCloud

Maintenant que votre serveur fait tourner BitTorrent Sync, il ne vous reste plus qu’à créer un partage des fichiers gérés par OwnCloud avec cet outil. Comment faire ? C’est très simple ! Il vous faut vous rendre sur l’interface de gestion Web de BTSync, soit à l’adresse http://votreserveur.com:8888/gui. Il vous faudra renseigner le nom d’utilisateur et le mot de passe que vous avez renseigné dans le fichier de configuration un peu plus haut dans ce billet.

Pour terminer, cliquez sur le bouton « Add folder » et, dans la nouvelle fenêtre renseignez le chemin (path) vers votre répertoire OwnCloud puis cliquez sur le bouton « Generate » pour créer une clé secrète. Validez le tout avec le bouton « Add » en bas de la fenêtre. C’est fait !

Synchroniser Owncloud avec vos ordinateurs grâce à BitTorrent Sync

Notez que OwnCloud stocke vos fichiers sous les répertoires suivants, en natif:

  • Vos fichiers sont dans le répertoire OwnCloud sous: data/VotreUsername/files/
  • Vos contacts/calendriers sont dans la base de données OwnCloud
  • Vos photos sont dans vos fichiers mais aussi sous: data/VotreUsername/gallery/

Conclusion

On voit qu’il est plutôt simple de mettre en oeuvre une synchronisation de OwnCloud avec BitTorrent Sync, mais j’ai tout de même eu du mal au niveau de la configuration de btsync à l’aide d’un fichier texte et surtout j’ai rencontré des difficultés à synchroniser à cause du fait que tous les répertoires de OwnCloud sont la propriété de www-data. Si vous synchronisez ces dossiers de manière classique, vos fichiers seront inutilisables avec OwnCloud car ils appartiendront à l’utilisateur « root »… et bon courage pour tout remettre d’applomb après ça ! (même si un chown -R pourrait résoudre tout ça rapidement… enfin, c’est relatif en fonction de la quantité de fichiers que vous avez !)

Bref, je trouvais que synchroniser les fichiers de OwnCloud avec mon ordinateur et mon petit Raspberry Pi s’avérait pratique. Non seulement j’ai une sauvegarde de mes données, mais en plus, je peux rajouter par drag-and-drop des fichiers dans un dossier sur mon ordinateur qui est synchroniser presque en temps réel avec le serveur. Magique !

J’espère que tout cela vous aura plu à vous aussi ! 🙂

Sources & Inspirations

J’ai utilisé les sources suivantes pour la rédaction de ce tutoriel:

Source de l’image d’entête: Pixabay.


A propos de WebManiaK

Possédant un Bachelor en informatique de gestion, je suis actuellement employé comme développeur .NET (Java et PHP à mes heures perdues). Je me passionne pour les technologies informatiques et j'utilise donc des outils comme ce blog pour me tenir à jour des dernières nouveautés et publier des billets techniques sur des sujets peu évoqués sur le Web.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*