Linux Tutorials

Install Kanboard on Ubuntu 24.04 with Nginx

Kanboard is a free, open-source project management tool that uses the Kanban methodology to help teams visualize their workflows. It gives you a simple drag-and-drop board interface, task tracking, time tracking, analytics, and plugin support – all self-hosted on your own server. The latest release is Kanboard v1.2.51, released in March 2026.

This guide walks through installing Kanboard on Ubuntu 24.04 LTS with Nginx as the web server, MariaDB as the database backend, and PHP 8.3. We also cover SSL setup with Let’s Encrypt and firewall configuration.

Prerequisites

  • A server running Ubuntu 24.04 LTS with root or sudo access
  • A registered domain name pointed to your server IP (for SSL)
  • At least 1GB RAM and 1 CPU core
  • Ports 80 (HTTP) and 443 (HTTPS) open in your firewall

Step 1: Install PHP and Required Extensions

Kanboard requires PHP 8.1 or later with several extensions. Ubuntu 24.04 ships PHP 8.3 in its default repositories, which works well. Install PHP-FPM along with the required extensions.

Update the package index first:

sudo apt update

Install PHP 8.3 and the extensions Kanboard needs for database connectivity, image handling, caching, and JSON processing:

sudo apt install -y php8.3-fpm php8.3-mysql php8.3-gd php8.3-mbstring php8.3-xml php8.3-curl php8.3-zip php8.3-opcache php8.3-intl php8.3-ldap

If you need a deeper walkthrough on setting up Nginx with PHP-FPM on Ubuntu, check that guide for additional configuration options.

Verify that PHP-FPM is running:

systemctl status php8.3-fpm

You should see the service as active (running):

● php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager
     Loaded: loaded (/usr/lib/systemd/system/php8.3-fpm.service; enabled; preset: enabled)
     Active: active (running)

Step 2: Install MariaDB Database Server

Kanboard supports SQLite (default), MariaDB/MySQL, and PostgreSQL. SQLite works fine for small teams, but MariaDB is the better choice for production environments with multiple concurrent users. Install MariaDB on Ubuntu from the default repositories:

sudo apt install -y mariadb-server mariadb-client

Enable and start MariaDB:

sudo systemctl enable --now mariadb

Run the security hardening script to set a root password, remove anonymous users, and disable remote root login:

sudo mariadb-secure-installation

Answer the prompts – set a strong root password and accept the defaults (Y) for all security questions.

Step 3: Create Kanboard Database and User

Log into the MariaDB shell and create a dedicated database and user for Kanboard. Replace StrongPassword123 with a secure password of your own.

sudo mariadb -u root -p

Run the following SQL statements to create the database and grant privileges:

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 4: Download and Install Kanboard

Download the latest Kanboard release (v1.2.51) from the official GitHub repository and extract it to your web root directory.

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 directory:

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

Verify the files are in place:

ls /var/www/kanboard/

You should see the Kanboard directory structure including app, config.default.php, plugins, and other project files.

Step 5: Configure Kanboard

Create the Kanboard configuration file from the default template. This file controls database settings, caching, and application behavior.

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 and update the database driver and connection settings. Change the driver from sqlite to mysql and set the credentials you created in Step 3:

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

// MySQL/MariaDB 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 Virtual Host for Kanboard

Install Nginx if it is not already present on your system:

sudo apt install -y nginx

Create an Nginx server block configuration for Kanboard. Replace kanboard.example.com with your actual domain name:

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

Add the following virtual host configuration:

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

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

    # Deny access to the data directory
    location /data {
        deny all;
    }

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

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
    }

    # Deny access to hidden files
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

Enable the site and remove the default virtual host:

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

Test the Nginx configuration for syntax errors:

sudo nginx -t

The output should confirm the configuration is valid:

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

Restart Nginx to apply the changes:

sudo systemctl restart nginx

Step 7: Set File Permissions

Kanboard needs write access to the data directory for file uploads, sessions, and the SQLite database (if used as fallback). Set ownership to the Nginx worker user:

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

Also set proper ownership on the plugins directory so you can install plugins through the web interface later:

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

Step 8: Access Kanboard Web Interface

Open your browser and navigate to your domain – http://kanboard.example.com. You should see the Kanboard login page. Log in with the default administrator credentials:

  • Username: admin
  • Password: admin

Change the default admin password immediately after your first login. Go to the user icon in the top right, select My profile, then click Change password. Using the default credentials in production is a serious security risk.

After logging in, you can create your first project by clicking New project from the dashboard. The Kanboard documentation covers project setup, swimlanes, task automation, and plugin installation.

Step 9: Configure SSL with Let’s Encrypt

Running Kanboard over plain HTTP exposes your login credentials and project data in transit. Install Certbot to get a free SSL certificate from Let’s Encrypt.

sudo apt install -y certbot python3-certbot-nginx

Request and install the certificate. Certbot automatically modifies your Nginx configuration to serve traffic over HTTPS and sets up a redirect from HTTP to HTTPS:

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

Follow the prompts – enter your email address and agree to the terms of service. Choose to redirect all HTTP traffic to HTTPS when asked.

Certbot installs a systemd timer that handles automatic renewal. Verify the renewal timer is active:

sudo systemctl status certbot.timer

You should see the timer enabled and active:

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

Test that renewal works without errors:

sudo certbot renew --dry-run

Step 10: Configure UFW Firewall

Ubuntu 24.04 comes with UFW (Uncomplicated Firewall). Allow SSH access along with HTTP and HTTPS traffic for Nginx:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'

Enable the firewall if it is not already active:

sudo ufw enable

Verify the firewall rules are in place:

sudo ufw status

The output should show ports 22, 80, and 443 allowed:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Conclusion

You now have Kanboard v1.2.51 running on Ubuntu 24.04 with Nginx, PHP 8.3, and MariaDB. The application is secured with a Let’s Encrypt SSL certificate and a properly configured firewall.

For production use, set up regular database backups with mariadb-dump, configure email notifications in Kanboard settings, and consider enabling two-factor authentication for all user accounts. Monitor your server resources and PHP-FPM pool settings as your team grows.

Related Articles

Automation Install JFrog Artifactory on Ubuntu 22.04|20.04|18.04 Databases How To Install Microsoft SQL Server 2022 on Ubuntu 20.04 Security Secure OpenLDAP Server with SSL/TLS on Ubuntu 22.04|20.04|18.04 Debian Install Node.js 18 on Ubuntu / Debian / Linux Mint

Press ESC to close