Focalboard on Debian 12 (PostgreSQL + Nginx + SSL)

Focalboard is an open-source project and task management platform designed to help individuals and teams organize workflows more effectively. Similar to Trello, Asana, or Notion, it offers kanban boards, task lists, calendars, and database-style views — but with the advantage of being self-hosted, meaning you retain complete control over your data and infrastructure.

Running Focalboard on Debian 12 (Bookworm) provides a stable, secure, and long-term supported base for production. With systemd 252, OpenSSL 3, and modern PostgreSQL and Node.js packages, Debian 12 is an excellent choice for hosting Focalboard behind Nginx with SSL termination in enterprise or small team environments.


Architecture Overview

LayerComponentRole
OSDebian 12 (Bookworm)Reliable Linux base with long-term support
DatabasePostgreSQL 15Stores user data, tasks, projects, and metadata
ApplicationFocalboard ServerProvides project management interface and API services
RuntimeNode.js (LTS)Runs the Focalboard backend
Process Managersystemd / PM2Keeps Focalboard running and ensures uptime
Reverse ProxyNginxHandles TLS termination, routing, caching, and compression
TLSLet’s Encrypt / PKIProvides HTTPS access for the web UI and APIs

Why Use Focalboard?

  • Self-hosted alternative to Trello, Asana, and Notion.
  • Feature-rich task management – kanban, lists, calendars, and filters.
  • Data ownership – all information remains under your control.
  • Open-source – no subscription fees or vendor lock-in.
  • Collaboration-ready – suitable for freelancers, small teams, or 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 plansPaid plansPaid plans
FeaturesBoards, tasks, calendarsBoards onlyProject mgmt + tasksNotes + tasks

Focalboard is ideal if you want a no-cost, flexible, and self-hosted project management tool without relying on external SaaS providers.


Security & Best Practices

  • Deploy behind Nginx with SSL enabled.
  • Secure PostgreSQL with strong credentials and regular backups.
  • Run Focalboard as a dedicated non-root system user.
  • Use systemd for service management to ensure uptime.
  • Keep Debian, PostgreSQL, Node.js, and Focalboard updated.
  • Add security headers (HSTS, CSP, Referrer-Policy) in Nginx.

Typical Use Cases

  • Freelancers organizing multiple client projects.
  • Small teams replacing Trello or Asana with a free solution.
  • Companies needing data sovereignty for project management.
  • Education/NGOs seeking low-cost collaboration tools.
  • Enterprise IT integrating self-hosted task management into workflows.

Running Focalboard on Debian 12 with PostgreSQL, Nginx, and SSL provides a secure, scalable, and customizable project management platform that puts you in full control of your data.


Step 1: Create a Server Instance on Shape.Host

First, set up a Debian 12 VPS. On Shape.Host:

Log in to your Shape.Host dashboard.

Click Create → Instance.

Shape.host Resources dashboard with Create > Instance highlighted.

Select a data center location close to your users.

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

Choose a plan with 2 CPUs, 4 GB RAM, and 20 GB SSD (recommended for Focalboard).

Pick Debian 12 (64-bit) as the operating system.

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 instance’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):
    Enter your server’s IP, choose SSH, and log in with the credentials provided by Shape.Host.

Step 3: Install Dependencies

Update packages and install tools:

apt update
apt install wget curl unzip gnupg nginx python3-certbot-nginx
Terminal showing APT package management commands and output.
Terminal showing APT package management commands and output.

Install PostgreSQL:

apt install postgresql postgresql-contrib
Terminal showing APT package management commands and output.

Step 4: Configure PostgreSQL

Switch to the postgres user:

su - postgres

Enter PostgreSQL shell:

psql

Inside psql, create database and user:

CREATE DATABASE focalboard;
CREATE USER focaluser WITH PASSWORD 'StrongPassword123!';
GRANT ALL PRIVILEGES ON DATABASE focalboard TO focaluser;
\q

Exit back to root:

exit
Terminal showing SQL database and user configuration commands.

Step 5: Download and Extract Focalboard

Create installation directory:

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

Download the package:

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

Extract it:

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

Step 6: Configure Focalboard

Edit the config file:

nano /opt/focalboard/focalboard/config.json

Use this configuration (SQLite3 is default here, PostgreSQL can be used if preferred):

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

nano /etc/systemd/system/focalboard.service

Paste the following:

[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.

Enable and start the service:

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

Step 8: Configure Nginx Reverse Proxy

Create Nginx config:

nano /etc/nginx/sites-available/focalboard.conf

Add:

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.

Enable the site and reload Nginx:

ln -s /etc/nginx/sites-available/focalboard.conf /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
Terminal showing systemd service management commands or output.

Step 9: Secure with SSL (Let’s Encrypt)

Request SSL certificate:

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

Now open in browser:

https://debian-tutorials.shape.host

You should see Focalboard running.

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

You installed Focalboard on Debian 12 with PostgreSQL, systemd service, Nginx reverse proxy, and Let’s Encrypt SSL.

For scalability and performance, deploy your apps on Shape.Host Cloud VPS, built for modern applications like Focalboard.