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.