Crashplan Pro

Crashplan Pro (For Small Business) is now the only consumer level option for crashplan.

Ansible Role: crashplan

Pay attention to basic configuration steps to correctly adopt existing backup sets.

  • If using LXC containers, you must run as privileged (unprivileged: 0) or use idmap to map all permissions to the container; otherwise mounted data will appear empty.

  • Run Crashplan as root to be able to read/backup all files.

  • Mount filesystems to backup read-only to prevent data loss.

  • Mount filesystems to backup under /, such as /data. This will allow for container migration to other machines without destroying backup sets, and keep it idempotent from the container OS.

  • Increase Inotify Limits to prevent warnings.

  • See minimum requirements in Defaults.

Warning

Read Backup set Adoption to adopt existing backup sets without losing data.

# Crashplan
Crashplan installation from public release tarball.

## Requirements
Pre-existing crashplan.com account. Approximately 1GB of RAM per 1TB for
largest backup set.

## Role Variables
Settings have been throughly documented for usage, including version updates.

[defaults/main.yml](https://github.com/r-pufky/ansible_crashplan/blob/main/defaults/main/main.yml).

### Ports
All ports and protocols have been defined for the role.

Hosts should only define firewall rules for ports they need.

[defaults/ports.yml](https://github.com/r-pufky/ansible_crashplan/blob/main/defaults/main/ports.yml).

## Dependencies
N/A

## Example Playbook
host_vars/crashplan.example.com/vars/crashplan.yml
``` yam
crashplan_memory: 6144
```

site.yml
``` yaml
- name:   'crashplan server'
  hosts:  'crashplan.example.com'
  become: true
  roles:
     - 'r_pufky.crashplan'
```

## Issues
Create a bug and provide as much information as possible.

Associate pull requests with a submitted bug.

## License
[AGPL-3.0 License](https://github.com/r-pufky/ansible_crashplan/blob/main/LICENSE)

## Author Information
https://keybase.io/rpufky

None

Role Details: Updated: 2022-10-08 galaxy source service docs

Ports

---
###############################################################################
# Ports Configuration
###############################################################################
# Ports should be managed externally via an OS role.
#
# Reference:
# * https://docs.ansible.com/ansible/latest/collections/community/general/ufw_module.html

ports:
  - {proto: 'tcp', from_ip: 'any', to_port: 443,  direction: 'in', comment: 'code42 console'}
  - {proto: 'tcp', from_ip: 'any', to_port: 4285, direction: 'in', comment: 'crashplan service (console)'}
  - {proto: 'tcp', from_ip: 'any', to_port: 4287, direction: 'in', comment: 'crashplan service (online)'}
  - {proto: 'tcp', from_ip: '127.0.0.1', to_ip: '127.0.0.1', to_port: 4244, direction: 'in', comment: 'service to ui communication (localhost only)'}

Defaults

---
###############################################################################
# Crashplan for Business Configuration
###############################################################################
# CPU           Memory     Disk
# 2c/4t @2.0Ghz 1GB/TB     6GB (includes OS)
#
# Memory requirements are for the largest backup setup, allowing for OS usage.
# 6TB backup set = 6GB + 1GB for OS = 7GB memory. Use crashplan_memory.
#
# Crashplan will crash if there is not enough memory for the backup set being
# indexed.
#
# Remote connection setup:
#
# Container
# ---------
# PVE will try to forward to own displays if `X11UseLocalhost yes` is enabled
# for containers (lxc/kvm).
#
# /etc/ssh/sshd_config:
#
#   X11UseLocalhost no
#
#      Connect remotely to GUI for backup adoption:
#
# Windows
# -------
# xlaunch:
#   * multiple windows
#   * display windows: -1
#   * start no client
#   * clipboard (checked), primary selection (checked)
#   * native opengl (checked)
#
# putty:
#   connection -> ssh -> x11
#   * enable x11 forwarding (checked)
#   * x display location: localhost:0.0
#   * MIT-Magic-Cookie-1 (checked)
#
# Linux
# -----
# ssh: no configuration required. Just xserver running.
#
# Run GUI:
#
#   ssh -X {USER}@{HOST}
#   /usr/local/crashplan/bin/desktop.sh
#
# Backup set Adoption:
# * Start container.
# * Sign in to your account.
# * Click the Replace Existing button to start the wizard.
# * **SKIP** File Transfer.
# * Once done with the wizard, go to your device's details and click Manage
#   Files. You will probably see missing items in the file selection. This is
#   normal, since path to your files may be different in the container.
# * Update the file selection by re-adding your files. Do not unselect missing
#   items yet.
# * Perform a backup. Because of deduplication, files will not be uploaded
#   again.
# * Once the backup is terminated, you can remove missing items if you don't
#   care about file versions. Else, keep missing items.
#
# Reference:
# * https://crashplanhub.com/jlesage/docker-crashplan-pro/blob/master/Dockerfile
# * https://www.crashplanpro.com/app/#/console/app-downloads
# * https://superuser.com/questions/806637/xauth-not-creating-xauthority-file
# * https://support.code42.com/CrashPlan/6/Configuring/Replace_your_device
# * https://support.code42.com/Small_Business/Get_Started/CrashPlan_for_Small_Business_requirements

# From https://console.us2.crashplanpro.com/app/#/console/app-downloads
crashplan_version:   '10.2.1'
crashplan_build:     16
crashplan_timestamp: 15252000061021
crashplan_checksum:  '983159b784a12c83b9a0e4cac92e8af8dec3e3d1'

# Crashplan JVM memory in MB; 1GB per 1TB backup for largest backup set.
# If crashing this likely needs to be bumped higher.
crashplan_memory: 6144

# Force reinstallation?
crashplan_force_install: false

# Keep existing crashplan settings on reinstallation?
crashplan_keep_settings: false