Focalboard on Rocky Linux 9 (PostgreSQL + Nginx + SSL)

Focalboard is an open-source project management and collaboration tool that helps teams and individuals organize workflows, tasks, and projects. Comparable to Trello, Asana, or Notion, it offers kanban boards, calendars, task lists, and database-style views. Unlike those SaaS platforms, Focalboard is self-hosted, ensuring that you retain complete control of your infrastructure and data.

Running Focalboard on Rocky Linux 9 — a community-driven, RHEL-compatible enterprise Linux distribution — provides a secure, stable, and long-term supported foundation. With SELinux enforcement, systemd 252, OpenSSL 3, PostgreSQL 15, and modern Node.js support, Rocky Linux is a strong choice for deploying Focalboard behind Nginx with SSL termination, suitable for both small teams and large organizations.


Architecture Overview

LayerComponentRole
OSRocky Linux 9Enterprise-grade, RHEL-compatible Linux base with SELinux enforcement
DatabasePostgreSQL 15Stores boards, tasks, and metadata
ApplicationFocalboard ServerProvides the web interface and APIs for project management
RuntimeNode.js (LTS)Runs the Focalboard backend
Process Managersystemd / PM2Ensures Focalboard runs continuously and restarts automatically
Reverse ProxyNginxTLS termination, routing, caching, and compression
TLSLet’s Encrypt / PKIProvides secure HTTPS access for end-users

Why Use Focalboard?

  • Self-hosted alternative to Trello, Asana, or Notion.
  • Complete control of data – ideal for compliance and privacy-conscious teams.
  • Open-source and free – no licensing fees or vendor lock-in.
  • Feature-rich – boards, lists, calendars, filters, and collaboration tools.
  • Flexible – useful for freelancers, startups, enterprises, and education.

Focalboard vs Other Tools

Feature/CapabilityFocalboard (Self-hosted)Trello (Cloud)Asana (Cloud)Notion (Cloud)
HostingSelf-hostedSaaS onlySaaS onlySaaS only
Data ownershipFull controlVendor-ownedVendor-ownedVendor-owned
CostFree, open-sourcePaid tiersPaid tiersPaid tiers
FeaturesBoards, tasks, calendarsKanban onlyProject mgmt + tasksNotes + tasks

Focalboard is ideal for teams that want project management without relying on external SaaS services.


Security & Best Practices

  • Deploy Focalboard behind Nginx with SSL enabled.
  • Harden PostgreSQL with strong authentication and backups.
  • Run the application under a dedicated non-root system user.
  • Manage services with systemd to ensure uptime and restarts.
  • Keep Node.js, PostgreSQL, and Rocky Linux updated.
  • Use SELinux policies and firewall rules for stricter security.
  • Add security headers in Nginx (HSTS, CSP, Referrer-Policy, etc.).

Typical Use Cases

  • Freelancers managing multiple projects securely.
  • Small teams replacing Trello or Asana with a free solution.
  • Organizations under compliance requirements needing data sovereignty.
  • Educational institutions providing collaboration platforms.
  • Enterprises embedding self-hosted project management into IT systems.

Step 1: Create a Server Instance on Shape.Host

Start with a clean Rocky Linux 9 VPS. On Shape.Host:

Log in to your Shape.Host dashboard.

Click Create → Instance.

Shape.host Resources dashboard with Create > Instance highlighted.

Choose a data center location close to your users.

Shape.host instance form with the data center location selector highlighted.

Select a plan with at least 2 CPUs, 4 GB RAM, and 20 GB SSD.

Pick Rocky Linux 9 (64-bit) as the OS.

Shape.host instance form with the operating system image selector highlighted.

Click Create Instance.

Shape.host instance form with the Create Instance button highlighted.

Copy the server’s public IP address from the Resources section.

Shape.host Resources dashboard with the server IP address highlighted.

Step 2: Connect to Your Server

  • Linux/macOS: ssh root@your_server_ip
  • Windows (PuTTY):
    1. Open PuTTY, enter your server’s IP.
    2. Select SSH and connect.
    3. Log in with the root credentials from Shape.Host.

