Hometutorials
focalboard project management

Jump toUpdate content

Project management for technical teams with Focalboard on Ubuntu Instances

Reviewed on 22 February 2023Published on 22 February 2023
  • compute
  • instance
  • focalboard
  • ubuntu
  • project-management
  • open-source

Focalboard, developed by Mattermost, is an open-source and multilingual project management tool that can be self-hosted. Its primary aim is to help organizations maintain a single source of truth so that teams can stay aligned and focused on completing tasks, milestones, and goals. One of the key features of Focalboard is its full suite of features, including Kanban, table, gallery, and calendar views, as well as filters that help you stay focused on the highest-priority tasks. It is also a privacy-focused alternative to popular project management tools such as Trello, Notion, and Asana, and it is easy to install on Scaleway Instances.

In summary, if you’re looking for a powerful and cost-effective project management tool, Focalboard is definitely worth checking out. With its impressive range of features and focus on privacy, it’s a tool that can help your team stay organized and achieve its goals.

Tip:

We recommend you follow this tutorial using a Production-Optimized Instance.

Security & Identity (IAM):

You may need certain IAM permissions to carry out some actions described on this page. This means:

  • you are the Owner of the Scaleway Organization in which the actions will be carried out, or
  • you are an IAM user of the Organization, with a policy granting you the necessary permission sets
Requirements:

Installation of the required software

In the following steps, we will make sure that the software and the required packages installed on your Instance are up-to-date, and that you have downloaded and unpacked the Focalboard application.

  1. Log into your Instance using SSH:
    ssh root@<your_scaleway_instance_ip>
  2. Update the apt package manager and upgrade the installed software on your Instance to the latest version.
    apt update && apt upgrade -y
  3. Install the required software packages using the apt package manager.
    apt install nginx python3-certbot-nginx mariadb-server ufw
  4. Download and unpack Focalboard. In this tutorial, we use v7.8.2 of Focalboard, but you can find the latest release in the project’s GitHub repository.
    wget https://github.com/mattermost/focalboard/releases/download/v7.8.2/focalboard-server-linux-amd64.tar.gz
    tar -xvzf focalboard-server-linux-amd64.tar.gz
    mv focalboard /opt

Nginx configuration

We use Nginx as a proxy in front of the application to prevent it from direct access and by providing an additional layer of security through TLS encryption.

  1. Create an Nginx server configuration for Focalboard.
    nano /etc/nginx/sites-available/focalboard.example.com.conf
    Note:

    In this tutorial, we use the subdomain focalboard.example.com. Remember to change it to your own (sub)domain where applicable.

    Copy and paste the following configuration into the file, edit it, and save it.
    upstream focalboard {
    server localhost:8000;
    keepalive 32;
    }
    server {
    listen 80;
    listen [::]:80;
    server_name focalboard.example.com;
    access_log /var/log/nginx/focalboard-access.log;
    error_log /var/log/nginx/focalboard-error.log;
    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 http://focalboard;
    }
    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 http://focalboard;
    }
    }
  2. Test the new configuration, enable the site, and reload Nginx to activate the Focalboard site.
    nginx -t
    ln -s /etc/nginx/sites-available/focalboard.example.com.conf /etc/nginx/sites-enabled/focalboard.example.com.conf
    service nginx reload
  3. Run certbot to obtain a TLS certificate for your domain name and let the application configure Nginx automatically.
    certbot
    Tip:

    For more details on using Certbot, refer to our dedicated documentation.

MariaDB configuration

Focalboard uses a MariaDB database to store its data. Initialize the database engine, and create a table and user for Focalboard.

  1. Run the following command to initialize the MariaDB database server.
    mysql_secure_installation
    Follow the steps in the wizard:
    • Enter current password for root: Press Enter to continue.
    • Set root password? Y
    • Create and confirm a new password
    • Remove anonymous users? Y
    • Disallow root login remotely? Y
    • Remove test database and access to it? Y
    • Reload privilege tables now? `Y
  2. Log into the MariaDB shell using the MySQL user root and the password created in the previous step.
    mysql -u root -p
  3. Create a table for Focalboard and grant permission to a MariaDB user. Change the values for focalboarduser and focalboardpassword to your own user/password combination.
    CREATE DATABASE focalboard;
    GRANT ALL on focalboard.* to 'focalboarduser'@'localhost' identified by 'focalboardpassword';
    Then leave the MariaDB shell by typing exit;.
  4. Open the Focalboard configuration file in a text editor.
    nano /opt/focalboard/config.json
    Edit the database configuration as shown below:
    "dbtype": "mysql",
    "dbconfig": "focalboarduser:focalboardpassword@tcp(127.0.0.1:3306)/focalboard",

Configure a Focalboard service

We are now configuring a service that will keep the Focalboard server running across reboots.

  1. Create a service description.
    nano /lib/systemd/system/focalboard.service
    Copy the following content into the file, save it and exit the text editor.
  2. Reload the systemd configuration, enable and start the Focalboard service.
    systemctl daemon-reload
    systemctl start focalboard.service
    systemctl enable focalboard.service

Firewall configuration

To avoid the Focalboard application being directly reachable via plain HTTP on port 8000, we will configure a firewall to block all incoming ports, except HTTP, HTTPS, and SSH.

  1. Refuse any traffic by default.
    ufw default deny
  2. Enable outgoing traffic.
    ufw default allow outgoing
  3. Authorize SSH, HTTP and HTTPS connections to the Focalboard Instance.
    ufw allow 22/tcp
    ufw allow 80/tcp
    ufw allow 443/tcp
  4. Enable the new firewall configuration.
    ufw enable

Your Focalboard Instance is now ready. You can open a web browser on your local computer and point it to your Focalboard domain — the Login screen displays. Click Create an account to create your first account and start using your Instance.

For more information about using your new Focalboard Instance, follow the official Focalboard documentation.