Install CrashPlan in a Docker Container on Synology NAS
- Tutorial

Those who love Synology devices and CrashPlan's excellent backup service have been tumbling for many years trying to configure its reliable and trouble-free operation in storage. With the advent of Docker at Synology, light appeared at the end of the tunnel.
Prelude
Synology 's large home storage lulls vigilance. They seem reliable and reliable. There is a RAID that protects against bad drives. There is a “Time Backup”, which perfectly saves file versions and makes them easy to recover. However, real paranoid people who honor Nassim Taleb always remember the rare but unpleasant events that can happen to your data, and even to the repository itself:
- Fire or theft. The repository disappears entirely, along with your originals and their backups in the next section;
- Encryption viruses. A living example is the SynoLocker virus, which caused users much suffering. It penetrated through a hole in DSM (the OS from Synology that runs this NAS). He encrypted all the files there and extorted money. Well, everything is as usual.
- Something else.
Based on this, it is clear to every sane paranoid that you need to hide backup copies of all important data (children's photos, for example) away into the clouds. Developers also understand this. DSM has the Cloud Sync package, which allows you to copy your data to remote cloud storage. Currently, many cloud services are supported:
- Amazon, Amazon S3 cloud storage, Amazon S3 compatible cloud services, Baidu Cloud, Box, Dropbox (including Dropbox for Business), Google Cloud Storage, Google Drive (including Google Drive for Work), hicloud S3, HiDrive , hubiC, IBM SoftLayer, Megafon Megadisk, Microsoft OneDrive (including Office 365 and OneDrive for Business), OpenStack Swift, Rackspace compatible cloud services, SFR NAS backup, WebDAV, Yandex Disk.
However, for a reason incomprehensible to me and many users, the cloud service specially sharpened for backup is not supported - CrashPlan . He is loved for his reliability, unlimited and affordable rates . Therefore, for a long time, the community has been screwing this service to Synology
Steps to Save the World and Launch CrashPlan in a Docker Container on Synology
I had to raise my head and look around. By this time, Docker appeared on Synology ( not on all versions ) and now it is possible to launch CrashPlan in a Docker container, where it will successfully live and update itself. Its installation and configuration are not quite obvious. I hope that the short instruction below will help you fill a little less cones than me. It is more likely for dummies, because professional linux administrators have already set everything up at home for a long time.
So, the following sequence of actions will allow you to launch and manage your CrashPlan client in a Docker container that runs on Synology:
1. Create a new shared folder on our storage. For example: "crashplan-symlink". It is this folder that CrashPlan will see from the container. It alone must contain all the data that CrashPlan will process. You can transfer all the important data directly to it, but it’s better to create there subfolders “music-symlink”, “photo-symlink”, “homes-symlink” and define them as symlinks to real storage folders. This also works.
2. Create a new file /etc/rc.local on the storage and write commands to mount symlinks from these folders (photos, videos, etc.) into subfolders in our new shared folder. The file “rc.local” must be used because otherwise symlinks do not survive rebooting the repository. If you have any difficulties, see below “Convenient file management on the repository”. Here is what I have in this file now:
mount --bind /volume1/bittorrentsync /volume1/crashplan-symlink/bittorrentsync-symlink
mount --bind /volume1/homes /volume1/crashplan-symlink/homes-symlink
mount --bind /volume1/music /volume1/crashplan-symlink/music-symlink
mount --bind /volume1/photo /volume1/crashplan-symlink/photo-symlink
mount --bind /volume1/public /volume1/crashplan-symlink/public-symlink
3. We put the Docker package on Synology. Next, run it after installation, look for the crashplan image in the registry (“jrcs / crashplan” - hub.docker.com/r/jrcs/crashplan ) and also install it.
4. During the initial configuration of the jrcs / crashplan container, it is important to remember the proposed port mapping (if we choose auto-configuration) or manually set the mapping of the two ports necessary for CrashPlan to operate and manage. For example, like this: assign port “4243” to “32774”, and “4242” to “32773”. We open additional settings of the container and there we attach our shared folder “crashplan-symlink” created in the first step. We assign the value "/ storage" to it, so it will be available from the docker container.
5. We reload the storage. We make sure that our symlinks in the crashplan-symlink folder survived and work. Run the jrcs / crashplan package in docker. If everything is correct, then at this moment we have a running and working docker container inside which the CrashPlan client has already been successfully launched. However, the client itself is not yet configured. He needs to say what and where to get and where to copy, and for this you need to connect to the client through a special CrashPlan application (there is both for Win and Linux). However, the application will not be able to simply connect to the client, everything is very safe there, so the quest continues.
6. In order to be able to connect to the CrashPlan client, you need to extract the line containing the secret key from the special file in the docker container. To do this, we connect to the store via SSH (for example, PuTTY client). We find the file ".ui_info". It lies somewhere along this path "/var/packages/Docker/target/docker/volumes/..../_data/id" (instead of "...." you will have to select a specific folder either by selection method or by focusing on creation date, there each folder is a separate ID of an existing container). The search file has a text string with a secret (first comes the port address, then the secret we need, then the ip address). So in the example below, we need to take the line: "05bv99x3-36f8-43e6-92c7-4b8776f2edb2".
4243,05bv99x3-36f8-43e6-92c7-4b8776f2edb2,0.0.0.0
7. On the local computer we install control software from CrashPlan . Then we search for the file “.ui_info” (for Windows it lies in the folder “C: \ ProgramData \ CrashPlan”) and edit it using the following rules:
- At the first position in the line is the port that is set in the container “jrcs / crashplan” in compliance with port "4243". So, if the settings were specified as in step 4, then write “32774”.
- Next comes the secret key that we pulled out of the container in step 6.
- The last value is the ip address of our store where the CrashPlan client is running and running, i.e. which we want to manage. If QuickConnect is running on Synology, then in its settings you can see the external storage IP-address (“Control Panel” - “External Access”).
As a result, the line in the local .ui_info file should look something like this:
32774,05bv99x3-36f8-43e6-92c7-4b8776f2edb2,192.168.1.100
8. If everything is done correctly, then when the CrashPlan management software is launched on the local computer, it accesses the specified ip address to the specified storage port (in our example, 192.168.1.100 to port 32774). The repository forwards requests to port 4243 to the jrcs / crashplan container, where the CrashPlan headless client runs. If the secret key matches, then everything is OK and the connection is made.
9. In the application, we should see the “storage" folder inside which there will be previously created symlink subfolders, and in them all our data. We enter our license, select the necessary data and begin their backup to the CrashPlan cloud. By the way, CrashPlan has some good mobile apps that let you follow this process.

CrashPlan Image Update
Sometimes JrCs publishes a new version of the image. This can be found on the GitHub project page and is usually related to fixing bugs or improving the image . So, when switching from version 4.7 to 4.8, automatic updating inside the container did not work and a new version of the image was released. In this case, the sequence of actions is as follows:
1. Delete both the current CrashPlan container and the previously downloaded jrcs / crashplan image.
2. Install everything again. Both the image and the container according to the instructions above.
3. When connecting to the service, the CrashPlan client must accept the “Adopt” prompt. In this case, after checking the files, only new and changed data will be sent to the CrashPlan server. If “Adopt” is not used, then all information will be resent. With a large amount of information stored, this can take a lot of time.
Useful Tips
1. During the initial installation and when reinstalling the CrashPlan client on the repository, its GUID changes. If you already have a backup copy of the data on CrashPlan servers, then in order to attach to an existing backup, you need to use the “ADOPT” function (such an offer will appear in the client application after a successful connection). Otherwise, the creation of backups will begin anew and with large volumes it takes a lot of time.
2. Convenient file management in storage. The easiest way to manage files on Synology is through the Midnight Commander; it can be put in storage. To do this, you need:
- In the "Package Center" go to "Settings" and add a new source of packages. Title: "synocommunity". Location: " packages.synocommunity.com".
- Go to the “Community” category in the “Package Center”, find “Midnight Commander” there and install it.
- Download and install PuTTY .
- Enable SSH on Synology (“Control Panel” - “Terminal and SNMP” - “Enable SSH Service”).
- Get the IP address of your storage. If QuickConnect is running on Synology, then in its settings you can see the external ip-address of the storage (“Control Panel” - “External Access”).
- Log in to the repository via PuTTY by specifying the username 'admin' and the current password. If you need 'root' rights and extended access to the file system (our case), then you need to enter the command 'sudo -i' in the terminal and repeat the password ( instructions from Synology ).
- Since we previously installed the Midnight Commander package, the 'mc' command in the terminal will launch it. As a result, we get access to all files on the device.
Useful links: