How to setup Wekan using docker-compose in just 3 minutes
First, create a directory for the Wekan files to reside in, e.g.:
mkdir /opt/wekan
Change to that directory:
cd /opt/wekan
Now, we need to create the data directory which needs to be owned by UID 999
: in order for Wekan to store uploads:
mkdir -p wekan_data && chown -R 999:999 wekan_data
Now, create docker-compose.yml
in that directory
services:
wekandb:
restart: always
image: mongo:5
command: mongod --logpath /dev/null --oplogSize 128 --quiet
healthcheck:
test: ["CMD", "mongo", "--quiet", "--eval", "'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)'"]
interval: 15s
timeout: 10s
retries: 3
start_period: 10s
volumes:
- ./wekan-db:/data/db
- ./wekan-db-dump:/dump
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
wekan:
image: quay.io/wekan/wekan
restart: always
ports:
- 7972:8080
environment:
- MONGO_URL=mongodb://wekandb:27017/wekan
- ROOT_URL=${URL}
- MAIL_URL=${EMAIL_URL}
- MAIL_FROM=${EMAIL_FROM}
- WITH_API=true
- WRITABLE_PATH=/data
volumes:
- ./wekan_data:/data
- /etc/localtime:/etc/localtime:ro
depends_on:
- wekandb
After that, create .env
in said directory containing some info about your node:
URL=https://wekan.mydomain.com
EMAIL_URL=smtp://noreply%40mydomain.com:[email protected]:25/
EMAIL_FROM='My Wekan <[email protected]>'
Now we’ll use the script from Create a systemd service for your docker-compose project in 10 seconds in order to create a systemd service to automatically run the service:
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin
This script will also automatically start the service (i.e. docker-compose up
).
Now you can setup your reverse proxy to point your domain - e.g. wekan.techoverflow.net
to port 7972
(or change that port in docker-compose.yml
). Which reverse proxy you use doesn’t matter all too much, I use both nginx and traefik. I will cover the configuration for these reverse proxies in future posts.
Once you can access Wekan, you can register as a new user. The first user will be an admin and can also disable registration using the Web UI.