[HowTo] Installer DropBox sur un serveur Linux en CLI

 

Fidèle utilisateur de DropBox depuis plusieurs années je me suis demandé comment l’installer en ligne de commande sur mon serveur Debian (squeeze).

Imaginez les avantages, vous me direz bien sur qu’il existe d’autres moyen de synchroniser/partager des fichier. Mais l’intérêt de DropBox est la simplicité et son emploie par de nombreuse personnes a ce jour.

Préparation de l’installation

Prérequis pour cette installation:

  • screen
  • lynx
  • python 2.6
  • wget
  • Librairie C > 2.4
aptitude install screen lynx wget python glibc

Obtenir la dernière version stable du tar pour votre architecture

  • x86 pour les architectures 32bits
  • x86_64 pour les architectures 64bits
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86_64"

Choisir un utilisateur pour lancer DropBox, de préférence sans droits root

Par exemple epheo, pour moi

Connectez vous et allez dans son Home

su epheo
cd ~/

Installation

Vérifiez et de zippez l’archive dans le Home

tar -tzf dropbox.tar.gz && tar -xvzf dropbox.tar.gz

Nous avons donc le client DropBox dans ~/.dropbox-dist/

Lancez le dans un screen

screen
~/.dropbox-dist/dropboxd

Ici premier problème, il nous demande de se connecter sur une page Web afin de se connecter.

Copiez l’adresse indiquée,

Sortez du screen avec ctrl+A+D

Accédez a un page Web quelconque via le navigateur CLI Lynx

lynx http://lyon-roller.com

Allez ensuite a l’url copiée précédemment avec maj+G (pour Go) et collez l’url

Connectez vous une première fois avec vos identifiants

Puis reconfirmez votre mot de passe une seconde fois (un peu plus bas dans la page)

Quittez lynx (maj+Q)

récupérez ensuite votre screen

screen -r

Votre compte doit être normalement lié avec votre machine et les fichiers commencent (enfin) a se synchroniser

:)

Nous allons maintenant télécharger un script python permettant de démarrer, stopper et connaître l’état de DropBox plus aisément.

  1. Créer un dossier bin pour accueillir le script
  2. Télécharger le script
  3. Lui donner les droits
  4. Vérifier le status de DropBox
mkdir -p ~/bin
wget -O ~/bin/dropbox.py"http://www.dropbox.com/download?dl=packages/dropbox.py"
chmod 755 ~/bin/dropbox.py
~/bin/dropbox.py status

Si tout va bien, il devrais vous retourner un message du genre:

Téléchargement de 6 170 fichiers (0,3 Ko/seconde, 69 jours restants)

(Oui, c’est lent…)

Redémarrez maintenant DropBox a l’aide du script python afin de vérifier que tout fonctionne correctement.

~/bin/dropbox.py stop
~/bin/dropbox.py start

Lancer DropBox au démarrage du système

Pour Debian, le mieux et de créer un script init.d

Voici un exemple de script, remplacez user par votre utilisateur dans la variable DROPBOX_USERS

#!/bin/sh
# Script de lancement de DropBox
DROPBOX_USERS="user"

DAEMON=.dropbox-dist/dropbox

start() {
    echo "Démarrage de dropbox..."
    for dbuser in $DROPBOX_USERS; do
        HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
        if [ -x $HOMEDIR/$DAEMON ]; then
            HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
        fi
    done
}

stop() {
    echo "Arrêt de dropbox..."
    for dbuser in $DROPBOX_USERS; do
        HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
        if [ -x $HOMEDIR/$DAEMON ]; then
            start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
        fi
    done
}

status() {
    for dbuser in $DROPBOX_USERS; do
        dbpid=`pgrep -u $dbuser dropbox`
        if [ -z $dbpid ] ; then
            echo "dropboxd n'est pas lancé pour USER $dbuser: "
        else
            echo "dropboxd est lancé pour l'utilisateur USER $dbuser: (pid $dbpid)"
        fi
    done
}

case "$1" in

    start)
        start
        ;;

    stop)
        stop
        ;;

    restart|reload|force-reload)
        stop
        start
        ;;

    status)
        status
        ;;

    *)
        echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
        exit 1

