How to Create a Minimalist Kanban in Linux with Kanboard

A photography of two people holding a series of sticky notes.

Kanboard is a lightweight kanban project tracker that you can host on your own server. Unlike other kanban trackers, it aims to create a simple and intuitive interface that you can access from anywhere.

This article will show you how you can install Kanboard in Ubuntu 22.04. It will also highlight the process of extending Kanboard using community plugins.

Why Use Kanboard?

One of the biggest advantages of Kanboard is that it can work on almost any server through the magic of Docker. As a result, hosting Kanboard is both painless and easy even for non-technical users.

Aside from that, Kanboard also comes with a flexible plugins platform. This includes the ability to create tags, track time and run custom scripts. For example, you can create a plugin that updates the properties of each card depending on its content.

A screenshot of a working Kanboard instance.

Tip: Learn how to be efficient and effective at prioritizing tasks by understanding the Eisenhower Matrix.

Installing Kanboard

  1. The first step in installing Kanboard is to make sure that your system is up to date. You can do this by running the following command:
sudo apt update
sudo apt upgrade
  1. Install the Docker project’s third-party repository key:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
sudo chmod a+r /etc/apt/trusted.gpg.d/docker.gpg
  1. Create a new apt repository file using your favorite text editor:
sudo nano /etc/apt/sources.list.d/docker.list
  1. Write the repository information for the official Docker repository:
deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable
  1. Save your new repository file by pressing Ctrl + O, then Ctrl + X.
  1. Update your system’s repository details by running the following command:
sudo apt update
  1. Install Docker engine along with its dependencies using apt:
sudo apt install wget docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin

Obtaining Kanboard

Once you have Docker engine properly installed, the next thing to do is to fetch the Docker Compose script for Kanboard. This is a small text file that contains a list of options that will tell Docker how to automatically create Kanboard.

  1. Create a separate folder in your home directory for Kanboard:
mkdir ~/kanboard
cd ~/kanboard
  1. Create a new text file with the name “docker-compose.yml” through your favorite text editor:
nano ~/kanboard/docker-compose.yml
  1. Copy the following block of code and paste it inside your “docker-compose.yml” file:
version: '2'
services:
  kanboard:
    image: kanboard/kanboard:latest
    ports:
      - 8080:80
    volumes:
      - kanboard_data:/var/www/app/data
      - kanboard_plugins:/var/www/app/plugins
    environment:
      DATABASE_URL: mysql://kanboard:!#REPLACE-ME@db/kanboard
      PLUGIN_INSTALLER: true
  db:
    image: mariadb:latest
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: !#REPLACE-ME
      MYSQL_DATABASE: kanboard
      MYSQL_USER: kanboard
      MYSQL_PASSWORD: !#REPLACE-ME
    volumes:
    - db:/var/lib/mysql
volumes:
  kanboard_data:
  kanboard_plugins:
  db:
  1. Open a new terminal and generate a secure password using the following command:
cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 16 | head -n 1
  1. Go back to your previous terminal and paste your secure password to every instance of “#!REPLACE-ME” inside the file.
A terminal showing a working Docker compose file for Kanboard.
  1. Save and exit your “docker-compose.yml” file by pressing Ctrl + O, then Ctrl + X.
  1. You can now build your Kanboard docker container by running the following command:
docker compose up -d
A terminal the building process for Docker Compose.

Good to know: Learn how you can create an offline Kanban board using Obsidian.md today.

Setting Up Kanboard for SSL

At this point, you now have a partially working Kanboard installation. However, in order to access it securely, you need to first create an Nginx reverse proxy. This will serve as your web-facing server that provides load balancing and SSL.

  1. Install the Nginx webserver:
sudo apt install nginx
  1. Create a site configuration file for your Nginx reverse proxy:
sudo nano /etc/nginx/sites-available/kanboard
  1. Copy and paste the following block of code inside your new site configuration file:
server {
    listen 80;
    listen [::]:80;
 
    root                    /var/www/html;
    server_name             my-kanban-domain-url.com;
 
    location / {
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    Host $http_host;
        proxy_pass          http://localhost:8080;
    }
}

Note: replace “my-kanban-domain-url.com” with the actual domain name.

  1. Create a symbolic link for your Kanboard reverse proxy:
sudo ln -s /etc/nginx/sites-available/kanboard /etc/nginx/sites-enabled/kanboard
  1. Reload your Nginx service daemon:
sudo systemctl reload nginx.service

Obtaining an SSL Certificate for Kanboard

With your reverse proxy up, you can now request an SSL certificate for your Kanboard. This section shows you how to obtain a free certificate through the Electronic Frontier Foundation’s (EFF) Certbot.

  1. To begin, you need to install and update your system’s core snap daemon:
