adding docker and docker-compose
parent
4476fd4006
commit
d8c18d0937
@ -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
|
Loading…
Reference in New Issue