How to Install Focalboard on Ubuntu Linux

This article describes steps one can take to install and use Focalboard on Ubuntu Linux.

Focalboard is an open-source alternative to tools like Asana, Trello, and Notion. It can be installed as a stand-alone application or integrated into the Mattermost platform on your own servers.

Companies and businesses can use Focalboard to help their developers stay aligned to complete tasks, reach milestones, and achieve their goals.

If you want a simple and intuitive Kanban style project management platform, you may want to take a look at Focalboard.

How to install Focalboard on Ubuntu Linux

As described above, Focalboard is an open-source alternative to tools like Asana, Trello, and Notion. It can be installed as a stand-alone application or integrated into the Mattermost platform.

Below is how to install it on Ubuntu Linux.

Install PostgreSQL on Ubuntu Linux

Focalboard uses PostgreSQL to store its data. You will have to install PostgreSQL on Ubuntu, and the post below shows you how.

How to install PostgreSQL on Ubuntu Linux

Once you installed PostgreSQL, run the command below to connect to PostgreSQL console.

sudo su - postgres
psql

On PostgreSQL console, run the queries below to create a new database called focaldb and a user account called focaluser with password.

CREATE DATABASE focaldb;
CREATE USER focaluser WITH PASSWORD 'type_password_here';

When you’re done, run the command below to quit and exit the console.

\q
exit

Download Focalboard on Ubuntu Linux

Once you have created a database and user, Download the Ubuntu archive package from the appropriate release in GitHub.

The example below uses the link for v0.15.0, but you’re encouraged to use the latest version in the release list:

wget https://github.com/mattermost/focalboard/releases/download/v0.15.0/focalboard-server-linux-amd64.tar.gz
tar -xvzf focalboard-server-linux-amd64.tar.gz
sudo mv focalboard /opt

Once you have move Focalboard content to the /opt directory, run the commands below to edit its Json configuration file.

sudo nano /opt/focalboard/config.json

Change the line below to match your database configuration settings.

"dbtype": "postgres",
"dbconfig": "postgres://focaluser:type_password_here@localhost/focaldb?sslmode=disable&connect_timeout=10",

Save the file and exit.

Create a Systemd service file for Focalboard

After making the changes above, you’ll want to create a Systemd service to control starting and stopping Focalboard.

Run the commands below to create a new Systemd service account file.

sudo nano /lib/systemd/system/focalboard.service

Then copy and paste the content below into the file.

[Unit]
Description=Focalboard server

[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/opt/focalboard/bin/focalboard-server
WorkingDirectory=/opt/focalboard

[Install]
WantedBy=multi-user.target

Save and exit.

Then run the commands below to reload Systemd daemon.

sudo systemctl daemon-reload

Now you should be able to stop, start and reload Focalboard.

sudo systemctl start focalboard
sudo systemctl enable focalboard
sudo systemctl status focalboard

From here, you can access Focalboard on the local server using its hostname or IP address followed by port 8080.

However, if you want to use a domain or user-friendly name or improve performance, you may have to set up a proxy server.

Create reverse proxy server with Focalboard

Below are two posts that show you how to set up reverse proxy server:

You can choose either set up above, however, Nginx provides a better option with Focalboard.

Install and set up a reverse proxy configuration file for Focalboard.

sudo nano /etc/nginx/conf.d/focalboard.conf

If you are using Nginx reverse proxy, use the configuration below with your proxy server.

upstream focalboard {
   server localhost:8000;
   keepalive 32;
}

server {
   listen 80;

   server_name focalboard.example.com;

   location ~ /ws/* {
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       client_max_body_size 50M;
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       client_body_timeout 60;
       send_timeout 300;
       lingering_timeout 5;
       proxy_connect_timeout 1d;
       proxy_send_timeout 1d;
       proxy_read_timeout 1d;
       proxy_pass 
   }

   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 600s;
       proxy_cache_revalidate on;
       proxy_cache_min_uses 2;
       proxy_cache_use_stale timeout;
       proxy_cache_lock on;
       proxy_http_version 1.1;
       proxy_pass 
   }
}

Save your file and exit.

Now enable and reload Nginx and connect to Focalboard with the domain name provided.

Create a new account, and login.

That should do it!

Conclusion:

This post showed you how to install and configure Focalboard on Ubuntu Linux. If you find any error above or have something to add, please use the comment form below.