This is a complete guide to install and configure Kanboard on CentOS 7 with Nginx web server, and optional Let’s Encrypt SSL certificate. Kanboard is a project management software that uses the Kanban methodology to help you visualize your workflow and complete tasks faster and efficiently.
Features of Kanboard
- It is a free and open source
- It enables you to customize your boards according to your business activities
- Has native support for reports and analytics
- You can have multiple projects with the ability to drag and drop tasks
- Provides an easy to use web dashboard that can be accessed from anywhere with a modern browser
- Capability to extend functionalities with plugins and integration to other external services
Kanboard on CentOS 7 setup
- Database – By default Kanboard use SQLite but we will use MariaDB which is recommended for large teams.
- Web Servers: We will install and configure Nginx.
- PHP 7.2
- Below are PHP extensions that will be can be installed:
PHP Extension | Note |
---|---|
pdo_sqlite | Only if you use SQLite |
pdo_mysql | Only if you use Mysql/MariaDB |
pdo_pgsql | Only if you use Postgres |
gd | |
mbstring | |
openssl | |
json | |
hash | |
ctype | |
session | |
filter | |
xml | |
SimpleXML | |
dom |
Optional PHP extensions
PHP Extension | Note |
---|---|
zip | Used to install plugins from the website |
ldap | Only for LDAP authentication |
Install Kanboard on CentOS 7
Follow the steps below to install Kanboard on CentOS 7.
Step 1: Install MariaDB database server
Install MariaDB database server on your CentOS 7 server using the following guide:
Install MariaDB 10.x on Ubuntu 18.04 and CentOS 7
Once the installation is complete, create a database with a user. First, log in to the database CLI as a root user.
$ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 39 Server version: 10.3.9-MariaDB-1:10.3.9+maria~bionic-log mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Then run the commands to create database and user with required privileges
CREATE DATABASE kanboard CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;; GRANT ALL PRIVILEGES ON kanboard.* TO 'kanboard'@'localhost' IDENTIFIED BY 'StrongPassword'; FLUSH PRIVILEGES; \q
Step 2: Install Nginx and PHP
Next, we can install the Nginx web server and required php extensions
sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm sudo yum -y install epel-release yum-utils sudo yum-config-manager --disable remi-php54 sudo yum-config-manager --enable remi-php72 sudo yum -y install php php-{fpm,mbstring,cli,json,opcache,zip,xml,gd,ldap,mysql,json,sqlite3}
Install nginx
sudo yum -y install nginx
Step 3: Download and Install Kanboard
You have two options to download Kanboard:
- From stable release
- From Github development branch
To download a specific stable release of Kanboard, check Kanboard releases page. As of this writing, the latest release is version 1.2.5
export VER=1.2.5 wget https://github.com/kanboard/kanboard/archive/v${VER}.tar.gz tar xvf v${VER}.tar.gz rm -f v${VER}.tar.gz sudo mv kanboard-${VER}/ /var/www/kanboard
To download development release, use
sudo git clone https://github.com/kanboard/kanboard.git /var/www/kanboard
Create a config file
Copy Kanboard configuration template.
sudo cp /var/www/kanboard/config.default.php /var/www/kanboard/config.php sudo vim /var/www/kanboard/config.php
The file config.php
should contain database access values.
// 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', 'StrongPassword'); // Mysql/Postgres hostname define('DB_HOSTNAME', 'localhost'); // Mysql/Postgres database name define('DB_NAME', 'kanboard');
This extensive configuration reference for Kanboard is helpful for proper configuration of other features like LDAP authentication, SMTP settings, Brute-force protection, Logging, Secure HTTP headers settings e.t.c.
Set Proper permissions
sudo chown -R nginx:nginx /var/www/kanboard
Configure php-fpm
Edit the file /etc/php-fpm.d/www.conf
Set like below
user = nginx group = nginx listen = /run/php-fpm/php7.2-fpm.sock listen.owner = nginx listen.group = nginx listen.mode = 0660
Step 4: Configure Nginx
Create Nginx configuration file /etc/nginx/conf.d/kanboard.conf
with the following content
server { listen 80; #listen 443 ssl; #ssl_certificate /etc/nginx/ssl/kanboard.crt; #ssl_certificate_key /etc/nginx/ssl/kanboard.key; server_name kanboard.example.com; index index.php; root /var/www/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/php7.2-fpm.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; }
https
Using Let’s Encrypt SSL
This example is for http to https redirection and Let’s Encrypt SSL certificate
# HTTP server { listen 80; server_name kanboard.example.com; root /var/www/kanboard; location / { rewrite ^ https://kanboard.example.com$request_uri? permanent; } } # HTTPS server { listen 443 ssl; ssl_certificate /etc/letsencrypt/live/kanboard.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kanboard.example.com/privkey.pem; server_name kanboard.example.com; index index.php; root /var/www/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/php7.2-fpm.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; }
Check configuration syntax
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
If it returns OK
then you can start nginx service
sudo systemctl restart php-fpm nginx sudo systemctl enable php-fpm nginx
Step 5: Access Kanboard Web UI
Access Kanboard Web UI by opening the link http://kanboard.example.com with your favorite web browser. Replace kanboard.example.com
with your correct domain name.
To login use:
Username: admin
Password: admin
You should get to a dashboard like below
Reset admin password
To be safe, reset admin password by navigating to Admin > Users Management > admin
That’s all. You now have a working Kanboard on CentOS 7 server. To further tune your Kanboard, refer to Admin guide.