If you’re looking to run Focalboard on a Linux server without Docker, this guide is for you. We’ll install Focalboard on Debian 12, run it as a service using systemd, and place it in a custom directory: /var/app/service/focalboard-server
.
All steps use the Linux user:
userexample:userexample
1. Install Dependencies
0 1 2 3 |
sudo apt update sudo apt install -y wget unzip sqlite3 |
2. Create the Installation Directory
0 1 2 3 4 |
sudo mkdir -p /var/app/service/focalboard-server sudo chown -R userexample:userexample /var/app/service/focalboard-server cd /var/app/service/focalboard-server |
3. Download and Extract Focalboard
0 1 2 3 4 5 |
wget https://github.com/mattermost/focalboard/releases/download/v7.10.2/focalboard-server-linux-amd64.tar.gz tar -xvzf focalboard-server-linux-amd64.tar.gz rm focalboard-server-linux-amd64.tar.gz |
This will extract the binary to bin/focalboard-server
4. Create config.json
0 1 2 |
nano config.json |
Paste the following content:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "serverRoot": "http://localhost:8003", "port": 8003, "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" } |
Note: In practice, the
port
setting inconfig.json
may be ignored. You’ll need to override it via--port
in the systemd service.
5. Create a systemd Service
0 1 2 |
sudo nano /etc/systemd/system/focalboard.service |
Paste this:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=Focalboard Personal Server After=network.target [Service] Type=simple User=userexample Group=userexample WorkingDirectory=/var/app/service/focalboard-server ExecStart=/var/app/service/focalboard-server/bin/focalboard-server --config config.json --port 8003 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target |
This ensures the port is correctly set even if the config file is ignored.
6. Start the Service
0 1 2 3 |
sudo systemctl daemon-reload sudo systemctl enable --now focalboard |
Verify it’s running:
0 1 2 |
systemctl status focalboard |
Check if it’s listening on port 8003:
0 1 2 |
ss -tuln | grep 8003 |
Personal Server vs Self-hosted
Focalboard Personal Server is a lightweight edition designed for individuals or small teams. It supports multiple user accounts but does not include:
- Team-based access controls
- Private boards per user
- Advanced role-based permissions
All users share the same workspace and can see/edit all boards.
Self-hosted simply means the software is running on your own infrastructure — cloud VM, physical server, or local device.
Term | Scope | User Focus | Features |
---|---|---|---|
Personal Server | Single-user or small team | Individuals | Basic multi-user login, shared workspace only |
Self-hosted | Any (Personal or Team) | Custom environments | Depends on edition & setup |
Final Notes
Focalboard is now accessible at http://localhost:8003
.
Happy planning!