Warning: This version is deprecated and no longer works with Crashplan. If you try to install this version, it will try to update itself automatically and "self-destroy", since the latest version requires another native library. This page is only kept for reference purposes.
CrashPlan is a provider of online backups. Their software allows continuous monitoring of folders for changes and backup to multiple destinations, such as external drives, remote machines, and friends' computers.
The CrashPlan engine is implemented in Java and therefore requires OpenJDK to be installed, but it requires also a couple of native libraries (namely, JTux, libffi, and libmd5). We cross-compile those libraries and pack them with a pre-installed version of the client.
This DroboApp has been the result of much online searching. In particular, the patch for JTux was adapted from here. The idea of using the Debian version of libjna comes from here. Libffi as a requirement comes from here, as well as the idea of moving the tmp folder. LibMD5 was introduced in version 3.2, and the instructions came from here.
Make sure you have a cross-compiling virtual machine properly setup.
Note: it is only necessary to install OpenJDK 6 on the VM if you plan to cross-compile JTux and libmd5.
export DEST=/mnt/DroboFS/Shares/DroboApps/crashplan cd ~/code/ apt-get install openjdk-6-jdk wget http://basepath.com/aup/jtux/jtux.tar.gz tar zxf jtux.tar.gz cd jtux/ wget -O makefile.patch http://droboports.com/app-repository/crashplan-3-2/makefile.patch patch < makefile.patch make JTUX=`pwd` cd .. wget ftp://sourceware.org/pub/libffi/libffi-3.0.10.tar.gz tar zxf libffi-3.0.10.tar.gz cd libffi-3.0.10 CFLAGS="$CFLAGS -O3" ./configure --host=arm-none-linux-gnueabi --prefix=$DEST --disable-static make clean && make FFI=`pwd` cd .. wget http://www.twmacinta.com/myjava/fast-md5-2.7.1.zip unzip fast-md5-2.7.1.zip cd fast-md5 $CC $CFLAGS -O3 -shared -I. -I/usr/lib/jvm/java-6-openjdk/include src/lib/arch/linux_x86/MD5.c -o libmd5.so MD5=`pwd` cd .. wget http://ftp.ch.debian.org/debian/pool/main/libj/libjna-java/libjna-java_3.2.7-4_armel.deb mkdir libjna-java_3.2.7-4 dpkg -x libjna-java_3.2.7-4_armel.deb libjna-java_3.2.7-4 LIBJNA=`pwd`/libjna-java_3.2.7-4 wget http://download.crashplan.com/installs/linux/install/CrashPlan/CrashPlan_3.2_Linux.tgz tar zxf CrashPlan_3.2_Linux.tgz cd CrashPlan-install ./install.sh
We pre-install CrashPlan on the VM. This cannot be done as the superuser, otherwise it will change the behavior of the installer. Answer the installer questions as follows:
Would you like to switch users and install as root? (y/n) [y] n Do you accept and agree to be bound by the EULA? (yes/no) y What directory do you wish to install CrashPlan to? [~/crashplan] /mnt/DroboFS/Shares/DroboApps/crashplan /mnt/DroboFS/Shares/DroboApps/crashplan does not exist. Create /mnt/DroboFS/Shares/DroboApps/crashplan? (y/n) [y] y What directory do you wish to store backups in? [/mnt/DroboFS/Shares/DroboApps/crashplan/manifest] /mnt/DroboFS/Shares/DroboApps/crashplan/manifest does not exist. Create /mnt/DroboFS/Shares/DroboApps/crashplan/manifest? (y/n) [y] y Is this correct? (y/n) [y] y
cd $DEST mkdir -p tmp var/run var/log chmod a+rwx tmp cd lib mkdir -p com/sun/jna/linux-arm cp $LIBJNA/usr/lib/jni/libjnidispatch.so com/sun/jna/linux-arm/ jar uf jna-3.2.5.jar com/sun/jna/linux-arm/libjnidispatch.so rm -fr com cd .. mv libjtux.so libjtux386.so cp $JTUX/libjtux.so . cp $FFI/arm-none-linux-gnueabi/.libs/libffi.so.5 . cp $MD5/libmd5.so . wget -O service.sh http://droboports.com/app-repository/crashplan-3-2/service.sh chmod a+x service.sh ~/bin/package.sh
Download the TGZ file below and place it in you DroboApps share. If you do not have SSH access, reboot your Drobo. Otherwise, SSH in and type:
This package does not change the DroboFS configuration in any way. In fact, it ships with no configuration at all. To configure the CrashPlan engine you have to install the software on your machine, and redirect the GUI to connect with the DroboFS. To do this, you need to establish a port forward from your desktop to the Drobo. Something like this should do the trick:
ssh -L 4200:localhost:4243 root@drobo-fs
Short explanation: this forwards any connection attempts to port 4200 on your machine to port 4243 on the Drobo. Once this is done, you have to tell the CrashPlan client to connect to port 4200 instead of the default (4243). To do this on a Mac, edit file "~/Library/Application Support/CrashPlan/ui.properties" and add this line:
Save the file, and start the app. It will ask for the credentials to be used on the Drobo. Once logged in, if the folder selection screen shows the path /mnt/DroboFS/Shares, then congratulations, you have CrashPlan on your Drobo.
More information about configuring a server over SSH can be found here.
Upgrading should pose no problems, since even if the DroboApp is completely deleted CrashPlan will pickup from where it stopped. If the app does not start you can safely clean the "cache" folder. That should solve most, if not all problems.
Please visit the DroboSpace forums to leave your comments, suggestions and feedback.