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).
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
mysqldumpormariadb-dump - Configure PHP
session.cookie_secure = 1andsession.cookie_httponly = 1for session security - Set
upload_max_filesizeandpost_max_sizeinphp.iniif 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.