• Get In Touch
December 27, 2016

How to Install TaskBoard on Ubuntu 14.04

Want your very own server? Get our 1GB memory, Xeon V4, 25GB SSD VPS for £10.00 / month.
Get a Cloud Server

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.

Want your very own server? Get our 1GB memory, Xeon V4, 25GB SSD VPS for £10.00 / month.
Get a Cloud Server

Share this Article!

Related Posts

Node.js Authentication – A Complete Guide with Passport and JWT

Node.js Authentication – A Complete Guide with Passport and JWT

Truth be told, it’s difficult for a web application that doesn’t have some kind of identification, even if you don’t see it as a security measure in and of itself. The Internet is a kind of lawless land, and even on free services like Google’s, authentication ensures that abuses will be avoided or at least […]

Node.js and MongoDB: How to Connect MongoDB With Node

Node.js and MongoDB: How to Connect MongoDB With Node

MongoDB is a document-oriented NoSQL database, which was born in 2007 in California as a service to be used within a larger project, but which soon became an independent and open-source product. It stores documents in JSON, a format based on JavaScript and simpler than XML, but still with good expressiveness. It is the dominant […]

Using MySQL with Node.js: A Complete Tutorial

Using MySQL with Node.js: A Complete Tutorial

Although data persistence is almost always a fundamental element of applications, Node.js has no native integration with databases. Everything is delegated to third-party libraries to be included manually, in addition to the standard APIs. Although MongoDB and other non-relational databases are the most common choice with Node because if you need to scale an application, […]

Node.Js Vs Django: Which Is the Best for Your Project

Node.Js Vs Django: Which Is the Best for Your Project

Django and NodeJs are two powerful technologies for web development, both have great functionality, versatile applications, and a great user interface. Both are open source and can be used for free. But which one fits your project best? NodeJs is based on JavaScript, while Django is written in Python. These are two equally popular technologies […]

Nodejs Vs PHP:  Which Works Best?

Nodejs Vs PHP: Which Works Best?

Before getting into the “battle” between Node.js and PHP we need to understand why the issue is still ongoing. It all started with the increased demand for smartphone applications, their success forcing developers to adapt to new back-end technologies that could handle a multitude of simultaneous requests. JavaScript has always been identified as a client-side […]