Archive

You are currently browsing the Jose Antonio Cely Saidiza blog archives for noviembre, -0001.

Nov

30

Montando Dropbox en FreeBSD 9.1

By Jose Antonio Cely Saidiza

 

A la fecha Dropbox no tiene cliente para *BSD, aunque muy solicitado, no hay fechas de RELEASE.
Buscando alternativas en las que no perdiera la sensación de tiempo real con Dropbox en mi Gnome en FreeBSD 9.1, y pensando en no tener que ejecutar comandos constantes para sincronizar, e inspirado en algunas búsquedas; encontré una técnica para que funcione de la manera más transparente Dropbpx en mi Gnome. Supongo con un par de cambios aplica a OpenBSD.

La técnica guerrillera consiste en instalar una máquina virtual (con VirtualBOX, KVM, etc) o usar un computador viejo, y en este montar un Linux y Dropbox, a este combo lo llamaré “servidor Dropbox” (Para Linux si hay daemon oficial para Dropbox). Entonces en FreeBSD solo es montar la partición remota.

Si eres usuario avanzado BSD y lees esto, tal vez te sientas engañado el título del artículo, mis disculpas :)

Hay varias formas de montar la partición remota (NFS, SMB, FUSE, etc); en este caso opté por usar SSHFS (fuse), pues es la más “limpia”, por decirlo así, de configurar el pequeño “servidor” Dropbox, solo se instala el sistema base, el servicio ssh y el sistema Dropbox en modo daemon, lo cual es muy “light”. Además se puede montar como usuario, nada de editar el fstab o cosas similares.
En mi caso el servidor virtualizado es un i386, con 128Mb RAM, y Debian wheezy y corre como perfectamente bien.
Entonces, primero explicaré como instalar el servidor Dropbox, y luego como configurar FreeBSD para que monte la partición.

Instalando Dropbox en un servidor Linux sin entorno gráfico:

Para el servidor, sirve cualquier Debian básico, entorno mínimo, con sshd. Con el sistema básico, solo hay que seguir las instrucciones para la instalación en la página oficial de www.dropbox.com, con unos pequeños ajustes.

TODOS estos pasos se ejecutan como usuario (en mi caso josecely), ajustenlo a su usuario y por favor… no usen el root para estos menesteres!

Descargamos el instalador de Dropbox de https://www.dropbox.com/install2.

En mi caso para el “servidor Dropbox” virtualicé una máquina de 32 bit, por lo tanto descargue

$cd ~ && wget -O – “https://www.dropbox.com/download?plat=lnx.x86” > dropbox.tar

Descomprimo el instalador:

$tar xf dropbox.tar

Eso es todo, al descomprimir crea una carpeta oculta llamada

~/.dropbox-dist/

En esta carpeta esta el ejecutable y archivos de configuración, no hay que compilar, en hora buena!

Ahora a configurar con su cuenta de Dropbox,. Para esto ejecuto el demonio Dropbox por primera vez manualmente, para que me cree el vínculo temporal de configuración y autorización del servdor.

$~/.dropbox-dist/dropboxd

El comando me informa:

Este cliente no está vinculado a una cuenta…
Visita https://www.dropbox.com/cli_link?host_id=xxxxxxxxxxxxxxxxxxxxxxxxxxe para vincular este equipo.

Tal cual como lo dice, copie y pegué el vínculo en un navegador, ingresé la contraseña de mi cuenta en Dropbox

Dropbox URL

De esta manera se autorizó la cuenta para el sevidor “El cliente se vinculó correctamente. Te damos la bienvenida, Jose Antonio.”

Confirmación autorización

Ahora descargo el script CLI oficial de Dropbox, una herramienta muy útil para administrar Dropbox desde el shell.

$wget https://www.dropbox.com/download?dl=packages/dropbox.py

Le asigno permisos de ejecución:

$chmod +x dropbox.py

Lo ejecuto para confirmar que funciona correctamente:

$./dropbox.py
Dropbox command-line interface

commands:

Note: use dropbox help <command> to view usage for a specific command.

status get current status of the dropboxd
help provide help
puburl get public url of a file in your dropbox
stop stop dropboxd
running return whether dropbox is running
start start dropboxd
filestatus get current sync status of one or more files
ls list directory contents with current sync status
autostart automatically start dropbox at login
exclude ignores/excludes a directory from syncing
lansync enables or disables LAN sync
Por ejemplo para arrancarlo ejecuto:

$~/dropbox.py start
Starting Dropbox…Done!

Como ya esta autorizada la máquina y tenemos un útil scrip CLI, lo siguiente es configurar el “servidor” para que arranque siempre Dropbox como el usuario. (No olvidar ajustarlo a su usuario). De las cincuenta mil formas de hacerlo, lo agregaremos al arranque CRON:

$crontab -e -u josecely

Agregamos la linea

@reboot ~/dropbox.py start

Reiniciamos el servidor, y comprobamos que arrancó el demonio Dropbox bajo el respectivo usuario, esto lo podemos comprobar con:

$ps aux | grep dropbox
josecely 2900 37.0 15.4 267652 56948 ? Ssl 01:27 1:18 /home/josecely/.dropbox-dist/dropbox

Montando la carpeta remota Dropbox en FreeBSD

Secure SHell FileSystem (SSHFS) es un sistema de archivos para FreeBSD, Linux y otros. Permite montar de modo seguro (sobre ssh) un directorio remoto, como si fuera local, además del lado del servidor, no necesita instalar ni configurar nada especial, el módulo FUSE solo se necesita en el cliente que va a montar el directorio remoto. El servidor remoto solo necesita tener el servicio sshd corriendo.
Los siguientes comandos y configuraciones se probaron en FreeBSD 9.1.

Como usuario root, en la máquina FreeBSD agregamos el package sshfs:

#pkg_add -r fusefs-sshfs

Editamos el archivo /etc/sysctl.conf, agredando la línea:

vfs.usermount=1

Editamos el archivo /etc/rc.conf, agredando la línea:

fusefs_enable=”YES”

Ahora agregamos el usuario que montará la partición al grupo operator, para que quede habilitado para montar y desmontar (No olvidar ajustarlo a su usuario):

#pw usermod josecely -G operator,wheel

Sería prudente, un reinicio:
# reboot

Una vez reiniciado, como usuario en la máquina FreeBSD, creamos el directorio para montar la carpeta Dropbox:

$ cd ~
$mkdir Dropbox

Y viene la magia!, montamos la carpeta remota del “servidor” Dropbox.

$ sshfs -o idmap=user josecely@10.0.0.4:/home/josecely/Dropbox Dropbox

Nótese el “-o idmap=user”, es necesario para evitar errores del tipo “Bad file descriptor”.

Ingresamos la contraseña del usuario remoto, y listo, la carpeta remota se ve como local, y es transparente para nuestro sistema operativo!

Gnome en freebsd con Dropbox
Podemos automatizar aun más, por ejemplo creando un par de llaves para que no pida contraseña, y pegando el comando de montaje al arranque de Gnome.

Dudas, comentarios, sugerencias?

Sigueme en twitter @josecely

——

Links

http://www.freebsd.org/
http://forums.freebsd.org/showthread.php?t=36449