How To

Install Kanboard on Ubuntu 24.04 / 22.04 with Nginx and SSL

Kanboard is a free and open source project management tool that uses the Kanban methodology to help teams visualize workflows and limit work in progress. It runs as a lightweight PHP web application with support for multiple databases, plugins, and a clean drag-and-drop interface for managing tasks across boards. The project is actively maintained on GitHub with regular security and feature releases – the latest being version 1.2.51 (March 2025).

Original content from computingforgeeks.com - post 83486

This guide covers installing Kanboard on Ubuntu 24.04 or 22.04 with Nginx as the web server, MariaDB as the database backend, PHP 8.x, and Let’s Encrypt SSL for HTTPS. By the end you will have a fully working Kanboard instance accessible over a secure connection.

Prerequisites

  • A server running Ubuntu 24.04 or 22.04 LTS with at least 1 GB RAM
  • Root or sudo access
  • A registered domain name pointed to your server’s public IP (for SSL)
  • Ports 80 and 443 (TCP) open in your firewall

Step 1: Update the System

Start by updating the package index and upgrading installed packages to get the latest security patches.

sudo apt update && sudo apt upgrade -y

Step 2: Install Nginx Web Server

Install Nginx from Ubuntu’s default repositories. If you need a detailed walkthrough on Nginx configuration on Ubuntu, check our dedicated guide.

sudo apt install nginx -y

Enable and start the service so it runs on boot:

sudo systemctl enable --now nginx

Confirm Nginx is running:

sudo systemctl status nginx

The output should show active (running):

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since ...

Step 3: Install PHP and Required Extensions

Kanboard requires PHP 8.1 or newer. Ubuntu 24.04 ships PHP 8.3 and Ubuntu 22.04 ships PHP 8.1 in the default repositories – both meet the requirement. Install PHP-FPM along with the extensions Kanboard needs:

sudo apt install php-fpm php-mysql php-gd php-mbstring php-xml php-zip php-curl php-json php-opcache -y

Verify the installed PHP version:

php -v

On Ubuntu 24.04, you should see PHP 8.3.x confirmed:

PHP 8.3.6 (cli) (built: Mar 2025)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies

For a more in-depth look at installing and tuning PHP on Ubuntu, see our guide on Nginx with PHP-FPM on Ubuntu.

Step 4: Install and Configure MariaDB

Install MariaDB server. Kanboard also supports SQLite (the default) and PostgreSQL, but MariaDB is a solid choice for multi-user setups.

sudo apt install mariadb-server mariadb-client -y

Enable and start MariaDB:

sudo systemctl enable --now mariadb

Run the security hardening script to set a root password and remove test databases:

sudo mysql_secure_installation

Answer the prompts – set a strong root password, remove anonymous users, disallow remote root login, and remove the test database. For a detailed MariaDB setup, check our MariaDB installation guide on Ubuntu.

Create the Kanboard Database and User

Log in to MariaDB and create a dedicated database and user for Kanboard:

sudo mysql -u root -p

Run the following SQL statements inside the MariaDB prompt. Replace StrongPassword123 with your own secure password:

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

Step 5: Download and Install Kanboard

Download the latest Kanboard release from GitHub. At the time of writing, the current version is 1.2.51.

cd /tmp
wget https://github.com/kanboard/kanboard/archive/refs/tags/v1.2.51.tar.gz

Extract the archive and move it to the web root:

tar xzf v1.2.51.tar.gz
sudo mv kanboard-1.2.51 /var/www/kanboard

Set the correct ownership so Nginx (running as www-data) can read and write files:

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

Configure Kanboard to Use MariaDB

Kanboard uses SQLite by default. To switch to MariaDB, create a local configuration file:

sudo cp /var/www/kanboard/config.default.php /var/www/kanboard/config.php

Open the configuration file:

sudo vi /var/www/kanboard/config.php

Find the database driver line and change it from sqlite to mysql. Then update the MySQL connection settings to match the database you created earlier:

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

// MySQL connection parameters
define('DB_USERNAME', 'kanboard');
define('DB_PASSWORD', 'StrongPassword123');
define('DB_HOSTNAME', 'localhost');
define('DB_NAME', 'kanboard');
define('DB_PORT', '3306');

Save and close the file.

Step 6: Configure Nginx for Kanboard

Create an Nginx server block for your Kanboard domain. Replace kanboard.example.com with your actual domain name throughout this section.

