cryptpad/docs/cryptpad-docker.md

2.4 KiB

Cryptpad Docker Image

Cryptpad includes support for building a Docker image and running it to provide a Cryptpad instance. You can manage the container manually, or let Docker Compose manage it for you.

A full tutorial is available on the Cryptpad Github wiki. This document provides a brief overview.

Features

  • Configuration via .env file
  • Ready for use with traffic
  • Using github master for now, release 0.3.0 too old
  • Creating customize folder
  • Adding config.js to customize folder
  • Persistance for datastore and customize folder

Run

Run from the cryptpad source directory, keeping instance state in /var/cryptpad:

docker build -t xwiki/cryptpad .
docker run --restart=always -d --name cryptpad -p 3000:3000 -p 3001:3001 \
-v /var/cryptpad/files:/cryptpad/datastore \
-v /var/cryptpad/customize:/cryptpad/customize 
-v /var/cryptpad/blob:/cryptpad/blob \
-v /var/cryptpad/blobstage:/cryptpad/blobstage \
-v /var/cryptpad/pins:/cryptpad/pins \
-v /var/cryptpad/tasks:/cryptpad/tasks \
-v /var/cryptpad/block:/cryptpad/block \ 
xwiki/cryptpad

Or, using docker-compose and the included docker-compose.yml, keeping instance state in the current directory under ./data:

docker-compose up -d

Configuration

Set configurations Dockerfile or in .env (using docker-compose) file.

  • VERSION=latest
  • USE_SSL=false
  • STORAGE='./storage/file'
  • LOG_TO_STDOUT=true

The .env variables are read by docker-compose and forwarded to docker container. On runtime, in bin/container-start.sh the settings are written to the config.js file.

Persistance

The docker-compose file is preconfigured to persist folders

  • cryptpad/datastore --> ./data/files
  • cryptpad/customize --> ./data/customize
  • cryptpad/pins --> ./data/pins
  • cryptpad/blob --> ./data/blob
  • cryptpad/blobstage --> ./data/blobstage
  • cryptpad/tasks --> ./data/tasks
  • cryptpad/block --> ./data/block

Your configuration file will be in ./data/customize/config.js.

The data folder is ignored by git, so if you want to add your customizations to git versioning change the volume:

./customize:/cryptpad/customize:rw

SSL Proxy

The traefik proxy has builtin Let'sEncrypt for easy SSL setup. In the docker-compose file you can find preset lables for usage with traefik.

Traefik Docker Image

Alternativly just use plain old nginx.