sudo snap install core
sudo snap refresh core
  1. Install the certbot snap package:
sudo snap install --classic certbot
  1. Create a symbolic link between the certbot snap binary and your system’s default binary directory:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
  1. Test if certbot is running by using it to register itself to the EFF:
sudo certbot register --agree-tos --email ramces@email.invalid
  1. Generate an SSL certificate for your domain name by running the following command:
sudo certbot

Choose the domain from the entry and it will do its job to generate SSL for your domain.

Good to know: Learn more about encryption over the internet by creating your own self-signed SSL certificate.

Logging In and Creating A Kanban Board

You can now use Kanboard for creating and managing Kanban boards. To do that, login to your Kanboard instance by accessing its domain name from a web browser.

  1. Use “admin” as the username and password in the login screen.
  2. Click “New project” to create a public Kanban board.
A screenshot highlighting the "New project" link in the Kanboard server.
  1. Provide a name and URL slug for your new board.
  2. Click “Public Access” on the page’s left sidebar.
A screenshot highlighting the "Public Access" link for the Kanban board.
  1. Click the blue “Enable Public Access” button. This will create an RSS feed and a publicly viewable link that you can share with non-Kanboard users.
A screenshot showing the "Enable public access" button in Kanboard.
  1. Click the “Board” button on the page’s upper left corner to access and create new items in your board.
A screenshot showing a public Kanban board running.

Creating a User for Collaborative Kanban Boards

Aside from sharing publicly accessible “view-only” boards, you can also use Kanboard to create collaborative “task” boards between multiple local users.

  1. Click the Admin user’s icon on the page’s upper right corner, then select “User management.”
A screenshot highlighting the "Users management" submenu in the Dashboard.
  1. Click the “New User” link along the page’s upper left sidebar.
  2. This will bring up a small dialog prompt where Kanboard will ask you for the username and password of your new user.
A screenshot showing the New User form in Kanboard.
  1. Scroll down to the bottom of the prompt and click the drop-down box under the “Projects” category.
A screenshot showing the "Projects" subcategory in the Kanboard "New User" form.
  1. Select the Kanban board that you want the user to be a part of.
A screenshot showing the board selection for the new user.
  1. Click “Save” to create your new user account.
A screenshot showing the Save button for the New User prompt.

Customizing Your Kanban Board with Plugins

One of the brilliant features of Kanboard is that it provides a framework to extend your board beyond its basic features. This means that you do not need to rely on the developers to include a custom feature for your server.

  1. To add a new plugin, click the Admin user’s icon on the page’s upper right corner, then select “Plugins.”
A screenshot highlighting the "Plugins" subcategory in the Admin User's dashboard.
  1. Click the “Plugin Directory” category on the page’s left sidebar.
A screenshot showing the "Plugin Directory" subcategory inside the Plugins submenu.
  1. Find a plugin that you want to install in your Kanboard server. In my case, I will install “MarkdownPlus” to extend the basic Markdown in my server.
A screenshot showing the available plugins in Kanboard.
  1. Click “Install”, then refresh the webpage to properly load the plugin in your server.
A screenshot highlighting the "Install" button for the MarkdownPlus plugin.

FYI: Kanban is not the only way to manage tasks and data. Learn how you can optimize your To Do lists and data using Todoist today.

Frequently Asked Questions

Is it possible to backup the contents of my Kanban board?

Yes. To backup a specific Kanban board, click the gear icon on the board that you want to export then click “Exports.”

This will bring up a small prompt where Kanboard will ask you for a date range that you want to export. Provide a start and end date, then click “Export.”

Is it possible to reset my Kanban board's "locked down" period?

Yes. It is possible to reset a particular user’s locked-out timer in Kanboard. To do this, click the Admin user’s icon on the page’s upper right corner. Next, select the “Users management” item then click the name of the locked-out user. Lastly, go to the “Security” category and click “Unlock this user.”

Is it possible to modify the config.php file inside my Kanboard container?

Yes. However, doing this could potentially ruin the consistency of your Docker image. Instead, the developers of the program suggest that you use the environment variables inside your docker-compose.yml file when configuring the values of your Kanboard instance.

Image credit: Eden Constantino via Unsplash. All alterations and screenshots by Ramces Red.

Is this post useful?
Subscribe to our newsletter!

Our latest tutorials delivered straight to your inbox

Ramces Red
Ramces Red - Staff Writer

Ramces is a technology writer that lived with computers all his life. A prolific reader and a student of Anthropology, he is an eccentric character that writes articles about Linux and anything *nix.