If you've followed my post about backing up your home file server and how I backup my own server, then you'll know I'm a big fan of CrashPlan.  My only complain is that CrashPlan was built with the assumption that the GUI would reside on the same machine as the backup engine.  However, with a little SSH magic, you can easily overcome this limitation.

For the uninitiated, CrashPlan comprises of two components:

  • CrashPlan Engine: This is always running from the moment you install CrashPlan and continues to run even if you log out. It is responsible for the actual backup functions
  • CrashPlan Desktop: This runs the nice GUI desktop application that helps you configure and manage the CrashPlan Engine.

UPDATE!  -  I've found a way to remotely manage CrashPlan without the need for SSH port forwarding.  See my new post here.

Here at Liquidstate, we have a central file server that runs Linux.  Naturally, it doesn't have X Windows installed and is operated as a headless server - much like the type you would deploy to a data centre in a corporate environment.  I have a PC running Windows 7 that I use for any serious work and an iPad for casual web browsing etc.  In this post, I'll show you how you can use the CrashPlan Desktop running on Windows 7 to manage the CrashPlan Engine running on a separate Linux server.

Installation

Before we begin, I'll assume that you've followed my other post that covers installing CrashPlan on a headless Linux Server.  I'll also assume that you've downloaded and installed the CrashPlan software on your Windows 7 PC.  If you haven't, then why not go do that now.

Configure CrashPlan GUI to access a remote CrashPlan Engine

We're now going to reconfigure the CrashPlan Desktop installation on our Windows PC to access a different port which we'll then redirect to the CrashPlan Engine instance running on our Linux Server.  Annoyingly, if you also have a CrashPlan Engine instance running on your Windows PC then you'll need to add/remove (or comment/uncomment) this line each time you want to switch between them.  Note that the CrashPlan Engine is unaffected by changes to this text file - it will happily trundle along in the background, backing up files from your Windows PC.

Open the folder where you installed CrashPlan on your Windows PC. By default, this is in C:\Program Files\CrashPlan. Inside, you'll find a folder called "conf" and inside there, a file called "ui.properties". Open this file using a decent text editor like Notepad++ and add the following line:
servicePort=4200

You might find that Notepad doesn't show line breaks properly.  You may also notice that there's already a line similar to the above that starts with '#'.  This means that line is commented out, so you have the choice of changing that line and removing the '#' (or just follow these instructions and add it at the bottom).

For reference, here is the content of my "ui.properties" file:

#Fri Dec 09 09:50:22 CST 2005
#serviceHost=127.0.0.1
servicePort=4200  
#pollerPeriod=1000 # 1 second
#connectRetryDelay=10000 # 10 seconds
#connectRetryAttempts=3
#showWelcome=true

#font.small=
#font.default=
#font.title=
#font.message.header=
#font.message.body=
#font.tab=

SSH Tunnelling

If you're running a Linux server, I expect you'll already know how to use an SSH client like Putty to open a Linux command shell from a remote Windows PC.  However, SSH tunneling might be new to you.  An SSH tunnel allows you to forward a specified local TCP port to a port on the remote machine.  In this example, we'll create an SSH tunnel that fowards any traffic to port of our choosing on our Windows PC to port 4243 on our Linux server (the port that CrashPlan Engine uses to communicate).

Creating an SSH tunnel using Putty

Download and install Putty if you don't already have it installed. Open the program and:

  • Enter the Hostname (or IP address) of your Linux server.
  • Leave the Port field set to the default value of 22.
  • Leave the Connection Type set to the default value of "SSH".
  • In the "Saved Sessions" field, type a name for this session, like "Crashplan".
  • Hit the "Save" button.
  • Your session name should now appear in the list for future use.

Now,

  • In the left-hand pane, expand the "Connection" tab, followed by the "SSH" tab, and then select "Tunnels".
  • Below where it says "Add new forwarded port:", set the "Source port" field to 4200 and the "Destination" to "localhost:4243".
  • You can leave the default settings "Local" and "Auto" as-is.
  • Hit the "Add" button to the right of the "Source port" field.
  • The list of "Forward ports" should now include a line that reads "L4200   localhost:4243"
  • To save the changes, in the left-hand pane, select the "Session" tab; ensure that the Host Name, Port, and "Saved Sessions" fields are how you left them; and hit the "Save" button.

Open the tunnel

  • Ensure that you're looking at the "Session" tab by selecting it in the left-hand pane.
  • Ensure that the "Crashplan" session we saved earlier is loaded by selecting it from the list and hitting "Load".
  • Hit the "Open" button at the bottom right of the window.
  • An Linux command shell will open, asking for your username and password.
  • After you've entered these, it will look and act like a normal remote session, but hidden behind the scenes is our SSH tunnel.

Connect to the remote CrashPlan Engine

If you've already opened your SSH Tunnel, you should be able to launch the CrashPlan Desktop application on your Windows PC and it will connect through to the CrashPlan Engine instance running on your Linux PC.  If you get a connection error, make sure that you have edited the "ui.properties" file correctly;  that you entered the right port numbers in Putty; and that you have an open Putty session running in the background.