Installing Kanboard Project Management Software on Debian 10

Kanboard is a powerful, open-source, self-hosted project management tool designed for effective project tracking with Kanban methodology. It facilitates workflow visualization, limits work in progress, and enhances productivity through a customizable web interface. Additionally, Kanboard’s functionality is extendable via plugins and third-party services.

This guide will provide you step-by-step instructions on installing and configuring Kanboard on Debian 10.

Requirements

  • A server running Debian 10
  • Root access to the server

Getting Started

Start by updating your system with the latest version of available packages. Use the following command:

apt-get update -y
apt-get upgrade -y

After updating, restart your server to apply the configuration changes.

Install LEMP Stack

Kanboard is built on a web server using PHP with MariaDB as the database. Therefore, you need to install Nginx, MariaDB, PHP, and related PHP modules:

apt-get install nginx mariadb-server php7.3 php7.3-common php7.3-cli php7.3-fpm php7.3-mbstring php7.3-json php7.3-opcache php7.3-zip php7.3-xml php7.3-gd php7.3-ldap php7.3-mysql php7.3-json php7.3-sqlite3

After the installation, start and enable Nginx and MariaDB services to initiate at every system boot:

systemctl start nginx
systemctl start mariadb
systemctl enable nginx
systemctl enable mariadb

Secure and Configure MariaDB

It’s crucial to secure MariaDB by running the following script:

mysql_secure_installation

For questions during the script execution, use the responses below:

    Enter current password for root (enter for none): 
    Set root password? [Y/n]: N
    Remove anonymous users? [Y/n]: Y
    Disallow root login remotely? [Y/n]: Y
    Remove test database and access to it? [Y/n]: Y
    Reload privilege tables now? [Y/n]: Y

Following the security setup, log into the MariaDB shell:

mysql -u root -p

After entering your password, create a database and user for Kanboard:

 
CREATE DATABASE kanboard CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
GRANT ALL PRIVILEGES ON kanboard.* TO 'kanboard'@'localhost' IDENTIFIED BY 'mypassword'; 
FLUSH PRIVILEGES;

Substitute mypassword with a secure password of your choice. Exit the MariaDB shell:

exit;

Install Kanboard

Download the latest version of Kanboard from the GitHub repository:

wget https://github.com/kanboard/kanboard/archive/v1.2.10.tar.gz

Once downloaded, extract the archive:

tar -xvf v1.2.10.tar.gz

Move the extracted files to Apache’s web root directory:

cp -r kanboard-1.2.10 /var/www/html/kanboard

Copy the sample configuration file:

cd /var/www/html/kanboard
cp config.default.php config.php

Edit the config.php file with your preferred text editor:

nano config.php

Modify the database settings as follows:

// Database driver: sqlite, mysql or postgres (sqlite by default)
define('DB_DRIVER', 'mysql');

// Mysql/Postgres username
define('DB_USERNAME', 'kanboard');

// Mysql/Postgres password
define('DB_PASSWORD', 'password');

// Mysql/Postgres hostname
define('DB_HOSTNAME', 'localhost');

// Mysql/Postgres database name
define('DB_NAME', 'kanboard');

Save your changes and allocate proper permissions:

chown -R www-data:www-data /var/www/html/kanboard

Configure Nginx for Kanboard

Create a virtual host file for Kanboard in Nginx:

nano /etc/nginx/conf.d/kanboard.conf

Add the following configuration:

server {
        listen       80;
        server_name  example.com;
        index        index.php;
        root         /var/www/html/kanboard;
        client_max_body_size 32M;

        location / {
            try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_index index.php;
            include fastcgi_params;
        }

        location ~* ^.+\.(log|sqlite)$ {
            return 404;
        }

        location ~ /\.ht {
            return 404;
        }

        location ~* ^.+\.(ico|jpg|gif|png|css|js|svg|eot|ttf|woff|woff2|otf)$ {
            log_not_found off;
            expires 7d;
            etag on;
        }

        gzip on;
        gzip_comp_level 3;
        gzip_disable "msie6";
        gzip_vary on;
        gzip_types
            text/javascript
            application/javascript
            application/json
            text/xml
            application/xml
            application/rss+xml
            text/css
            text/plain;
    }

Save and close the file. Check for syntax errors in Nginx:

nginx -t

If everything is configured correctly, restart Nginx and php-fpm services:

systemctl restart nginx
systemctl restart php7.3-fpm

Verify Nginx’s status:

systemctl status nginx

Access Kanboard Web Interface

Having completed the installation and configuration, access Kanboard through your web browser at http://example.com. The login page should appear as follows:

Kanboard Login

Log in with the default credentials: username admin and password admin. The default dashboard will appear:

Kanboard admin dashboard

Immediately change the default password by navigating to Admin > Users Management > admin:

Kanboard user manager

Click the Change password button to proceed:

Change password

Enter your new password and click Save.

Congratulations! You have successfully installed and configured Kanboard on Debian 10. Manage your tasks seamlessly through the Kanboard web interface. Feel free to contact me if you have any questions.

FAQ

Q1: Can I change the database backend after installation?

A: Yes, you can change the database backend, but you need to edit the configuration file and migrate your existing data accordingly.

Q2: How do I install additional plugins?

A: You can install plugins by downloading them into the plugins directory of Kanboard and activating them in the application.

Q3: Is it possible to use HTTPS with Kanboard?

A: Yes, you can configure SSL certificates in Nginx to secure your Kanboard installation.

Q4: What should I do if I forget the admin password?

A: Resetting your admin password can be done directly through the database using SQL commands to update the user’s password hash.