9 changed files with 174 additions and 1 deletions
Split View
Diff Options
-
5.dockerignore
-
4.env
-
1.gitignore
-
43Dockerfile
-
23container-start.sh
-
69cryptpad-docker.md
-
23docker-compose.yml
-
4readme.md
-
3server.js
@ -0,0 +1,5 @@ |
|||
data |
|||
Dockerfile |
|||
docker-compose.yml |
|||
.git |
|||
.gitignore |
|||
@ -0,0 +1,4 @@ |
|||
VERSION=latest |
|||
USE_SSL=true |
|||
STORAGE='./storage/file' |
|||
LOG_TO_STDOUT=true |
|||
@ -0,0 +1,43 @@ |
|||
FROM ubuntu:16.04 |
|||
|
|||
RUN apt-get update && apt-get install -y \ |
|||
vim \ |
|||
wget \ |
|||
git \ |
|||
curl \ |
|||
npm \ |
|||
nodejs-legacy |
|||
|
|||
ARG VERSION=0.3.0 |
|||
|
|||
# Download stable version |
|||
# RUN wget https://github.com/xwiki-labs/cryptpad/archive /${VERSION}.tar.gz -O /cryptpad.tar.gz \ |
|||
# && mkdir -p /cryptpad \ |
|||
# && tar -xzf /cryptpad.tar.gz -C /cryptpad --strip-components=1 \ |
|||
# && rm /cryptpad.tar.gz |
|||
|
|||
# Download from github |
|||
# RUN git clone https://github.com/xwiki-labs/cryptpad.git |
|||
|
|||
# Add code directly |
|||
ADD . /cryptpad |
|||
|
|||
WORKDIR /cryptpad |
|||
|
|||
RUN npm install \ |
|||
&& npm install -g bower \ |
|||
&& bower install --allow-root |
|||
|
|||
ADD container-start.sh /container-start.sh |
|||
RUN chmod u+x /container-start.sh |
|||
|
|||
EXPOSE 3000 |
|||
|
|||
VOLUME /cryptpad/datastore |
|||
VOLUME /cryptpad/customize |
|||
|
|||
ENV USE_SSL=false |
|||
ENV STORAGE='./storage/file' |
|||
ENV LOG_TO_STDOUT=true |
|||
|
|||
CMD /container-start.sh |
|||
@ -0,0 +1,23 @@ |
|||
#!/bin/bash |
|||
|
|||
# Creating customize folder |
|||
mkdir -p customize |
|||
[[ ! "$(ls -A customize)" ]] && echo "Creating customize folder" \ |
|||
&& cp -R customize.dist/* customize/ \ |
|||
&& cp config.js.dist customize/config.js |
|||
|
|||
# Linking config.js |
|||
[[ ! -h config.js ]] && echo "Linking config.js" && ln -s customize/config.js config.js |
|||
|
|||
# Configure |
|||
[[ -n "$USE_SSL" ]] && echo "Using secure websockets: $USE_SSL" \ |
|||
&& sed -i "s/useSecureWebsockets: .*/useSecureWebsockets: ${USE_SSL},/g" customize/config.js |
|||
|
|||
[[ -n "$USE_SSL" ]] && echo "Using storage adapter: $STORAGE" \ |
|||
&& sed -i "s/storage: .*/storage: ${STORAGE},/g" customize/config.js |
|||
|
|||
[[ -n "$LOG_TO_STDOUT" ]] && echo "Logging to stdout: $LOG_TO_STDOUT" \ |
|||
&& sed -i "s/logToStdout: .*/logToStdout: ${LOG_TO_STDOUT},/g" customize/config.js |
|||
|
|||
|
|||
exec node ./server.js |
|||
@ -0,0 +1,69 @@ |
|||
# Cryptpad Docker Image |
|||
|
|||
- 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 |
|||
|
|||
## TODO |
|||
|
|||
``` |
|||
cryptpad_1 | Linking config.js |
|||
cryptpad_1 | Using secure websockets: true |
|||
cryptpad_1 | Using storage adapter: './storage/file' |
|||
cryptpad_1 | sed: -e expression #1, char 27: unknown option to `s' |
|||
``` |
|||
|
|||
## 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. |
|||
|
|||
## Run |
|||
|
|||
With docker |
|||
|
|||
``` |
|||
docker build -t xwiki/cryptpad . |
|||
docker -d --name cryptpad -p 3000:3000 -v ${PWD}/data:/cryptpad/datastore xwiki/cryptpad |
|||
``` |
|||
|
|||
With docker-compose |
|||
|
|||
``` |
|||
docker-compose up -d |
|||
``` |
|||
|
|||
|
|||
## Persistance |
|||
|
|||
The docker-compose file is preconfigured to persist folders |
|||
|
|||
- cryptpad/datastore --> ./data/customize |
|||
- cryptpad/customize --> ./data/customize |
|||
|
|||
In customize included find your configuration in `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](https://traefik.io/) 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](https://hub.docker.com/_/traefik/) |
|||
|
|||
Alternativly just use plain old nginx. |
|||
@ -0,0 +1,23 @@ |
|||
version: '2' |
|||
services: |
|||
|
|||
cryptpad: |
|||
build: |
|||
context: . |
|||
args: |
|||
- VERSION=${VERSION} |
|||
image: "xwiki/cryptpad:${VERSION}" |
|||
hostname: cryptpad |
|||
|
|||
labels: |
|||
- traefik.port=3000 |
|||
- traefik.frontend.passHostHeader=true |
|||
environment: |
|||
- USE_SSL=${USE_SSL} |
|||
- STORAGE=${STORAGE} |
|||
- LOG_TO_STDOUT=${LOG_TO_STDOUT} |
|||
|
|||
restart: always |
|||
volumes: |
|||
- ./data/files:/cryptpad/datastore:rw |
|||
- ./data/customize:/cryptpad/customize:rw |
|||
Write
Preview
Loading…
Cancel
Save