Saturday, March 19, 2011

HOW-TO: Using crashplan with Synology NAS


This guide is intended for Atom based Synology NAS boxes. In the comments section you will find comments from users who has attempted to get it working on an ARM based as well. It appears that Java / JVM is the core issue, but it should be possible to get it working at ARM based NAS boxes as well.
The guide has been written based on a DS710+ and with DSM 3.1 and Linux headless client version 3.0.3. If you are using another version of the headless client line numbers may differ.... I have also tried it out on top of a DS1411+ DiskStation without any problems.
  1. Download the latest release of the Linux Crashplan Client from Crashplan website along with the client for your operating system if you use another operating system then Linux
  2. Upload the Linux client to the NAS and login to your NAS as root using SSH. Default password is synopass or the same password as your admin account. (if you are using windows you should download PuTTY or another SSH client for this)
  3. You will need to install a few extra packages at your NAS from the command line:
    ipkg update
    ipkg install nano
    ipkg install cpio
    ipkg install bash
    ipkg install coreutils
    You need to installe ipkg in order to do so. If haven't done so already you can follow this guide:
    http://forum.synology.com/wiki/index.php/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc#What_is_a_Synology_Server
  4. Move the uploaded client package to /opt
  5. Unpack the crashplan client (tar -xvf name_of_downloaded_archive_file)
  6. Modify the install.sh script in the newly created directory to use bash as your shell. The first line in the script should be replaced with this one:
    #!/opt/bin/bash
  7. Install the crashplan using the options below. When asked about java allow it to be downloaded:
  8. CrashPlan will install to: /opt/crashplan
    And put links to binaries in: /opt/bin
    And store datas in: /opt/crashplan/manifest
    Your init.d dir is: /etc/init.d
    Your current runlevel directory is: /usr/syno/etc/rc.d
  9. Modify the installed crashplan client configuration:
    Modify the /opt/crashplan/bin/run.conf by adding  -Djava.net.preferIPv4Stack=true as an additional option at the end of the two confiurations (I guess that you only need to do this for the SRV_JAVA_OPTS)
  10. remove commandline options for the ps process in the /opt/crashplan/bin/CrashPlanEngine file since ps doesnt accept parameters at the synology NAS. (sed -i 's/ps -eo /ps /'  CrashPlanEngine;sed -i 's/ps -p /ps /'  CrashPlanEngine)
  11. Modify the /usr/syno/etc/rc.d/S99crashplan file line 1 to : #!/opt/bin/bash
  12. Modify the /opt/crashplan/bin/CrashPlanEngine file line 1 to: #!/opt/bin/bash
  13. Modify the /opt/crashplan/bin/CrashPlanEngine file line 14 with a full path for nice to: /opt/bin/nice
  14. Start your crashplan service /usr/syno/etc/rc.d/S99crashplan start
  15. Validate that your service is running: netstat -an | grep ':424.' should give to listeners:
    tcp        0      0 0.0.0.0:4242            0.0.0.0:*               LISTEN  
    tcp        0      0 127.0.0.1:4243          0.0.0.0:*               LISTEN
  16. If your crashplan engine doesn't start up automatically you can add it to rc.local which works. If you edit /etc/rc.local and add "/usr/syno/etc/rc.d/S99crashplan start" without quotes, it seems to load after restart. (Thanks to "kungfu" for this comment / hint)
  17. Install your desktop client and point it towards the headless service you just installed. Follow the instructions in the crashplan website for this (http://support.crashplan.com/doku.php/how_to/configure_a_headless_client)
    Some has reported that using a 64 bit desktop client against a 32 bit headleass client doesn't work. You should go with the 32 Desktop client as well if you are having trouble connecting to the server.
TIP: If you are using mac the ui.properties are located here: ~/Library/Application\ Support/CrashPlan/ui.properties

Congratiolations! You are done :-)