Focalboard on AlmaLinux 9 (PostgreSQL + Nginx + SSL)

Focalboard is a free, open-source project management and collaboration platform that helps individuals and teams manage tasks, workflows, and projects. Similar to Trello, Asana, or Notion, it offers kanban boards, calendars, lists, and database-style views — but unlike those SaaS tools, Focalboard is self-hosted, giving you complete control over your infrastructure and data.

Running Focalboard on AlmaLinux 9 — a RHEL-compatible enterprise Linux distribution — provides a secure, stable, and long-term supported platform. With SELinux enforcement, systemd 252, OpenSSL 3, PostgreSQL 15, and modern Node.js support, AlmaLinux is an excellent choice for deploying Focalboard behind Nginx with SSL termination in enterprise or small-team environments.


Architecture Overview

LayerComponentRole
OSAlmaLinux 9Enterprise-grade, RHEL-compatible Linux base with SELinux
DatabasePostgreSQL 15Stores tasks, projects, and metadata
ApplicationFocalboard ServerProvides the web interface and backend APIs
RuntimeNode.js (LTS)Executes the Focalboard backend
Process Managersystemd / PM2Ensures Focalboard stays online and restarts on failure
Reverse ProxyNginxTLS termination, routing, caching, compression
TLSLet’s Encrypt / PKIProvides secure HTTPS access for teams and users

Why Use Focalboard?

  • Self-hosted project management – replace Trello, Asana, or Notion.
  • Data sovereignty – your projects and workflows remain on your servers.
  • Open-source & free – no subscription fees or vendor lock-in.
  • Feature-rich – kanban boards, task lists, calendars, filters, and more.
  • Collaboration-ready – built for freelancers, small teams, and enterprises.

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
FeaturesKanban, tasks, calendarsKanban onlyProject mgmt + tasksNotes + tasks

Focalboard is best suited for teams and organizations that want project management without SaaS dependencies.


Security & Best Practices

  • Run Focalboard behind Nginx with HTTPS enabled.
  • Secure PostgreSQL with role-based permissions and frequent backups.
  • Deploy under a non-root system user for security.
  • Manage the service with systemd to ensure uptime and controlled restarts.
  • Apply SELinux policies and firewall rules to restrict access.
  • Keep Node.js, PostgreSQL, and AlmaLinux patched and updated.
  • Harden Nginx with security headers (HSTS, CSP, Referrer-Policy, etc.).

Typical Use Cases

  • Freelancers organizing multiple projects with clients.
  • Small businesses/teams replacing Trello or Asana with a free tool.
  • Organizations requiring on-premises task management under compliance rules.
  • Educational institutions offering collaborative planning tools.
  • Enterprises embedding self-hosted project management into their IT workflows.

Deploying Focalboard on AlmaLinux 9 with PostgreSQL, Nginx, and SSL gives you a secure, enterprise-ready project management platform with full control of your data and no vendor lock-in.


Step 1: Create a Server Instance on Shape.Host

Before installing, you’ll need a fresh AlmaLinux 9 server.

Log into your Shape.Host dashboard.

Click Create → Instance.

Shape.host Resources dashboard with Create > Instance highlighted.

Select a data center location near your users.

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

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

Pick AlmaLinux 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.

Once deployed, copy the server’s public IP from the Resources tab.

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. Enter your server IP in PuTTY.
    2. Select SSH and click Open.
    3. Log in with your Shape.Host credentials.

Step 3: Update System and Install Required Packages

dnf update
dnf install epel-release
dnf install wget curl unzip nginx certbot python3-certbot-nginx firewalld
  • Updates the system.
  • Adds EPEL (Extra Packages for Enterprise Linux).
  • Installs essential tools (wget, curl, unzip), Nginx, Certbot for SSL, and firewalld for firewall management.
Terminal showing DNF/YUM package management commands and output.
Terminal showing DNF/YUM package management commands and output.

Enable Nginx:

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

Step 4: Install PostgreSQL

dnf install postgresql-server postgresql-contrib
postgresql-setup --initdb
systemctl enable --now postgresql
  • Installs PostgreSQL server and extra utilities.
  • Initializes the database.
  • Starts PostgreSQL and enables it on boot.
Terminal showing DNF/YUM package management commands and output.
Terminal showing systemd service management commands or output.

Step 5: Download and Extract Focalboard

Create a directory and download the package:

mkdir -p /opt/focalboard
cd /opt/focalboard
wget https://sourceforge.net/projects/focalboard.mirror/files/v7.10.6/focalboard-server-linux-amd64.tar.gz/download -O focalboard.tar.gz
tar -xzf focalboard.tar.gz
Terminal showing file download commands and transfer output.

Step 6: Configure Focalboard

Edit the main configuration file:

nano /opt/focalboard/focalboard/config.json

Example configuration (SQLite by default, PostgreSQL connection string included if you want to switch):

{
    "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

nano /etc/systemd/system/focalboard.service

Paste:

[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

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

Insert:

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

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

Once done, visit:

https://almalinux-tutorials.shape.host

You should now see Focalboard running.

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

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

This setup gives you a production-ready task management solution that’s private, secure, and scalable.

For reliable deployments, consider hosting on Shape.Host Linux SSD VPS — optimized for high-performance applications like Focalboard.