Git Product home page Git Product logo

docker-crashplan's Introduction

docker-crashplan

Lightweight (169MB) Crashplan docker container.

Features:

  • Automatic version upgrade
  • Access to all configuration files
  • Access to log files

Quick Start

  • Launch the crashplan container
docker run -d \
  --name crashplan \
  -h $HOSTNAME \
  -e TZ="${TZ:-$(cat /etc/timezone 2>/dev/null)}" \
  --publish 4242:4242 --publish 4243:4243 \
  --volume /srv/crashplan/data:/var/crashplan \
  --volume /srv/crashplan/storage:/storage \
  jrcs/crashplan:latest

Access the GUI from your desktop crashplan application

  • Make a backup of the current .ui_info file of your desktop machine locate:
    • On Linux: /var/crashplan/data/id/.ui_info
    • On OSX: /Library/Application Support/CrashPlan/.ui_info
    • On Windows: C:\ProgramData\CrashPlan\.ui_info
  • Replace your .ui_info file of your desktop machine with the one of the crashplan container: /srv/crashplan/data/id/.ui_info.
  • In the .ui_info file of your desktop machine, replace the IP (should be 0.0.0.0 or 127.0.0.1) with the IP of your docker host.
  • Make sure you can connect to ports 4242 and 4243 on your docker host.
  • Start your local CrashPlan GUI.

Configuration

Volumes:

  • /var/crashplan: where the configuration files and logs are store
  • /storage: where backup files are store

Optional environment variables:

  • PUBLIC_IPand PUBLIC_PORT: force the public ip address and port to use.
  • TZ: time zone to use in the crashplan logs. Use /etc/timezone string values, e.g. "Europe/Paris"

docker-crashplan's People

Contributors

cfstras avatar ghyde avatar jrcs avatar raulr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-crashplan's Issues

Hibernation synology

Hi,

When i run this in synology the system is not hibernating. Is there anyway to make the hibernation work?

Crashplan continuously upgrading

Hello Yves!

First, one big thank you for this container!
Second, mine seems that want to upgrade all the time:

I 05/20/16 08:13AM CrashPlan started, version 4.6.0, GUID 719588200052335860
I 05/20/16 08:13AM Installing upgrade - version 1435813200470
I 05/20/16 08:13AM Upgrade installed - version 1435813200470
I 05/20/16 08:13AM CrashPlan started, version 4.7.0, GUID 719588200052335860
I 05/20/16 08:13AM [NAS Backup] Scanning for files to back up
I 05/20/16 08:13AM Backup scheduled to always run
I 05/20/16 08:15AM [NAS Backup] Scanning for files completed in 1 minute: 109,075 files (367.50GB) $
I 05/20/16 08:51AM CrashPlan started, version 4.6.0, GUID 719588200052335860
I 05/20/16 08:51AM Installing upgrade - version 1435813200470
I 05/20/16 08:51AM Upgrade installed - version 1435813200470
05/20/16 08:52AM CrashPlan started, version 4.7.0, GUID 719588200052335860
I 05/20/16 11:53AM CrashPlan started, version 4.6.0, GUID 719588200052335860
I 05/20/16 11:53AM Backup scheduled to always run
I 05/20/16 11:53AM Downloading a new version of CrashPlan.
W 05/20/16 11:53AM Unable to apply upgrade(s), retrying in one hour
I 05/20/16 12:00PM Downloading a new version of CrashPlan.
I 05/20/16 12:01PM Download of upgrade complete - version 1435813200470.
I 05/20/16 12:01PM CrashPlan has downloaded an update and will restart momentarily to apply the upd$
I 05/20/16 12:01PM Installing upgrade - version 1435813200470

Do you have any idea what's wrong?

Crashplan Shutting Down Then Won't Allow Restart

[03.10.17 07:16:26.763 ERROR main com.backup42.service.CPService] Cannot bind to 192.168.1.243:4243, java.net.BindException: Cannot assign requested address
STACKTRACE:: java.net.BindException: Cannot assign requested address

It throws this error after running fine for a few hours. It's like it's holding on to the port assignment and won't release it, even if I stop and restart the container. I don't want to deploy a new container because then I have to adopt the old one and Crashplan goes through its whole block syncing exercise that takes hours!

Any ideas? Thanks!

Upgrade to CrashPlan 4.8 and QNAP NAS

I'm not sure what changed, if it was something to do with the update to 4.8 or if it was a difference in the default docker settings in the QNAP setup. But I needed to add --net=host to the command line.

The error I was seeing was that I could get the Crashplan server up and running, but no one could find it. And the QNAP docker was making it an internal address by default. Changing it to --net=host made the internal address reported by Crashplan into the real address of the NAS and then it was able to open up a uPnP port in my router.

This is very likely a specific to how the QNAP does its internal networking.

Include appropriate X11 libs to allow CrashPlanDesktop app to run

It would be nice to be able to run the CrashPlanDesktop app via a docker exec -it crashplan /var/crashplan/app/bin/CrashPlanDesktop. That would save needing to have Crashplan installed locally anyway just to get the app. With appropriate forwarding of ~/.Xauthority, /tmp/X11-unix and DISPLAY env, it should work.
Looks like there are some missing gtk libs.

bash-4.3# cat /var/crashplan/app/log/ui_error.log 
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
	Can't load library: /tmp/.cpswt/libswt-pi-gtk-4427.so
	Can't load library: /tmp/.cpswt/libswt-pi-gtk.so
	no swt-pi-gtk-4427 in java.library.path
	no swt-pi-gtk in java.library.path
	/tmp/.cpswt/libswt-pi-gtk-4427.so: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

