Kanboard is a free and open-source project management system that visualizes the work and manages project goals. It provides a simple and user-friendly web interface that allows you to create and manage projects and tasks via a web browser. It helps beginner users to build and manage content from every device. It supports multiple authentication methods, including LDAP, Active Directory, and other OAuth2 providers.

In this post, we will show you how to install Kanboard project management software on Oracle Linux 8.

Step 1 – Install LEMP Server

First, install the Nginx and MariaDB servers by running the following command:

dnf install nginx mariadb-server -y

Next, you will need to install PHP version 7.4 or higher on your server. First, enable the PHP7.4 module with the following command:

dnf module enable php:7.4

Next, install PHP and other required PHP extensions using the following command:

dnf install php php-fpm php-mbstring php-cli php-json php-opcache php-zip php-xml php-gd php-ldap php-mysqli php-sqlite3 php-json php-dom -y

Once all the packages are installed, verify the PHP version with the following command:

php --version

You should see the following output:

PHP 7.4.19 (cli) (built: May  4 2021 11:06:37) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.19, Copyright (c), by Zend Technologies

Next, edit the PHP-FPM configuration file and change the user from apache to nginx:

nano /etc/php-fpm.d/www.conf

Change the following lines:

user=nginx
group=nginx

Save and close the file, then start and enable Nginx, MariaDB and PHP-FPM services:

systemctl start nginx php-fpm mariadb
systemctl enable nginx php-fpm mariadb

Step 2 – Create a Database for Kanboard

Next, you will need to create a database and user for Kanboard.

First, log in to your MariaDB console with the following command:

mysql

Next, create a database and user with the following command:

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

Next, flush the privileges and exit from the MariaDB console with the following command:

FLUSH PRIVILEGES;
EXIT;

Step 3 – Download Kanboard

Next, download the latest version of Kanboard from the GitHub repository.

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

After the successful download, extract the downloaded file:

tar -xvzf v1.2.22.tar.gz

Next, move the extracted directory to the Nginx web root:

mv kanboard-1.2.22 /var/www/html/kanboard

Next, navigate to the Kanboard directory and copy the default configuration file:

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

Next, edit the config.php file and define your database settings:

nano config.php

Change the following lines:

// 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 and close the file, then change the ownership and permissions of the Kanboard directory:

chown -R nginx:nginx /var/www/html/kanboard
chmod -R 775 /var/www/html/kanboard

Step 4 – Create an Nginx Virtual Host for Kanboard

Next, create an Nginx virtual host configuration file for Kanboard:

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

Add the following configurations:

server {
        listen       80;
        server_name  kanban.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:/run/php-fpm/www.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, then edit the Nginx configuration file:

nano /etc/nginx/nginx.conf

Add the following line below http {:

server_names_hash_bucket_size 64;

Save and close the file, then verify the Nginx configuration using the following command:

nginx -t

You should see the following output:

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

Finally, restart the Nginx service to apply the changes:

systemctl restart nginx

You can also check the Nginx status with the following command:

systemctl status nginx

You will get the following output:

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           └─php-fpm.conf
   Active: active (running) since Tue 2022-08-23 01:45:03 EDT; 7min ago
 Main PID: 4001 (nginx)
    Tasks: 2 (limit: 11409)
   Memory: 4.6M
   CGroup: /system.slice/nginx.service
           ├─4001 nginx: master process /usr/sbin/nginx
           └─4002 nginx: worker process

Aug 23 01:45:03 oraclelinux8 systemd[1]: nginx.service: Succeeded.
Aug 23 01:45:03 oraclelinux8 systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Aug 23 01:45:03 oraclelinux8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Aug 23 01:45:03 oraclelinux8 nginx[3997]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Aug 23 01:45:03 oraclelinux8 nginx[3997]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Aug 23 01:45:03 oraclelinux8 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Aug 23 01:45:03 oraclelinux8 systemd[1]: Started The nginx HTTP and reverse proxy server.

Step 5 – Access Kanboard Web Interface

At this point, Kanboard is installed and configured on your server. You can now access it using the URL http://kanboard.example.com. You will be redirected to the Kanboard login page:
Kanban login page

Provide default admin username and password as admin / admin then click on the Sign in button. You should see the Kanboard dashboard on the following page:
Kanban dashboard page

Conclusion

In this post, we explained how to install and configure Kanboard project management software on Oracle Linux 8. You can now implement Kanboard in your organization and start managing projects and tasks from the central location. Get started with Kanban on VPS Hosting from Atlantic.Net!