sudo vi /etc/nginx/sites-available/kanboard

Add the following configuration. Note the PHP-FPM socket path – on Ubuntu 24.04 it is php8.3-fpm.sock, on Ubuntu 22.04 use php8.1-fpm.sock:

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

    # Logs
    access_log /var/log/nginx/kanboard_access.log;
    error_log /var/log/nginx/kanboard_error.log;

    # Deny access to sensitive files
    location ~ /(\.|config\.php|config\.default\.php) {
        deny all;
        return 404;
    }

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

    location ~ \.php$ {
        include fastcgi_params;
        # Ubuntu 24.04: php8.3-fpm.sock
        # Ubuntu 22.04: php8.1-fpm.sock
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # Cache static assets
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

Enable the site and remove the default Nginx page:

sudo ln -s /etc/nginx/sites-available/kanboard /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default

Test the Nginx configuration for syntax errors:

sudo nginx -t

You should see a successful test result:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reload Nginx to apply the changes:

sudo systemctl reload nginx

Step 7: Configure UFW Firewall

Allow HTTP and HTTPS traffic through the firewall. If UFW is not enabled yet, enable it first:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Verify the firewall rules are active:

sudo ufw status

The output should show both ports allowed:

Status: active

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Step 8: Secure Kanboard with Let’s Encrypt SSL

Install Certbot and the Nginx plugin to obtain a free SSL certificate from Let’s Encrypt:

sudo apt install certbot python3-certbot-nginx -y

Request a certificate for your domain. Certbot will automatically configure Nginx to redirect HTTP to HTTPS:

sudo certbot --nginx -d kanboard.example.com

Follow the prompts to enter your email and agree to the terms. Certbot modifies your Nginx configuration to add SSL listeners on port 443 and sets up automatic certificate renewal via a systemd timer.

Verify the renewal timer is active:

sudo systemctl status certbot.timer

The timer should show as active, running renewal checks twice daily:

● certbot.timer - Run certbot twice daily
     Loaded: loaded (/usr/lib/systemd/system/certbot.timer; enabled; preset: enabled)
     Active: active (waiting) since ...

You can also test the renewal process without actually renewing:

sudo certbot renew --dry-run

Step 9: Access Kanboard and Create Your First Project

Open your browser and navigate to https://kanboard.example.com. You should see the Kanboard login page. The default admin credentials are:

  • Username: admin
  • Password: admin

Change the default admin password immediately after logging in. Go to the user menu (top right) and select “My profile” to update your password.

Create a New Project

After logging in, click “New project” on the dashboard. Give it a name and description, then click “Save”. Kanboard creates a default board with columns like Backlog, Ready, Work in progress, and Done.

Add Tasks to Your Board

Click the “+” button on any column to add a new task. Fill in the title, assign it to a user, set a due date and color if needed. Tasks can be dragged between columns as work progresses. You can also add subtasks, comments, attachments, and time tracking entries to each task.

Manage Users and Permissions

From the admin panel (Settings icon), go to “Users” to create additional user accounts. Kanboard supports three roles – Admin, Manager, and Member. Managers can create and configure projects while members can only work on tasks assigned to them.

Kanboard Production Hardening Tips

Before using Kanboard in production, consider these additional steps:

  • Enable Kanboard plugins for email notifications, LDAP authentication, or calendar sync
  • Set up regular database backups using mysqldump or mariadb-dump
  • Configure PHP session.cookie_secure = 1 and session.cookie_httponly = 1 for session security
  • Set upload_max_filesize and post_max_size in php.ini if you need larger file attachments
  • Install additional PHP applications on Nginx like WordPress alongside Kanboard if needed

Conclusion

You now have Kanboard running on Ubuntu 24.04 or 22.04 with Nginx, MariaDB, and Let’s Encrypt SSL. The setup gives you a lightweight yet capable project management tool accessible over HTTPS. For ongoing maintenance, keep Kanboard updated by downloading new releases from the official GitHub releases page and replacing the files in /var/www/kanboard while preserving your config.php and data/ directory.

Related Articles

Prometheus Monitor Redis Server with Prometheus and Grafana in 5 minutes Email Install Mailu mail server on Ubuntu 22.04|20.04|18.04 Debian Install Wine 9 on Ubuntu 24.04 / Linux Mint 22 / Debian 13 Debian How To Install WildFly (JBoss) on Ubuntu 22.04|20.04|18.04

Press ESC to close