Changing PUBLIC_IP doesn't work

I'm trying to reenable local backups by changing the env PUBLIC_IP and PUBLIC_PORT to 192.168.1.250/4242 but the container refuses to use that IP, the client still uses 0.0.0.0

Do I have to rebuild the container? (and if I need to do so, how?)

THX

Container randomly freezing (goes silent, no more activity, but process is alive)

For me, the container just stops doing anything randomly at some point. Does anybody else have this and/or knows a solution?

Right now, I've had it running for seven days and five days ago it just stopped logging anything stdout and service.log.0, and it also stopped doing anything backup-wise. The main process is still alive, so Docker hasn't restarted the container. It's just not doing anything.

It had updated to 4.6.0 a couple days a while earlier (long enough before the freeze that I don't suspect a connection).

I don't find anything suspicious in the log files. There's a lot of stacktraces (IllegalArgumentException: Peer already existed, cannot add), but they always occur every minute, even while it's running well. Here's the very last lines before it just went silent.

[04.03.16 10:24:43.127 WARN  on-825222751 2.messaging.peer.NATContinuation] [NATContinuation[736404681217745414](0):733556053290072213<->733351749112369151][active/A_INV_SENT] INVITE timeout, STOP
[04.03.16 10:24:43.329 WARN  on-825222751 de42.messaging.peer.NATConnector] [NATContinuation[736404681217745414](0):733556053290072213<->733351749112369151][active/STOP]  RP:: TRAVERSAL FAILURE for com.code42.messaging.peer.NATConnector@7c3ce6ef
[04.03.16 10:24:54.915 INFO  ystemWatcher ode42.messaging.nio.MessageQueue] MW:: STATS:UI : numWorkers=2, queue.size=0, MessageQueueStats[num=0, numSinceLast=0, handling=Counter[count = 0, rate = 0.00, rollingRate = 0.00], waiting=Counter[count = 0, rate = 0.00, rollingRate = 0.00], workload=1.000]
[04.03.16 10:25:36.945 INFO  DefaultGroup .code42.messaging.peer.PeerGroup] PG::DefaultGroup DONE Managing connected remote peers. numConnected=7, numFailedConnectedCheck=0, duration(ms)=35
[04.03.16 10:25:39.300 INFO  erTimeoutWrk e42.messaging.peer.PeerConnector] PC:: Cancelling connection attempt due to timeout - pending connection=PendingConnection[timeout(ms) = 10000, startTime = Sun Apr 03 10:25:25 GMT 2016, remotePeer = RemotePeer-[guid=733351749112369151, state=CONNECTING, mode=PRIVATE, location=192.168.178.56:4242, public=79.247.139.110:0, transportPbK=X509.checksum(dfb2987cb569a2e55152753fa25ab089), transportPbKRequestable=false, connecting=2016-04-03T10:25:25:139, connected=0, disconnected=2016-04-03T10:24:43:329, attempts=2, connectActivity=2016-04-03T10:25:25:139, keepAliveSent=0, minRetry=29648, retryDelay=0, reflector=na, #nat=1, session=null], sessionData = MessageConnection[ sessionInfo=Session[ null], readBuffer=com.code42.messaging.nio.MessageConnection$MessageBuffer@38c687d0, maxBufferSize = 65536, currentSize = 0, enqueued = false, #items = 0, Connection[481292855, state=0, context = Context@231989070[null->nullconnectionState=0], SendBufferQueue[closed=false, queueSize=0, maxSize=1310720, enqueueTimeout=60000, numItems=0, waitingCount=0, waitingPriorityCount=0, items.size()=0, priorityItems.size()=0, lastEnqueueTS=0]]]]
[04.03.16 10:25:49.442 INFO  erTimeoutWrk e42.messaging.peer.PeerConnector] PC:: Cancelling connection attempt due to timeout - pending connection=PendingConnection[timeout(ms) = 5000, startTime = Sun Apr 03 10:25:39 GMT 2016, remotePeer = RemotePeer-[guid=733351749112369151, state=CONNECTING, mode=PRIVATE, location=192.168.178.56:4242, public=79.247.139.110:0, transportPbK=X509.checksum(dfb2987cb569a2e55152753fa25ab089), transportPbKRequestable=false, connecting=2016-04-03T10:25:39:430, connected=0, disconnected=2016-04-03T10:25:39:427, attempts=1, connectActivity=2016-04-03T10:25:39:430, keepAliveSent=0, minRetry=29648, retryDelay=0, reflector=na, #nat=1, session=null], sessionData = MessageConnection[ sessionInfo=Session[ null], readBuffer=com.code42.messaging.nio.MessageConnection$MessageBuffer@6137fca8, maxBufferSize = 65536, currentSize = 0, enqueued = false, #items = 0, Connection[1841504089, state=0, context = Context@245266076[null->nullconnectionState=0], SendBufferQueue[closed=false, queueSize=0, maxSize=1310720, enqueueTimeout=60000, numItems=0, waitingCount=0, waitingPriorityCount=0, items.size()=0, priorityItems.size()=0, lastEnqueueTS=0]]]]
[04.03.16 10:25:50.725 WARN  MQ-Peer-1    2.messaging.MessageReceiverProxy] MessageReceiverProxy: InvocationTargetException receiving message=type=com.code42.peer.message.NATInviteMessage, contents=NATInviteMessage[736326220872622598] [[email protected]:53061], session=Session[id=736326220872622598, closed=false, isAcceptor=false, remoteIdentity=ENDPOINT, completedAuth=true, lat=2016-04-03T10:25:50:716, lrt=2016-04-03T10:25:50:716, lwt=2016-04-03T10:25:36:934, #pending=0, enqueued=true, local=172.17.0.7:50856, remote=216.17.8.3:443, usingProtoHeaders=true, usingEncryptedHeaders=true, WAN], e=java.lang.reflect.InvocationTargetException, cause=java.lang.IllegalArgumentException: Peer already existed, cannot add. PeerLocation=[[[email protected]:53061]], java.lang.IllegalArgumentException: Peer already existed, cannot add. PeerLocation=[[[email protected]:53061]]
STACKTRACE:: java.lang.IllegalArgumentException: Peer already existed, cannot add. PeerLocation=[[[email protected]:53061]]
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
    at com.code42.messaging.peer.PeerGroup.addPeerFromLocation(PeerGroup.java:683)
    at com.code42.messaging.peer.NATAgent.receiveMessage(NATAgent.java:94)
    at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.code42.messaging.MessageReceiverProxy.receiveMessage(MessageReceiverProxy.java:149)
    at com.code42.messaging.Session.receiveMessage(Session.java:379)
    at com.code42.messaging.nio.MessageQueue$MessageWorker.handle(MessageQueue.java:161)
    at com.code42.messaging.nio.MessageQueue$MessageWorker.handle(MessageQueue.java:80)
    at com.code42.queue.QueueWorker.run(QueueWorker.java:47)
    at com.code42.messaging.nio.MessageQueue$MessageWorker.run(MessageQueue.java:126)

[04.03.16 10:26:23.744 WARN  n-1841228017 2.messaging.peer.NATContinuation] [NATContinuation[736404850046870022](0):733556053290072213<->734415399723664691][active/A_INV_SENT] INVITE timeout, STOP
[04.03.16 10:26:23.950 WARN  n-1841228017 de42.messaging.peer.NATConnector] [NATContinuation[736404850046870022](0):733556053290072213<->734415399723664691][active/STOP]  RP:: TRAVERSAL FAILURE for com.code42.messaging.peer.NATConnector@3010c4e2
[04.03.16 10:27:19.562 INFO  erTimeoutWrk e42.messaging.peer.PeerConnector] PC:: Cancelling connection attempt due to timeout - pending connection=PendingConnection[timeout(ms) = 10000, startTime = Sun Apr 03 10:27:05 GMT 2016, remotePeer = RemotePeer-[guid=734415399723664691, state=CONNECTING, mode=PRIVATE, location=192.168.1.4:4242, public=217.51.136.219:0, transportPbK=X509.checksum(895e4250e002a5f9aedf1304f7226991), transportPbKRequestable=false, connecting=2016-04-03T10:27:05:083, connected=0, disconnected=2016-04-03T10:26:23:951, attempts=2, connectActivity=2016-04-03T10:27:05:083, keepAliveSent=0, minRetry=29930, retryDelay=0, reflector=na, #nat=1, session=null], sessionData = MessageConnection[ sessionInfo=Session[ null], readBuffer=com.code42.messaging.nio.MessageConnection$MessageBuffer@1da4e1ae, maxBufferSize = 65536, currentSize = 0, enqueued = false, #items = 0, Connection[1126734862, state=0, context = Context@920939237[null->nullconnectionState=0], SendBufferQueue[closed=false, queueSize=0, maxSize=1310720, enqueueTimeout=60000, numItems=0, waitingCount=0, waitingPriorityCount=0, items.size()=0, priorityItems.size()=0, lastEnqueueTS=0]]]]
[04.03.16 10:27:29.667 INFO  erTimeoutWrk e42.messaging.peer.PeerConnector] PC:: Cancelling connection attempt due to timeout - pending connection=PendingConnection[timeout(ms) = 5000, startTime = Sun Apr 03 10:27:19 GMT 2016, remotePeer = RemotePeer-[guid=734415399723664691, state=CONNECTING, mode=PRIVATE, location=192.168.1.4:4242, public=217.51.136.219:0, transportPbK=X509.checksum(895e4250e002a5f9aedf1304f7226991), transportPbKRequestable=false, connecting=2016-04-03T10:27:19:667, connected=0, disconnected=2016-04-03T10:27:19:667, attempts=1, connectActivity=2016-04-03T10:27:19:667, keepAliveSent=0, minRetry=29930, retryDelay=0, reflector=na, #nat=1, session=null], sessionData = MessageConnection[ sessionInfo=Session[ null], readBuffer=com.code42.messaging.nio.MessageConnection$MessageBuffer@4bb3d033, maxBufferSize = 65536, currentSize = 0, enqueued = false, #items = 0, Connection[1906368890, state=0, context = Context@1995430828[null->nullconnectionState=0], SendBufferQueue[closed=false, queueSize=0, maxSize=1310720, enqueueTimeout=60000, numItems=0, waitingCount=0, waitingPriorityCount=0, items.size()=0, priorityItems.size()=0, lastEnqueueTS=0]]]]
[04.03.16 10:27:39.340 WARN  MQ-Peer-1    2.messaging.MessageReceiverProxy] MessageReceiverProxy: InvocationTargetException receiving message=type=com.code42.peer.message.NATInviteMessage, contents=NATInviteMessage[736326220872622598] [[email protected]:52973], session=Session[id=736326220872622598, closed=false, isAcceptor=false, remoteIdentity=ENDPOINT, completedAuth=true, lat=2016-04-03T10:27:39:336, lrt=2016-04-03T10:27:39:336, lwt=2016-04-03T10:26:36:711, #pending=0, enqueued=true, local=172.17.0.7:50856, remote=216.17.8.3:443, usingProtoHeaders=true, usingEncryptedHeaders=true, WAN], e=java.lang.reflect.InvocationTargetException, cause=java.lang.IllegalArgumentException: Peer already existed, cannot add. PeerLocation=[[[email protected]:52973]], java.lang.IllegalArgumentException: Peer already existed, cannot add. PeerLocation=[[[email protected]:52973]]
STACKTRACE:: java.lang.IllegalArgumentException: Peer already existed, cannot add. PeerLocation=[[[email protected]:52973]]
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
    at com.code42.messaging.peer.PeerGroup.addPeerFromLocation(PeerGroup.java:683)
    at com.code42.messaging.peer.NATAgent.receiveMessage(NATAgent.java:94)
    at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.code42.messaging.MessageReceiverProxy.receiveMessage(MessageReceiverProxy.java:149)
    at com.code42.messaging.Session.receiveMessage(Session.java:379)
    at com.code42.messaging.nio.MessageQueue$MessageWorker.handle(MessageQueue.java:161)
    at com.code42.messaging.nio.MessageQueue$MessageWorker.handle(MessageQueue.java:80)
    at com.code42.queue.QueueWorker.run(QueueWorker.java:47)
    at com.code42.messaging.nio.MessageQueue$MessageWorker.run(MessageQueue.java:126)

[04.03.16 10:28:03.712 WARN  ion-46752562 2.messaging.peer.NATContinuation] [NATContinuation[736405017768698374](0):733556053290072213<->733351749112369151][active/A_INV_SENT] INVITE timeout, STOP
[04.03.16 10:28:03.916 WARN  ion-46752562 de42.messaging.peer.NATConnector] [NATContinuation[736405017768698374](0):733556053290072213<->733351749112369151][active/STOP]  RP:: TRAVERSAL FAILURE for com.code42.messaging.peer.NATConnector@7c3ce6ef
[04.03.16 10:28:55.125 INFO  ystemWatcher ode42.messaging.nio.MessageQueue] MW:: STATS:Peer : numWorkers=4, queue.size=0, MessageQueueStats[num=1199, numSinceLast=2, handling=Counter[count = 4301, rate = 0.10, rollingRate = 0.09], waiting=Counter[count = 188176583, rate = 1810.08, rollingRate = 4211.56], workload=0.000]
[04.03.16 10:28:59.777 INFO  erTimeoutWrk e42.messaging.peer.PeerConnector] PC:: Cancelling connection attempt due to timeout - pending connection=PendingConnection[timeout(ms) = 10000, startTime = Sun Apr 03 10:28:45 GMT 2016, remotePeer = RemotePeer-[guid=733351749112369151, state=CONNECTING, mode=PRIVATE, location=192.168.178.56:4242, public=79.247.139.110:0, transportPbK=X509.checksum(dfb2987cb569a2e55152753fa25ab089), transportPbKRequestable=false, connecting=2016-04-03T10:28:45:001, connected=0, disconnected=2016-04-03T10:28:03:916, attempts=2, connectActivity=2016-04-03T10:28:45:001, keepAliveSent=0, minRetry=29648, retryDelay=0, reflector=na, #nat=1, session=null], sessionData = MessageConnection[ sessionInfo=Session[ null], readBuffer=com.code42.messaging.nio.MessageConnection$MessageBuffer@634924d6, maxBufferSize = 65536, currentSize = 0, enqueued = false, #items = 0, Connection[917394116, state=0, context = Context@1089723994[null->nullconnectionState=0], SendBufferQueue[closed=false, queueSize=0, maxSize=1310720, enqueueTimeout=60000, numItems=0, waitingCount=0, waitingPriorityCount=0, items.size()=0, priorityItems.size()=0, lastEnqueueTS=0]]]]
[04.03.16 10:29:09.885 INFO  erTimeoutWrk e42.messaging.peer.PeerConnector] PC:: Cancelling connection attempt due to timeout - pending connection=PendingConnection[timeout(ms) = 5000, startTime = Sun Apr 03 10:28:59 GMT 2016, remotePeer = RemotePeer-[guid=733351749112369151, state=CONNECTING, mode=PRIVATE, location=192.168.178.56:4242, public=79.247.139.110:0, transportPbK=X509.checksum(dfb2987cb569a2e55152753fa25ab089), transportPbKRequestable=false, connecting=2016-04-03T10:28:59:884, connected=0, disconnected=2016-04-03T10:28:59:884, attempts=1, connectActivity=2016-04-03T10:28:59:884, keepAliveSent=0, minRetry=29648, retryDelay=0, reflector=na, #nat=1, session=null], sessionData = MessageConnection[ sessionInfo=Session[ null], readBuffer=com.code42.messaging.nio.MessageConnection$MessageBuffer@48c95f53, maxBufferSize = 65536, currentSize = 0, enqueued = false, #items = 0, Connection[1653386504, state=0, context = Context@644934639[null->nullconnectionState=0], SendBufferQueue[closed=false, queueSize=0, maxSize=1310720, enqueueTimeout=60000, numItems=0, waitingCount=0, waitingPriorityCount=0, items.size()=0, priorityItems.size()=0, lastEnqueueTS=0]]]]
[04.03.16 10:29:43.662 WARN  on-558619013 2.messaging.peer.NATContinuation] [NATContinuation[736405185406640646](0):733556053290072213<->734415399723664691][active/A_INV_SENT] INVITE timeout, STOP
[04.03.16 10:29:43.870 WARN  on-558619013 de42.messaging.peer.NATConnector] [NATContinuation[736405185406640646](0):733556053290072213<->734415399723664691][active/STOP]  RP:: TRAVERSAL FAILURE for com.code42.messaging.peer.NATConnector@3010c4e2
[04.03.16 10:29:55.130 INFO  ystemWatcher ode42.messaging.nio.MessageQueue] MW:: STATS:UI : numWorkers=2, queue.size=0, MessageQueueStats[num=0, numSinceLast=0, handling=Counter[count = 0, rate = 0.00, rollingRate = 0.00], waiting=Counter[count = 0, rate = 0.00, rollingRate = 0.00], workload=1.000]

TZ property not documented

Without looking at the .sh files there is no way to know what Timezone format the container is expecting. Something like this:

TZ=[timezone string to be piped into /etc/timezone]
e.g. TZ=America/Los_Angeles

Request for more documentation on "Automatic version upgrade" feature

How is the automatic version upgrade supposed to work? I just started this image for the first time and it ran CrashPlan 4.4.1 (whereas 4.5.2 seems to be the latest version for Linux).

I also set the environment variable CRASHPLAN_VERSION to 4.5.2 and started a new container from the image, but that didn't seem to make any difference.

I don't see any of the scripts calling the crashplan.exp?

/var/crashplan/id/.ui_info does not persist over time and remote connections fail

According to the comments in entrypoint.sh the idea is that the account info for remote UI connections found in /var/crashplan/id/.ui_info pertains over time. This is actually not working in this way. When the docker auto-updates crashplan and/or is restarted the authentication token in the file is updated and the service host IP is changed to 127.0.0.1, effectively no longer allowing to remotely connect to the crashplan engine. I can change the service host IP back to 0.0.0.0 by modifying the my.service.xml which allows me to connect again using a new authentication token. Is there a way to make the authentication token and service host IP pertinent?

Problem with device not ready for computer to computer backup

I am having a problem where backing up to crashplan cloud works. But I can't backup from two computers on the same account that are in different locations. Its an infinite waiting for connection and in logs the backup location is not accessible. Any help would be appreciated.

CrashPlan Update 1435813200460 fails

The log files reports says:

Fri Mar 11 13:33:04 UTC 2016 : Sourcing ../../install.vars...
Fri Mar 11 13:33:04 UTC 2016 : Found INITDIR=/etc/init.d...
Fri Mar 11 13:33:04 UTC 2016 : Current CrashPlan Backup Engine:
root 6261 1 0 Mar03 ? 00:00:00 /opt/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPlan -Xms20m -Xmx3098m -Dsun.net.inetaddr.ttl=300 -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.negative.ttl=0 -Dnetworkaddress.cache.negative.ttl=0 -Dc42.native.md5.enabled=false -classpath /usr/local/crashplan/lib/com.backup42.desktop.jar:/usr/local/crashplan/lang com.backup42.service.CPService
Fri Mar 11 13:33:04 UTC 2016 : Stopping using /etc/init.d/crashplan...
Stopping CrashPlan Engine ... OK
Fri Mar 11 13:33:14 UTC 2016 : Ensuring the UpgradeUI is not running.
Fri Mar 11 13:33:14 UTC 2016 : UpgradeUI is shut down.
Fri Mar 11 13:33:14 UTC 2016 : JAVACOMMON is set: /opt/jre/bin/java
Fri Mar 11 13:33:15 UTC 2016 : Current Java Version: 1.8
Fri Mar 11 13:33:15 UTC 2016: The Current java is not compatible. Embedding a compatible version.
Fri Mar 11 13:33:15 UTC 2016 : Download JVM from http://download.code42.com/installs/proserver/jre/jre-7-linux-x64.tgz
Fri Mar 11 13:33:15 UTC 2016 : downloading the JRE using /usr/bin/wget
Connecting to download.code42.com (216.17.8.19:80)
Connecting to download.code42.com (216.17.8.19:443)
wget: can't execute 'ssl_helper': No such file or directory
wget: error getting response: Connection reset by peer
Fri Mar 11 13:33:15 UTC 2016 : Unable to download JRE from http://download.code42.com/installs/proserver/jre/jre-7-linux-x64.tgz; please check network connection
Fri Mar 11 13:33:15 UTC 2016 : Starting using /etc/init.d/crashplan...
Starting CrashPlan Engine ... Using standard startup
OK

Non-ASCII characters causing problems in `crashplan:stable` image

CrashPlan on my stable container has updated itself to 4.8.0 and I started noticing issues with non-ASCII file/directory names. When restoring a file, those characters are replaced with a ?. Also I noticed one large folder isn't getting backed up because of a characted in the folder name:

image

Has anyone else noticed this?

Abnormally large "@docker" folder from CrashPlan's perspective

Hi. I'm successfully running CrashPlan within Docker on my Synology DS916+. Thanks for your efforts.

I'm having one issue. I've mapped my volume so that the container can backup the entire volume using the following parameters:

docker run -d \
  --name CrashPlan \
  -h $HOSTNAME \
  -e TZ \
  --publish 4242:4242 --publish 4243:4243 \
  --volume /volume1/crashplan/data:/var/crashplan \
  --volume /volume1/crashplan/storage:/storage \
  --volume /volume1/:/volume1 \
  jrcs/crashplan:latest

For some odd reason, CrashPlan sees the /volume1/@docker folder as ~140TB, which is far more than the capacity of my hard drives.

crashplan

My guess is that there are some hard or soft links that are causing some weird recursive loop, but I'm not sure. I can manually exclude the docker folder, but I'd rather just point CrashPlan at the full volume.

Any help is appreciated.

bypass "/storage" path ?

Hello,

Before knowing this container today, I used a Crashplan installed directly on the Synology.

This container is a good real idea, but I would like to "adopt" the backup I already made until today. Unfortunately, in my previous Crashplan, the files where thru "/". I mean I saw the same file system I can find thru the file explorer included in Synology GUI.

With this container, I have a added level, because even if I'm able to put "/" as "--volume /:/storage", when I run the CrashPlan GUI, it shows me "storage" into the root directory.

Unfortunately, I'll lose all my previous backup and I will have to backup from start, because Crashplan doesn't recognise "/storage/Files2backup" as "/Files2backup" for example.

Do you have any idea ?

Thank you.

Allow configuration of /proc/sys/fs/inotify/max_user_watches

I see the 60-max-user-watches.conf file; however, it does not seem to be referenced by the other scripts or DOCKERFILE. max_user_watches currently is defaulting to 8192.

bash-4.3# cat /proc/sys/fs/inotify/max_user_watches
8192
bash-4.3# echo 1048576 > /proc/sys/fs/inotify/max_user_watches
bash: /proc/sys/fs/inotify/max_user_watches: Read-only file system

I was curious why my logs are filled with ode42.jna.inotify.InotifyManager] Unable to add watch for path messages. Then I found the Code42 article about the error. Maybe it's not possible to set via configuration due to Docker limitations?

Unable to connect to backup engine, retry?

Thanks for this, but I'm hitting a snag. I'm on Ubuntu 14.04.3 Server, and I'm trying to get this working. I set it up like this (a little different than your directions).

  docker run -d \
  --name crashplan \
  -h $HOSTNAME \
  -e TZ \
  --publish 4242:4242 --publish 4243:4243 \
  --volume /config/crashplan:/var/crashplan \
  --volume /storage:/storage \
  jrcs/crashplan:latest

The directories are all chmod'd to 777, and the sub folders are all created.

root@fileserver:~# ls /config/crashplan/
bin  cache  conf  id  lang  lib  log

I copied the .ui_info string over to my Mac, but when I try to connect, I just see a message that it can't connect to the backup engine. I'm ssh'd the ports like this.

ssh -L 4243:localhost:4243 [email protected]

Any ideas to get this working properly? Thanks!

Container Restarts

Have there been any thoughts on the Synchronizing block information that occurs after every container restart? This seems to happen even after committing the changes to the image when the synchronization is complete. I've made sure to mount the /var/crashplan volume. Is the block cache stored in a different directory?

Accessing Crashplan GUI

With respect to #19, I agree with keeping the container lightweight. However (and unfortunately) GUI management is required in Crashplan, but I'd strongly want to avoid having it installed on my host server and on my desktop machine just for remote control. So how can we remotely access the GUI within the container?

One approach I wanted to try was to share the X session with the host and try to run CrashPlanDesktop from within the container. It requires some rude hacks, but this can be streamlined later if need be. What I did was:

1. Dockerfile

Patch the Dockerfile to get the missing libraries needed for X, adding gtkx+2.0 libxtst (line 9). I also added xset to verify that X is indeed working.

Now the dodgy part: A user account has to be created in the container which use the same UID and GID as the user trying to use X from. (Borrowed from here: http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/). I implemented this using:

RUN export uid=1000 gid=1000 && \
   mkdir -p /home/user && \
   echo "user:x:${uid}:${gid}:User,,,:/home/user:/bin/ash" >> /etc/passwd && \
   echo "user:x:${uid}:" >> /etc/group && \
   chown ${uid}:${gid} -R /home/user

In a more permanent setup, I'd propose setting this up dynamically from the install or entrypoint-script when creating the container.

2. Create the container

When creating the container, add the following statements to docker run:

-e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix

(Its possible -v /tmp/.X11-unix:/tmp/.X11-unix:ro can be used for better protection, but I didn't try it myself)

3. Run the desktop GUI

The default /var/crashplan/app/bin/CrashPlanDesktop script runs the main GUI using &, which does not play well with docker exec, so it needs to be modified. Copy the script e.g. to /var/crashplan/app/bin/cpd and edit the file by removing the & (and perhaps the > redirects as well if you want to see the output):

line 16:  ${JAVACOMMON} ${GUI_JAVA_OPTS} -classpath "./lib/com.backup42.desktop.jar:./lang:./skin" com.backup42.desktop.CPDesktop

It can now be started from the host using:

docker exec -it -u user crashplan /var/crashplan/app/bin/cpd

..and then the experiment stops for me as the app crashes due to SEGFAULT. See below. I don't really know how to proceed. Maybe there are more X libs missing? A quick Google search gave me something (http://stackoverflow.com/questions/30491839/pthread-library-fails-when-called-from-static-constructor-code) about the glibc version being used, but I have no clue if this is a similar case.

*************************************************************
*************************************************************
STARTED CrashPlanDesktop
CPVERSION = 4.8.0 - 1435813200480 (2015-07-02T05:00:00:480+0000) - Build: 331
ARGS      = []
LOCALE    = English (United States)
JVM       = Java(TM) SE Runtime Environment (1.8.0_72-b15, 64-bit)
OS        = Linux (4.4.0-53-generic, amd64)
User      = user, /home/user
swt.library.path = /tmp/.cpswt
*************************************************************
SWT library deleted: /tmp/.cpswt/libswt-pi-gtk-4427.so
SWT library deleted: /tmp/.cpswt/libswt-gtk-4427.so
Found and loading lib/org.eclipse.swt.gtk.linux.x86_64.jar
[file:/var/crashplan/app/lib/com.backup42.desktop.jar, file:/var/crashplan/app/lang/, file:/var/crashplan/app/skin/, file:/var/crashplan/app/lib/org.eclipse.swt.gtk.linux.x86_64.jar]
GLib (gthread-posix.c): Unexpected error from C library during 'pthread_cond_init': Invalid argument.  Aborting.
/var/crashplan/app/bin/cpd: line 17:   336 Aborted                 (core dumped) ${JAVACOMMON} ${GUI_JAVA_OPTS} -classpath "./lib/com.backup42.desktop.jar:./lang:./skin" com.backup42.desktop.CPDesktop

Anyhow, I hoped this little rundown could spawn some interest, and possibly how to figure out why the desktop GUI crashes.

[Question] Best performance settings?

As we all know Crashplan has sometimes at least very slow upload speeds. As I've got a 1 Gbit connection I'm very interested todo what ever helps to improve upload speeds.

Via client I was able to set the following:
image

I'm getting 4 to 6 Mbit/s with this settings what is better than the usual 2-3 Mbit/s (!= Megabyte) - with big files. Are there other possible settings to improve this further? I'm using 2 GB RAM and the CPU isn't extremely used (below 30% most times). Any ideas?

trouble compiling/installing manually

Synology 1515+ running DSM 6.0-7321 Update 7

I'm new to Docker (but not to crashplan) and I'm trying to manually install (so I could review the source code before committing this code/approach to being part of my backup system).

I'm doing the following:
wget https://github.com/JrCs/docker-crashplan/archive/master.zip
7z x master.zip
cd docker-crashplan-master/

I have tried running the build.sh script as well as manually running
docker build -t jrcs/crashplan .
and
docker build -t jrcs/crashplan:latest .

In all cases, the build does most parts but fails shortly after downloading jre with the errors
"
sed: can't read /usr/local/crashplan/conf/default.service.xml: No such file or directory
The command '/bin/sh -c chmod +x /tmp/installation/install.sh && sync && /tmp/installation/install.sh && rm -rf /tmp/installation' returned a non-zero code: 2
"

thoughts on what is failing?

thx!
-Dave

inbound backup not working

My other crashplan clients on the internal network can't find the dockerized crashplan. I suspect it's because the inbound local-network address is the container's 172.x.x.x address. Do you have any ideas on how to make this work?

I'm not familiar enough with docker to know if it's possible to bridge it, and it doesn't seem possible to change the internal address without attempting to "bind" to an address that doesn't exist from the container's POV.

Crashplan cannot update to 4.8

Since latest update from Crashplan the docker engine is unable to update to the latest version of Crashplan 4.8 and gets stuck.

No .ui-info file in conf folder?

Hi everyone - can't figure out what I'm doing wrong here, but this container seems to set up and run fine in Container Station, and Crashplan seems to be running. However I don't see a .ui_info file in the conf/id folder or anywhere in the conf folder, so I can't copy the token to my desktop and get this going. Please help - thanks!

Authorisation manifest creation error

When 'authorizing' the Crashplan client, Crashplan creates an 'adb' folder in the conf directory. When this is a shared volume on Windows, an IO error occurs trying to write the Manifest file.

A similar issue can be found here: Level/levelup#222

A possible way around this is for the adb directory to be kept in the container volume (e.g. via a symbolic link in the conf directory).

Memory setting is not persistent since 4.7

It seems that Crashplan has changed the way to set more ram to the JVM. My current memory setting in the run.cfg is no longer working since the update.
There is a workaroud to manually set it through the Crasplan client using the "java mx 'value' restart" command.
The problem is that this workaround is not persistent after a restart of the Docker container.

Unable to connect, check you network error

First of all, thank you for this docker image, It is going to make my life easier.
I am not very good at Linux but will not hesitate to learn to sort things out.

My system:
I have Synology NAS (IP: 10.0.1.10 with Docker version 1.6.2). I have been trying to install CrashPlan to backup my Synology and tried the instruction provided in the readme file.
The docker command gave me an error so had to remove -h and -e options to make it work.
The command I used is

$ docker run -d \
  --name crashplan \
  --publish 4242:4242 --publish 4243:4243 \
  --volume /volume1/docker/CrashPlan/data:/var/crashplan \
  --volume /volume1:/storage \
  jrcs/crashplan:latest

After the successful installation of the docker, I installed the CrashPlan in my Mac and changed the .ui_info in my Mac.
/Library/Application Support/CrashPlan/.ui_info
to
4243,5d8f748d-5028-4f42-a288-143f463b4e9e,10.0.1.10
5d8f748d-5028-4f42-a288-143f463b4e9e -> This I got from .ui_info from the docker.

Issue:
When I open the CrashPlan app in Mac and try to log in, I get an error:
Unable to connect, check your network.
However, my other dockers are able to access the internet.

My Understanding:
My CrashPlan docker is not able to access the internet, or my app is not able to communicate with the docker CrashPlan.

Running netstat from my Synology (HOST):

$ netstat -ap tcp | grep -i "listen"

tcp        0      0 ::%134877389:4242       ::%134877389:*          LISTEN      17687/docker-proxy
tcp        0      0 ::%134877389:4243       ::%134877389:*          LISTEN      17695/docker-proxy

I am assuming 4243 and 4242 in my host is accessible.
I am completely stuck, What have I missed? Can anybody guide me in the right direction?

Thank you again!

Request enhancement to view Crashplan GUI through VNC session

Hey - love this Docker container. Using this with no issues on a QNAP NAS device. Works wonderfully. Anyway, one enhancement that would be useful would be to allow access to a GUI through a VNC session without having to use the desktop client.

I've seen this on some other similar containers, but this one is the best and most well-maintained. Just something for consideration. Cheers!

File structure of folders to be backed up is different from QPKG and I can't get them to align

Hi there - I used to use the qpkg but that broke w 4.3 beta so I'm trying to make the container work. I have it running but the to be backed up directory mapping isn't aligned, so the console says "missing" for all my previously mapped (and backed up) directories. I've tried configuring the variable to /, /share and share/CACHEDEV1_DATA but no dice. It's 3TB of data so I'm not excited about scrapping the old backup and starting over. Attached is a picture. The checked boxes are what it's expecting, the one I see is "storage" that's actually expandable and selectable. If I deselect any of the existing ones they will be deleted from the backup. Thanks for any help!
crashplan file selection discrepancy

/var/crashplan/conf/my.service.xml does not persist over time and remote connections fail

The <serviceHost> tag in /Container/crashplan/conf/my.service.xml reverts from "0.0.0.0" to "localhost" after a restart.

If I ever need to use the GUI I have to:

  1. stop the container
  2. edit my.service.xml tag to <serviceHost>0.0.0.0</serviceHost>
  3. Start the container.
  4. Pull the .ui_info information, copy that locally (because it also gets regenerated)
  5. Then finally can access the GUI.

Where would my.service.xml be getting the "localhost" value from?

The last comment here was a huge help for me after months of poking around in this in my spare time. I also adopted this backup from a non-headless configuration from the past. Now if I could only get it to persist...

This is the command I used to get the ball rolling (Crashplan works well and is backing up regardless of this issue of being able to access the GUI)
docker run -d --name crashplan -e America/Los_Angeles --net=host --volume /share/CACHEDEV1_DATA/Container/crashplan/config:/var/crashplan --volume /share/CACHEDEV1_DATA/Backup:/storage jrcs/crashplan:latest (without line breaks)

...which I changed from the below as a results of my first attempt to try and resolve this. I provide this just in case it's useful but the above is the current setup...

docker run -d --name crashplan -e America/Los_Angeles --publish 4242:4242 --publish 4243:4243 --net host --volume /share/CACHEDEV1_DATA/Containers/crashplan/config:/var/crashplan --volume /share/CACHEDEV1_DATA/Backup:/storage jrcs/crashplan:latest (Note 's' on Containers)

Thanks for any support.

Restarting always broke something

Hi JrCs,
I have a problem with your container. When launching for the first time, it works well, using this command :
docker run -d --name crashplan2 -p 4242:4242 -p 4243:4243 -v /docker/crashplan/data:/var/crashplan -v /volume1:/volume1 jrcs/crashplan:latest
But if I restart it, then nothing work.
I am running on a Synology.
Here are some logs :
2017-01-20 00:33:53 stderr tail: cannot open '/var/crashplan/log/service.log.0' for reading: Symbolic link loop
2017-01-20 00:33:53 stderr touch: cannot touch '/var/crashplan/log/service.log.0': Symbolic link loop
2017-01-20 00:33:53 stderr /etc/init.d/crashplan: line 42: /var/crashplan/app/bin/CrashPlanEngine: Symbolic link loop
2017-01-20 00:33:53 stderr mv: failed to access '/var/crashplan/conf': Symbolic link loop

Thanks a lot for your support

Document the meaning of the TZ environment variable

The README suggests to pass the TZ environment variable from the host into the container. Please document the meaning and use of this variable.

Is it relevant to CrashPlan? I didn't find any information on the CrashPlan Linux client requiring it to be set. Or does something else in the container need it?

My docker host doesn't have this variable set by default. What should it be set to? The timezone I want to see in logs (probably UTC)? The actual timezone the server is in (why?)? The timezone I want to see in the UI when I connect it?

Runs Into 8k Limit on inotify user watches

I've seen in my container instance's logs that the real-time monitoring engine has issues as its running into the limit of 8192 directory inotify user watches. Crashplan's website has guidance [1] on this matter and gives a recommendation for how to adjust /etc/sysctl.conf. However, when I try to do this on a bash shell opened on the container; it fails as below:

bash-4.3# cat /etc/sysctl.conf
# content of this file will override /etc/sysctl.d/*
fs.inotify.max_user_watches=1048576
bash-4.3# sysctl -p /etc/sysctl.conf
sysctl: setting key "fs.inotify.max_user_watches": error code 30
bash-4.3#

This 'docker' github issue highlights some questions around this with a suggestion that this needs to be solved at containers build-time. Can we make this an argument to the container somehow?

[1] https://support.code42.com/CrashPlan/4/Troubleshooting/Linux_Real-Time_File_Watching_Errors

Losing links

I created a new container using the latest image from docker.
This is the 4.8.0 version.
When I open the container, I see the symlinks for the conf, cache, lib, log and land folders in /usr/local/crashplan/
Then within 10-20 minutes, Crashplan downloads an update (also 4.8.0) and restarts.
Now the symlinks for cache, lib and lang are gone and folders are now there.
The conf and log symlinks are still active.

Not sure why Crashplan is updating the same version.

Bdog

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.