Setup CrashPlan in a Docker Container on Synology

CrashPlan is very popular for backing up NAS solutions. This post outlines the process for installing and configuring CrashPlan on a NAS in a Docker container and controlling it remotely from a CrashPlan Client.

The whole process is made easy due to the Docker technology however some tinkering is neccessary in order to successfully backup large amount of files and manage CrashPlan remotely. Once it’s setup, it is very easy to backup several TB of data, even from other servers.

For a guide to install Crashplan as a regular Synology Package, follow this link.

I’m totalling around 4TB of data of CrashPlan data.

My backup scenario is the following:

CrashPlan service is running on a NAS. 
Dropbox - A sync is downloading all my Dropbox content and keeps it instantly synced.
Pictures & Videos - I use PhotoSync to sync mobile photos to the NAS whenever they are in range of the home WIFI.
TimeMachine - I run a TimeMachine service on a separate NAS and mount the folders remotely so they can be backed up by CrashPlan on this NAS.

Download a crashplan image from the Docker Hub

I’ve chosen this release: https://github.com/JrCs/docker-crashplan

Create and start container

Since we are mapping volumes below the docker path, we need to do this outside of the Synology UI using SSH.

Login to your Synology via SSH and sudo up.

sudo -i

Enter the docker run command

docker run -d --name jrcs-crashplan \
--restart=unless-stopped \
-p 4242:4242 \
-p 4243:4243 \
-v /volume4/docker/crashplan/data:/var/crashplan \
-v /volume2:/volume2 \
-v /volume3:/volume3 \
-v /volume4:/volume4 \
-e TZ=Europe/Stockholm \

I always prefer to keep the configuration outside of the container to easily be able to upgrade in the future and also to be able to backup easily. Note my local path (/volume4/docker/crashplan/data) where “docker” is a shared folder.

Container is visible in the Synology UI

Overview of container up and running

Locate the server .ui_info file

This configuration file is located in the id/ folder.

Copy .ui_info

The .ui_info file contains the port number and the key which are needed to be entered into your local .ui_info file.

cat .ui_info

The local CrashPlan client read the settings from a local .ui_info file.

On my mac, it is located at: /Library/Application Support/CrashPlan

Local .ui_info file

Paste in the port number and the key. Make sure the ip address points to your docker host.

Save and quit and then fire up the CrashPlan client.

Set Max Heap memory

Depending on how many files you need to scan and backup, you made need to increase the Java Max Heap. If the CrashPlan unexpectedly crashes when running, the Heap is most likely the culprit. You usually notice this when CrashPlan notices you of Backup outages.

I’ve set the max heap size to 3GB

Sign in to CrashPlan

Either create a new account or login using an existing account. You may adopt an earlier backup.

Adopt a previous computer

Select previous computer name

Data Key Required

You must enter the correct encryption key. Earlier when entering an invalid key, the whole previous backups were lost, hopefully they have fixed that issue.

Adoption Complete!

After successfully having entered the encryption key, Crashplan will start to synchronize with existing backups.

Disable CrashPlanService on OSX

When you install CrashPlan on your local machine, the setup will install both a client and a server. To disable the unused service on OSX, follow these steps.

  1. See if the service is running:
ps aux | grep CrashPlanService
  1. Disable service:
sudo launchctl unload /Library/LaunchDaemons/com.crashplan.engine.plist
  1. Verify the service is not running anymore:
ps aux | grep CrashPlanService
  1. Delete the launch control plist so the CrashPlanService doesn’t reload the next time OSX is restarted:
sudo rm /Library/LaunchDaemons/com.crashplan.engine.plist

Backing up mounted remote folders

I have a TimeMachine service running on a second NAS which is used by some of our laptops. In order to include this folder in my CrashPlan backups, I mount the remote folder locally and include it in my CrashPlan schedule.