We recommend you follow this tutorial using a Production-Optimized Instance.
Project management for technical teams with Focalboard on Ubuntu Instances
- focalboard
- ubuntu
- project-management
- nginx
- mariadb
Developed by Mattermost, Focalboard emerges as an open-source and multilingual project management solution that readily accommodates self-hosting. Its central objective revolves around equipping organizations with a unified reference point, fostering team alignment and dedication to task completion, milestones, and objectives.
Focalboard boasts a comprehensive array of functionalities as one of its standout features. These include versatile views like Kanban, tables, galleries, and calendars, along with filtering mechanisms to maintain attention on top-priority tasks. Beyond its capabilities, Focalboard serves as a privacy-centric alternative to renowned project management tools like Trello, Notion, and Asana, and it effortlessly installs on Scaleway Instances.
In short, if you are seeking a robust and budget-friendly project management solution, Focalboard unquestionably merits exploration. Its impressive feature set coupled with a commitment to privacy positions it as a tool capable of fostering team organization and goal attainment.
Before you start
To complete the actions presented below, you must have:
- A Scaleway account logged into the console
- Owner status or IAM permissions allowing you to perform actions in the intended Organization
- An SSH key
- An Instance running on Ubuntu Jammy Jellyfish (22.04 LTS)
- A subdomain pointed to the IP address of your Instance (A-record)
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.
- Log into your Instance using SSH:
ssh root@<your_scaleway_instance_ip>
- Update the
apt
package manager and upgrade the installed software on your Instance to the latest version.apt update && apt upgrade -y - Install the required software packages using the
apt
package manager.apt install nginx python3-certbot-nginx mariadb-server ufw - Download and unpack Focalboard. In this tutorial, we use v7.11.3 of Focalboard, but you can find the latest release in the project’s GitHub repository.
wget https://github.com/mattermost/focalboard/releases/download/v8.0.0/focalboard-server-linux-amd64.tar.gztar -xvzf focalboard-server-linux-amd64.tar.gzmv 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.
- Create an Nginx server configuration for Focalboard.
nano /etc/nginx/sites-available/focalboard.example.com.conf
Copy and paste the following configuration into the file, edit it, and save it.NoteIn this tutorial, we use the subdomain
focalboard.example.com
. Remember to change it to your own (sub)domain where applicable.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;}} - Test the new configuration, enable the site, and reload Nginx to activate the Focalboard site.
nginx -tln -s /etc/nginx/sites-available/focalboard.example.com.conf /etc/nginx/sites-enabled/focalboard.example.com.confservice nginx reload
- Run
certbot
to obtain a TLS certificate for your domain name and let the application configure Nginx automatically.certbotTipFor 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.
- Run the following command to initialize the MariaDB database server.
Follow the steps in the wizard:mysql_secure_installation
- 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
- Enter current password for root: Press
- Log into the MariaDB shell using the MySQL user
root
and the password created in the previous step.mysql -u root -p - Create a table for Focalboard and grant permission to a MariaDB user. Change the values for
focalboarduser
andfocalboardpassword
to your own user/password combination.Then leave the MariaDB shell by typingCREATE DATABASE focalboard;GRANT ALL on focalboard.* to 'focalboarduser'@'localhost' identified by 'focalboardpassword';exit;
. - Open the Focalboard configuration file in a text editor.
Edit the database configuration as shown below:nano /opt/focalboard/config.json"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.
- Create a service description.
Copy the following content into the file, save it, and exit the text editor.nano /lib/systemd/system/focalboard.service
- Reload the systemd configuration, enable and start the Focalboard service.
systemctl daemon-reloadsystemctl start focalboard.servicesystemctl 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.
- Refuse any traffic by default.
ufw default deny
- Enable outgoing traffic.
ufw default allow outgoing
- Authorize SSH, HTTP, and HTTPS connections to the Focalboard Instance.
ufw allow 22/tcpufw allow 80/tcpufw allow 443/tcp
- 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.