Infrastructure

How to Deploy Wekan 3.71 – Open Source Kanban Tool in Docker Swarm Behind Traefik v2.0

Wekan is an open-source kanban board that allows for card-based task and to-do management. Learn how to self-host it in a Docker Swarm cluster.

Rajasekhar Gundala··5 min read

Wekan is an open-source kanban board that allows for highly visual, card-based task and to-do management.

As I mentioned in my previous Rocket.Chat post, today I am going to show you how to deploy Wekan to our Docker Swarm Cluster using Docker Compose.

Prerequisites

Please ensure you fulfill the following requirements before proceeding with the deployment:

  1. A Docker Swarm Cluster configured with GlusterFS for persistent storage.
  2. Traefik v2.0 deployed as the ingress reverse proxy to expose microservices externally.
  3. A running MongoDB database stack to serve as the backend database for Wekan.

Introduction to Wekan

Wekan is a robust, open-source kanban board. It allows you to create Boards, on which Cards can be moved around between a number of Columns (or Lists).

Boards can have many members. You can assign colored Labels to cards to facilitate grouping and filtering, and you can add members to a card to officially assign a task to someone.

Why Choose Wekan?

Wekan is distributed under the MIT License, which means you can use it entirely for free and modify the source code if needed.

It is perfect for anyone that needs a slick, responsive kanban board but doesn’t want to rely on paid third-party services (like Trello), which take your data out of your control. Wekan can be hosted on your own server with very little effort, guaranteeing that you have full custody of your data. As long as you maintain backups, your workflow management will never just vanish overnight.

Core Features

  • Boards: A central list of all your public and private boards, complete with quick shortcuts at the top of the page.
  • Lists & Cards: The foundational elements for tracking granular tasks.
  • WIP Limits: Set a strict limit for the maximum number of tasks allowed in a specific list to prevent bottlenecking.
  • Trello Import: Seamlessly migrate your existing workflow directly from Trello.
  • Attachments & Checklists: Keep relevant files and sub-tasks attached directly to the overarching card.
  • Swimlanes: Separate boards horizontally to categorize workflows across different teams or priorities.
  • Rules (IFTTT): Automate actions similarly to Trello’s Butler (e.g., “If a card is moved here, assign to X”).
  • Custom Fields & Templates: Standardize your task creation.

You can view the full list of features on the Wekan GitHub Wiki.


Prepare the Deployment Environment

We will use Docker Compose to define the deployment environment.

Navigate to the /opt directory on your Swarm manager node and create the configuration directory for Wekan:

cd /opt
sudo mkdir -p wekan
cd wekan
sudo touch wekan.yml

Wekan Docker Compose Configuration

Open wekan.yml using your editor:

sudo nano wekan.yml

Paste the following Docker Compose configuration. I am using the mongo MongoDB service that was deployed earlier to our Swarm cluster as the backend storage system.

version: "3.7"

services:
  wekan:
    image: wekanteam/wekan:latest
    depends_on:
      - mongo
    environment:
      - PORT=9001
      - ROOT_URL=[https://kanban.example.com](https://kanban.example.com)
      - MONGO_URL=mongodb://mongo/wekan
      - MAIL_URL=smtp://[webmail.example.com:25/?ignoreTLS=true&tls=](https://webmail.example.com:25/?ignoreTLS=true&tls=){rejectUnauthorized:false}
      - MAIL_FROM=Wekan Notifications <noreply.wekan@example.com>
    networks:
      - proxy
    ports:
      - "9001:9001"
    deploy:
      placement:
        constraints: [node.role == worker]
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
      labels:
        - "traefik.enable=true"
        - "traefik.docker.network=proxy"
        - "traefik.http.routers.wekan.rule=Host(`kanban.example.com`)"
        - "traefik.http.routers.wekan.tls=true"
        - "traefik.http.routers.wekan.tls.certresolver=default"
        - "traefik.http.routers.wekan.entrypoints=websecure"
        - "traefik.http.services.wekan.loadbalancer.server.port=9001"

networks:
  proxy:
    external: true

I attached this service to the proxy Docker overlay network so it can be routed securely by the Traefik load balancer. Traefik will automatically handle the Let’s Encrypt SSL certificate.

Deploy Wekan to Docker Swarm

Deploy the stack to your Swarm using the following command:

docker stack deploy --compose-file wekan.yml wekan

In Docker Swarm, whatever you deploy via compose is called a “stack,” and it contains multiple “services.”

Check the status of the deployment to ensure it scheduled properly:

docker stack ps wekan

Access and Configure Wekan

Open your browser and navigate to kanban.example.com (ensure you replace example.com with your actual domain). Traefik will secure the connection and route you to the Wekan dashboard.

Ensure you have configured a DNS A-Record or CNAME pointing kanban.example.com to your Swarm ingress load balancer.

You will be greeted with the Admin account creation screen. Create an admin account by entering your desired username, email, and password. Once created, log in using those credentials.

Reference Images from the Deployment:

Wekan Stack PS

Wekan Create Admin Account

Wekan Login Screen

Wekan Admin Panel

Wekan Boards Window

Wekan Board Filter

Wekan StarBoard

Wekan Board Search

Wekan Board Views

Wekan Board Watch

Wekan Board Settings

Wekan Board Shortcuts

Wekan List Colors

Wekan Card Settings

Wekan Activity

We have successfully deployed a collaborative Kanban board to our Docker Swarm environment!

In the coming posts, I will show you how to deploy Flarum – an elegant open-source forum software. Stay tuned!

Share
Written by
Rajasekhar Gundala

Senior Infrastructure & Web Platform Leader.

Continue reading

Weekly Engineering Notes.

A weekly digest on infrastructure, observability, Rust, and the open web. No spam, just technical signals.

Free. Unsubscribe in one click.