TaskBoard is a Kanban-inspired app for keeping track of things that need to get done.
TaskBoard’s goal is to provide a simple and clean interface to a functional and minimal application for keeping track of tasks.
The visual aspect of TaskBoard allows for easy status checks and can also motivate users who want to move their tasks to the next column.
TaskBoard features:
- Free, Open-Source (MIT License).
- Self Hosted.
- Easy to install.
- Unlimited board and projects.
- Customization of columns within boards and persisten expand/collapse per user.
- Items allow custom colors, categorization, MarkDown descriptions, attachments and comments.
- Items display complete history of activities.
- Full history of all board activity for admins.
- Easy customization.
- Basic user management (admin and regular users).
- No external dependencies.
- Automatically cretaes SQLite database on first use.
- RESTful API.
- Works on almost any web hosts.
You can learn more details about TaskBoard on https://taskboard.matthewross.me/. The source code is available on GitHub.
Goals
In this tutorial we’ll learn how-to install and configure TaskBoard on Ubuntu 14.04. We’ll install all TaskBoard prerequisites before installing TaskBoard itself.
Prerequisites
We need to install these applications before we can install TaskBoard:
- Fresh install of Ubuntu Server 14.04. You can use any ubuntu flavors but using ubuntu server will make sure your server have minimalist ubuntu installation so your system will not be loaded by unnecessary softwares.
- Apache 2
- Sqlite
- PHP > 5.5. TaskBoard also need
php5-sqlite
PHP library.
Update the Base System
Before we install TaskBoard and its prerequisites let’s update the system to the latest update.
$ sudo apt-get update
$ sudo apt-get -y upgrade
Install Apache
Now the base system is ready, let’s install Apache webserver first
$ sudo apt-get install apache2 apache2-bin apache2-data apache2-mpm-prefork libaio1 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libdbi-perl libhtml-template-perl libterm-readkey-perl libwrap0 ssl-cert tcpd
...
Need to get 2,258 kB of archives.
After this operation, 7,917 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Press Y
when apt ask whether we want to continue the prosess or not.
After installation we can check Apache 2 process using command below
$ sudo service apache2 status
* apache2 is running
The output above shows that apache2
process is running.
We can also check apache process using netstat
to check if it’s already listen on default http port (80).
$ sudo netstat -naptu | grep 80
tcp6 0 0 :::80 :::* LISTEN 6894/apache2
apache2
process already listen on port 80.
Install PHP 5
Apache 2 webserver is ready. Now install PHP 5 including php5-sqlite
library that is needed by TaskBoard. We can install PHP 5 and all of its components using commmand below.
$ sudo apt-get install libapache2-mod-php5 php5-cli php5-common php5-json php5-readline php5-sqlite
Since no dependency installed apt will directly install all packages that we provided.
Install SQLite
Now let’s install SQLite. SQLite will be used by TaskBoard to store task data.
$ sudo apt-get install sqlite
Install TaskBoard
Now we’re ready to install TaskBoard. Let’s download the latest copy of TaskBoard using wget
:
$ cd ~
$ wget -c https://github.com/kiswa/TaskBoard/archive/master.zip
We need unzip
to extract downloaded archive. If you don’t have unzip, you can install unzip
using command below:
$ sudo apt-get install unzip
Now let’s extract downloaded archive with unzip
.
$ unzip master.zip
Rename the extracted directory to taskboard
.
$ mv TaskBoard-master/ taskboard
Install PHP dependencies using composer.
$ cd taskboard
$ sudo ./build/composer.phar install
Now move taskboard
directory to /var/www/
.
$ sudo mv taskboard /var/www
Change ownership of miniflux directory to www-data
user.
$ sudo chown -R www-data:www-data /var/www/miniflux
Configure Apache Virtual Host for HTTP Only
Create new apache configuration file on /etc/apache2/sites-available/taskboard.conf
with contents below.
<VirtualHost *:80>
ServerName taskboard.exampleserver.xyz
DocumentRoot /var/www/taskboard
<Directory /var/www/taskboard>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/taskboard.exampleserver.xyz-error.log
CustomLog ${APACHE_LOG_DIR}/taskboard.exampleserver.xyz-access.log combined
</VirtualHost>
Don’t forget to change taskboard.exampleserver.xyz
above with the domain name that you use for your TaskBoard installation.
Enable the site using a2ensite
command.
$ sudo a2ensite taskboard
Reload apache2
process so it read the new virtualhost configuration:
$ sudo service apache2 reload
Enable Apache Expires and Rewrite Modules
TaskBoard use .htaccess
to override some Apache configuration. We need to enable mod_expires
and mod_rewrite
that is being used on TaskBoard .htaccess
file. To enable both modules we can run command below.
$ sudo a2enmod expires
$ sudo a2enmod rewrite
Restart the Apache 2 service so it will use both modules that we just enable.
$ sudo service apache2 restart
Login to TaskBoard
TaskBoard is ready. Open and point our browser to TaskBoard address. We will be greeted with TaskBoard login page.
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/1312858330.png” alt=”” />
Login to TaskBoard using default username / password. TaskBoard default username and password is admin
.
After successfully logging in, we get the main dashboard.
Change TaskBoard Default Admin Password
After logging in for the first time We got notification on the bottom of the dashboard that let us know we have to change admin password.
This step is really important since we don’t want to leave TaskBoard installation with default admin password. Click Settings
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/2132794225.png” alt=”” />
On left top panel, under User Settings there is a settings for Change Password. Input default password, new password and new password confirmation. Then click Update Password
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/1901617512.png” alt=”” />
Email Settings
Before we go any further into using TaskBoard, let’s update email settings for TaskBoard. This email settings will be used by TaskBoard to send email for several activities on TaskBoard.
You can use your current email server or install mail server on the same server where you install TaskBoard but I recommend relaying or directly using transactional email service.
The main reason using 3rd party service is less service to manage and also higher deliverability. Some transactional email service that offer free tier are:
You can use one of the service above or another mail service that you prefer. We assume that you already have proper email account to send email.
TaskBoard email settings is located at /var/www/taskboard/api/mailConfig.php
. Let’s look at the available setting.
The setting below is pretty straighforward, smtp server, username and password to the smtp server.
$MAIL_HOST = '';
$MAIL_USERNAME = '';
$MAIL_PASSWORD = '';
The setting below is for port and whether we use secure (encrypted) or non secure connection. TaskBoard support tls
, ssl
, and false
(no security for $MAIL_SMTPSECURE
settings. The $MAIL_PORT
will depend on the mail server provider.
$MAIL_SMTPSECURE = 'tls';
$MAIL_PORT = 587;
This is the email address and name that we want to be shown to users. $MAIL_FROM
usually same with $MAIL_USERNAME
.
$MAIL_FROM = '';
$MAIL_FROMNAME = 'TaskBoard';
Create User
On the settings page, TaskBoard Users, click Add User Button.
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/1469128764.png” alt=”” />
Input details of new user. We can tick Administrator checkbox if we want to give administrator privileges to the new user. Click Add User.
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/739205799.png” alt=”” />
Create Board
On Settings, Board Settings, click Add Board
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/709770914.png” alt=”” />
Input board name, columns name that we want to use and also categories for item. Click Add Board
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/78230277.png” alt=”” />
Now when we go to homepage it will list board that we can select.
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/1903655509.png” alt=”” />
Now as you can see we have board with four columns.
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/2141305831.png” alt=”” />
To add item we can click + button on each column. We can fill in the detail for the item that we created and click Add Item. Item will be shown in board.
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/846796160.png” alt=”” />
Automatic Action
TaskBoard have automatic action function, using this function an action will be executed based on specific trigger.
To create automatic action, on settings, automatic actions we can choose which board that we want automatic action, the trigger and action that we want to create.
In this tutorial we’ll create action where item color changed to blue when the item moved to In Progress column
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/740723019.png” alt=”” />
Let’s test automatic action that we just create by moving one task from TODO to In Progress. The task background will changed from yellow to blue.
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/1842681867.gif” alt=”” />
Select Default Board
We can select default board on settings. This setting is only for ourselves. As admin we cannot change default board for another users.
HP_NO_IMG/data/uploads/users/ba36f5e2-8e32-4c8f-a32e-3a7a0a6b7dde/124453864.gif” alt=”” />
Configure TaskBoard To Use HTTPS only
A secure connection is now a requirement for web applications. The last step that we will do in this tutorial is changing the connection to only use https.
We assume that you already have SSL certificate and private key.
Let’s create new apache virtual host configuration on /etc/apache2/sites-available/taskboard-ssl.conf
with contents below. Don’t forget to change:
ServerName
SSLCertificateFile
SSLCertificateChainFile
SSLCertificateKeyFile
<VirtualHost *:80>
ServerName taskboard.exampleserver.xyz
Redirect permanent / https://taskboard.exampleserver.xyz/
</VirtualHost>
<VirtualHost *:443>
ServerName taskboard.exampleserver.xyz
DocumentRoot /var/www/taskboard
<Directory /var/www/taskboard>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/taskboard.exampleserver.xyz-error.log
CustomLog ${APACHE_LOG_DIR}/taskboard.exampleserver.xyz-access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/taskboard.exampleserver.xyz.crt
SSLCertificateChainFile /etc/apache2/ssl/taskboard.exampleserver.xyz.crt
SSLCertificateKeyFile /etc/apache2/ssl/taskboard.exampleserver.xyz.key
# Uncomment the following directive when using client certificate authentication
#SSLCACertificateFile /path/to/ca_certs_for_client_authentication
# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>
# intermediate configuration, tweak to your needs
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
SSLHonorCipherOrder on
We need to enable two new modules, mod_ssl
and mod_headers
before we can enable new virtual host config that we just created.
$ sudo a2enmod ssl
$ sudo a2enmod headers
We will also disable taskboard
http only virtual host and enable the new virtual config.
$ sudo a2dissite taskboard
$ sudo a2ensite taskboard-ssl
Now, restart Apache 2 service so it will use both modules that we just enable and also new ssl site.
$ sudo service apache2 restart
Summary
In this tutorial we learned how-to install TaskBoard on top of Apache, PHP and SQLite stack on Ubuntu 14.04.
We also learned how-to configure email sending and how to use TaskBoard including creating user, board and setting default board. Hopefully using TaskBoard will help you get more things done.