esac

exit 0

Creer un script dans /etc/init.d/

nano /etc/init.d/dropbox

Collez le script ci-dessus après modification

Enregistrez et fermez avec ctrl+x

Pour les autres distrib, une solution générale un peu plus “crade” consisterai a ajouter une crontab.

crontab -e
@reboot $HOME/.dropbox-dist/dropboxd

Post-installation

Maintenant que tout fonctionne il peu être intéressant de déplacer le dossier par défaut de DropBox

la solution qui m’a paru la plus simple et de créer un lien symbolique

  1. Stoppez DropBox
  2. Déplacez le dossier
  3. Créez un lien symbolique vers son ancien emplacement (home)
  4. Redémarrez DropBox
~/bin/dropbox.py stop
mv ~/Dropbox /votre/nouveau/dossier
ln -s /votre/nouveau/dossier/Dropbox ~/
~/bin/dropbox.py start

Liste des problèmes et améliorations envisageable

Vous ne pouvez/voulez pas installer lynx

-> Créez un tunnel SSH SOCKS a partir d’un autre PC vers votre serveur

ssh -D 9999 nom_dutilisateur@ipduserveur

Activez le proxy SOCKS dans votre navigateur avec host= localhost et port = 9999

Puis inscrivez vous normalement

DropBox envoie sans arrêt des paquets sur le port 17500

(et ça me saoule, mon pare-feux me fait la gueule)

Oui, DropBox synchronise aussi en LAN via le port 17500.

Et bien entendu, pas d’option à décocher dans un fichier de conf, ce serait trop beau.

En revanche, un patch python oui :)

Il faut commencer par installer pyDropboxValues.py avec dropbox.py (dans le dossier bin)

wget -O ~/bin/pyDropboxValues.py "http://dl.dropbox.com/u/340607/pyDropboxValues.py"
chmod +x ~/bin/pyDropboxValues.py && ~/bin/pyDropboxValues.py

Il devrait maintenant afficher une liste de config de DropBox. C’est normal, on passe a la suite:

Dans l’ordre:

  1. Télécharger le patch dans le dossier DropBox
  2. Stopper DropBox
  3. Backup er pyDropboxValues.py
  4. Appliquer le correctif
  5. Relancer DropBox
wget -O ~/bin/dropbox_set_lansync.py "http://dl.dropbox.com/u/340607/dropbox_set_lansync.py"
~/bin/dropbox.py stop
cp ~/bin/pyDropboxValues.py ~/bin/pyDropboxValues.py.bak
chmod +x ~/bin/dropbox_set_lansync.py && ~/bin/dropbox_set_lansync.py off
~/bin/dropbox.py start

Et c’est tout bon

This entry was posted in Linux and tagged , , , , , , . Bookmark the permalink.

3 Responses to [HowTo] Installer DropBox sur un serveur Linux en CLI

  1. Clotaire says:

    Il ya plus simple que de passer par lynx : il suffit de recopier dans n’importe qu’elle navigateur l’url (celui de l’ordinateur avec lequel on se connecte en parallèle de putty) et de là on saisi ses mots de passe. C’est un peu plus ergonomique que lynx.

  2. guillaume says:

    J’aurais éventuellement quelques questions :

    – Lorsque je ferme putty dropbox se ferme également. il y a t’il une raison à ça ? comment faire afin d’éviter ce problème.

    – Je ne peux pas vérifier le “status” autrement qu’avec l’utilisateur créer et en root sa nous informe que la commande est introuvable. y a t’il une raison ?

    – J’aimerais faire pointer samba vers le dossier dropbox. si j’ai bien compris il faut créer un lien pour chaque dossier de dropbox ou il serait pas plus simple de faire pointer le smb.conf vers le dossier Dropbox ?

    merci pour vos réponses.

    Cordialement,

    Guillaume

  3. guillaume says:

    Je rectifie : Dropbox se coupe au bout d’un moment. j’ai oublier de faire quelque chose ?

Leave a Reply

Your email address will not be published. Required fields are marked *