Focalboard is an open-source and self-hosted project management system that allows you to manage projects via a web browser. It is very similar to other project management systems like Asana, Trello, and Notion. Focalboard is simple, easy to use, and designed for both personal and development use. It offers a rich set of features, including multiple languages, support for multiple boards, import and export options for boards, and much more.

If you are looking for an open-source project management solution, then Focalboard is the right choice for you.

In this post, we will explain how to install Focalboard on Oracle Linux 8.

Step 1 – Install and Configure PostgreSQL

Focalboard uses PostgreSQL as a database backend, so you will need to install PostgreSQL on your system.

First, enable the PostgreSQL module with the following commands:

dnf update -y
dnf module enable postgresql:12 -y

Next, install PostgreSQL using the following command:

dnf install postgresql-server postgresql-contrib -y

Next, initialize the PostgreSQL database using the following command:

postgresql-setup --initdb

Next, edit the PostgreSQL configuration file:

nano /var/lib/pgsql/data/pg_hba.conf

Find the following lines:

host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

And, replaced them with the following lines:

host    all             all             127.0.0.1/32            trust
host    all             all             ::1/128                 trust

Save and close the file, then start and enable the PostgreSQL service with the following command:

systemctl start postgresql
systemctl enable postgresql

Next, log in to PostgreSQL with the following command:

su - postgres
psql

Next, create a database and user for PostgreSQL with the following command:

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

Next, exit from PostgreSQL using the following command:

\q
exit

Step 2 – Install and Configure Focalboard

First, download the latest version of Focalboard with the following command:

VER=$(curl -s https://api.github.com/repos/mattermost/focalboard/releases/latest|grep tag_name | cut -d '"' -f 4)
wget https://github.com/mattermost/focalboard/releases/download/${VER}/focalboard-server-linux-amd64.tar.gz

Once the download is completed, extract the downloaded file with the following command:

tar -xvzf focalboard-server-linux-amd64.tar.gz

Next, move the extracted directory to the /opt with the following command:

mv focalboard /opt

Next, edit the Focalboard configuration file:

nano /opt/focalboard/config.json

Find the following lines:

        "dbtype": "sqlite3",
    "dbconfig": "./focalboard.db",
        "postgres_dbconfig": "dbname=focalboard sslmode=disable",

And replace them with the following lines:

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

Save and close the file when you are finished.

Step 3 – Create a Systemd Service File for Focalboard

Next, you will need to create a systemd service file to manage the Focalboard service:

nano /lib/systemd/system/focalboard.service

Add the following lines:

[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 close the file, then reload the systemd daemon to apply the changes:

systemctl daemon-reload

Next, start and enable the Focalboard service with the following command:

systemctl start focalboard
systemctl enable focalboard

At this point, Focalboard is started and listening on port 8000. You can check it with the following command:

ss -antpl | grep 8000

You will get the following output:

LISTEN 0      128                *:8000             *:*    users:(("focalboard-serv",pid=65302,fd=8))                                                                                          

Step 4 – Configure Nginx as a Reverse Proxy for Focalboard

Next, you will need to install and configure Nginx as a reverse proxy for Focalboard.

First, install Nginx with the following command:

dnf install nginx -y

Next, create an Nginx virtual host configuration file:

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

Add the following lines:

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 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;
   }
}

Save and close the file, then edit the Nginx configuration file:

nano /etc/nginx/nginx.conf

Add the following line below http {:

server_names_hash_bucket_size 64;

Save and close the file, then verify Nginx for any syntax configuration errors:

nginx -t

You will get the following output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Next, start and enable the Nginx service:

systemctl start nginx
systemctl enable nginx

Step 5 – Access Focalboard

Now, open your web browser and access the Focalboard web interface using the URL http://focalboard.example.com/login. You will be redirected to the Focalboard login page:
Focalboard welcome page
Click on create an account if you don’t have one. You should see the account creation page:
Focalboard registration page
Set up your admin email address, username, and password and click on the Register button. You should see the following page:
Focalboard login page
Provide your admin username and password and click on the Login button. You should see the Focalboard dashboard on the following page:
Focalboard dashboard page

Conclusion

In this guide, you learned how to install Focalboard with Nginx as a reverse proxy on Oracle Linux 8. You can now manage your projects easily through the web browser. Try Focalboard on dedicated hosting from Atlantic.Net!