Remotely Managing CrashPlan

If you are running the CrashPlan backup service, while it does support cross-platform deployment it is tricky to configure when the UI is not running on the system you are configuring. Since upgrading to version 4.7, my original script for switching hosts had to get updated from reading ui.properties to using the new format .ui_info. Since this works pretty seamlessly for me on multiple hosts, I figured it was worth sharing here.

These instructions assume you are running CrashPlan on a remote UNIX based server like Ubuntu or Mac OS. For my configuration, this script manages CrashPlan on a headless Ubuntu server as well as on a Drobo 5N NAS. You can download the script from the GitHub repository at https://github.com/esarjeant/CrashPlanExchanger.

To configure the CrashPlan Exchanger script:

  1. Rename your existing .ui_info to .ui_info_default
  2. Create additional configuration files for alternate hosts as .ui_info_[host-or-IP].
  3. Update the alternate configuration files to use different ports (first setting in the file).
  4. Launch the script with alternate systems based on filename.

The location of the .ui_info configuration varies depending on your operating system, there is some info about this on the CrashPlan site. For my configuration, on Mac OS X it can be found in /Library/Application Support/CrashPlan/conf/ and on Linux it’s in /usr/local/crashplan/conf. This is the location where multiple copies of this file should be made, one for each environment.

If the file .ui_info_10.0.0.10 is added to /Library/Application Support/CrashPlan/conf/, a typical invocation would look like so:

crashplan 10.0.0.10

This reads the file .ui_info_10.0.0.10 to setup an SSH tunnel to 10.0.0.10 and forwards that to the port defined inside the file. In this configuration, it is then possible to have multiple ports running for more than one CrashPlan client.

If you invoke without parameters:

crashplan

Then the .ui_info_default settings are used and no tunnel is negotiated as it expects the local CrashPlan instance to respond.

You will very likely want to have SSH key based authentication configured for the hosts in question, it is somewhat inconvenient to have to logon interactively every time. This is a separate process, but essentially take your public key from ~/.ssh/id_rsa.pub and append the .ssh/authorized_keys on the target system. Once this is in place, you should be able to ssh to the remote system without the need for entering a password; it will trust your public key instead.

For installation of the crashplan script, I have placed mine in /usr/local/bin/ but you may choose to install this anywhere that is in your PATH.