diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ca34b7a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM node:latest + +WORKDIR /app +ADD . . +RUN npm install + +ENTRYPOINT ["node"] +CMD [ "index.js" ] \ No newline at end of file diff --git a/README.md b/README.md index e9cd6cd..4d43d6e 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,15 @@ The idea is that an identity provider such as an email provider can host their o Try out the server here: [https://keys.mailvelope.com](https://keys.mailvelope.com) +### Get started +``` +docker-compose up +docker-compose exec -it mongodb bash +mongo -u keyserver_user -p keyserver_pass +use keyserver_db +db.createUser({ user:"keyserver_user", pwd:"keyserver_pass", roles:[{ role:"readWrite", db:"keyserver_db" }] }) +``` # API diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..616ef33 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,40 @@ +version: '3' + +services: + mongodb: + image: mongo + volumes: + - mongo-data:/data/db + networks: + - backend + env_file: + - env.sample + + mailhog: + image: mailhog/mailhog + ports: + - 8025:8025 + networks: + - backend + + keyserver: + build: + context: . + args: + USER_ID: ${USER_ID:-1000} + ports: + - "3000:3000" + depends_on: + - mongodb + - mailhog + networks: + - backend + env_file: + - env.sample + +volumes: + mongo-data: + driver: local + +networks: + backend: \ No newline at end of file diff --git a/env.sample b/env.sample new file mode 100644 index 0000000..2ddd00a --- /dev/null +++ b/env.sample @@ -0,0 +1,33 @@ +LOG_LEVEL=debug +PORT=3000 +PAPERTRAIL_HOST='' +PAPERTRAIL_PORT='' + +# docker-compose exec -it mongodb bash +# mongo -u keyserver_user -p keyserver_pass +# use keyserver_db +# db.createUser({ user:"keyserver_user", pwd:"keyserver_pass", roles:[{ role:"readWrite", db:"keyserver_db" }] }) + +MONGO_URI=mongodb:27017/keyserver_db +MONGO_USER=keyserver_user +MONGO_PASS=keyserver_pass +MONGO_INITDB_ROOT_USERNAME=keyserver_user +MONGO_INITDB_ROOT_PASSWORD=keyserver_pass + +SENDER_NAME=keyserver +SENDER_EMAIL=keyserver@example.com + +SMTP_HOST=mailhog +SMTP_PORT=1025 +SMTP_TLS=false + +SMTP_STARTTLS='' +SMTP_PGP='' +SMTP_USER='' +SMTP_PASS='' + +HTTPS_UPGRADE=false +HTTPS_KEY_PIN='' +HTTPS_KEY_PIN_BACKUP='' + +PUBLIC_KEY_PURGE_TIME=30