Step 3: Update System and Install Dependencies

Update system packages:

dnf update
Terminal showing DNF/YUM package management commands and output.

Install essential tools and Nginx with SSL support:

dnf install wget curl unzip nginx certbot python3-certbot-nginx firewalld
Terminal showing DNF/YUM package management commands and output.

Enable and start Nginx:

systemctl enable --now nginx
Terminal showing systemd service management commands or output.

Step 4: Install and Configure PostgreSQL

Install PostgreSQL server and contrib tools:

dnf install postgresql-server postgresql-contrib
Terminal showing DNF/YUM package management commands and output.

Initialize the database:

postgresql-setup --initdb

Enable and start PostgreSQL:

systemctl enable --now postgresql
Terminal showing systemd service management commands or output.

Switch to the PostgreSQL user if you want to configure databases:

su - postgres
psql
CREATE DATABASE focalboard;
CREATE USER focaluser WITH PASSWORD 'StrongPassword123!';
GRANT ALL PRIVILEGES ON DATABASE focalboard TO focaluser;
\q
exit

(For now, Focalboard will use SQLite by default. You can switch to PostgreSQL by adjusting the config later.)

Terminal showing SQL database and user configuration commands.

Step 5: Download and Extract Focalboard

Create a directory for the app:

mkdir -p /opt/focalboard
cd /opt/focalboard

Download Focalboard:

wget https://sourceforge.net/projects/focalboard.mirror/files/v7.10.6/focalboard-server-linux-amd64.tar.gz/download -O focalboard.tar.gz

Extract archive:

tar -xzf focalboard.tar.gz
Terminal showing file download commands and transfer output.

Step 6: Configure Focalboard

Edit the configuration file:

nano /opt/focalboard/focalboard/config.json

Example config (default SQLite):

{
    "serverRoot": "http://localhost:8000",
    "port": 8000,
    "dbtype": "sqlite3",
    "dbconfig": "./focalboard.db",
    "postgres_dbconfig": "dbname=focalboard sslmode=disable",
    "useSSL": false,
    "webpath": "./pack",
    "filespath": "./files",
    "telemetry": true,
    "prometheusaddress": ":9092",
    "session_expire_time": 2592000,
    "session_refresh_time": 18000,
    "localOnly": false,
    "enableLocalMode": true,
    "localModeSocketLocation": "/var/tmp/focalboard_local.socket"
}
Terminal showing the GNU nano editor and configuration text.

Step 7: Create a systemd Service

Create the service file:

nano /etc/systemd/system/focalboard.service

Paste this configuration:

[Unit]
Description=Focalboard Server
After=network.target

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

[Install]
WantedBy=multi-user.target
Terminal showing a systemd service unit configuration.

Reload systemd and start service:

systemctl daemon-reload
systemctl enable --now focalboard
systemctl status focalboard
Terminal showing systemd service management commands or output.

Step 8: Configure Nginx Reverse Proxy

Create an Nginx configuration:

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

Paste:

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

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://focalboard;
        proxy_set_header Host $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;
    }

    location ~ /ws/* {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://focalboard;
    }
}
Terminal showing web server configuration text.

Test and reload Nginx:

nginx -t
systemctl reload nginx
Terminal showing systemd service management commands or output.

Step 9: Secure with Let’s Encrypt SSL

Run Certbot to obtain and configure an SSL certificate:

certbot --nginx -d rockylinux-tutorials.shape.host
Terminal showing Certbot certificate commands and messages.

Now open your site in a browser:

https://rockylinux-tutorials.shape.host

You should see Focalboard running securely.

Focalboard sign-in form.
Focalboard board interface with example task cards and navigation.

You installed Focalboard on Rocky Linux 9 with systemd, Nginx reverse proxy, and Let’s Encrypt SSL.

This gives you a production-ready, secure, and scalable setup for project management.

For maximum performance and reliability, deploy Focalboard on Shape.Host Cloud VPS, optimized for apps like Focalboard.