How to Self-Host Focalboard with Docker Compose
Important: Maintenance Status
Focalboard’s standalone version is no longer actively maintained by Mattermost. The last standalone Docker image (v7.11.4) was September 2023. v8.0.0 exists only as a Mattermost plugin — no standalone Docker image was published. Mattermost has shifted Focalboard’s functionality into the Mattermost plugin system as “Mattermost Boards.” The standalone Docker image still works, but it won’t receive security patches or new features.
If you’re starting fresh, consider Vikunja (similar flexibility, actively maintained) or Planka (simpler Kanban). If you’re already running Mattermost, use the built-in Boards plugin instead of the standalone version.
If you want to run Focalboard despite the maintenance status — it still works and does what it claims — here’s how.
What Is Focalboard?
Focalboard is a Notion-style project management tool from Mattermost. Unlike traditional Kanban boards with fixed columns, Focalboard uses database-style boards where you define custom properties (status, priority, date, person, select, multi-select) and then view the same data as a Kanban board, table, calendar, or gallery. This flexibility makes it useful for task management, CRM, content calendars, and other structured data. (focalboard.com)
Prerequisites
- A Linux server (Ubuntu 22.04+ recommended)
- Docker and Docker Compose installed (guide)
- 256 MB of free RAM
- 500 MB of free disk space
Docker Compose Configuration
Focalboard runs as a single container with an embedded SQLite database. No external services required.
services:
focalboard:
image: mattermost/focalboard:7.11.4
container_name: focalboard
ports:
- "8000:8000"
volumes:
- focalboard-data:/opt/focalboard/data
restart: unless-stopped
volumes:
focalboard-data:
Start the container:
docker compose up -d
Access Focalboard at http://your-server:8000.
Initial Setup
- Open
http://your-server:8000in your browser - Click “Create an account” to set up the first user
- The first registered user becomes the admin
- Create your first board — choose from templates (Project Tasks, Meeting Notes, Content Calendar, etc.) or start with a blank board
How It Works
Focalboard organizes data differently from traditional Kanban boards:
Boards and Views
A board is a database. Each card in the board has properties you define — text fields, select dropdowns, dates, checkboxes, people, URLs. The same board can be displayed in multiple views:
- Board view (Kanban) — cards grouped by a select property (typically “Status”), arranged in columns
- Table view — spreadsheet-like view showing all properties in columns
- Calendar view — cards placed on a calendar by their date property
- Gallery view — card thumbnails in a grid
You can create multiple views of the same board, each filtered and sorted differently. A “Sprint Board” might have a Kanban view for daily standups, a table view for sprint planning, and a calendar view for deadline tracking.
Card Templates
Define templates for common card structures. A bug report template might include properties for severity, affected component, reproduction steps, and assignee. New cards created from the template get the structure pre-filled.
Configuration
Custom Configuration File
For advanced settings, create a config.json:
{
"serverRoot": "http://localhost:8000",
"port": 8000,
"dbtype": "sqlite3",
"dbconfig": "/opt/focalboard/data/focalboard.db",
"useSSL": false,
"webPath": "./pack",
"filesDriver": "local",
"filesPath": "/opt/focalboard/data/files",
"telemetry": false,
"enablePublicSharedBoards": false
}
Mount it in Docker Compose:
volumes:
- ./config.json:/opt/focalboard/config.json:ro
- focalboard-data:/opt/focalboard/data
PostgreSQL Backend
For larger deployments, switch from SQLite to PostgreSQL:
services:
focalboard:
image: mattermost/focalboard:7.11.4
container_name: focalboard
ports:
- "8000:8000"
volumes:
- ./config.json:/opt/focalboard/config.json:ro
- focalboard-data:/opt/focalboard/data
depends_on:
- focalboard-db
restart: unless-stopped
focalboard-db:
image: postgres:16-alpine
container_name: focalboard-db
environment:
- POSTGRES_USER=focalboard
- POSTGRES_PASSWORD=focalboard_secret # Change this
- POSTGRES_DB=focalboard
volumes:
- focalboard-pgdata:/var/lib/postgresql/data
restart: unless-stopped
volumes:
focalboard-data:
focalboard-pgdata:
Update config.json for PostgreSQL:
{
"dbtype": "postgres",
"dbconfig": "postgres://focalboard:focalboard_secret@focalboard-db/focalboard?sslmode=disable"
}
Reverse Proxy
For Nginx Proxy Manager or Caddy, point the proxy to http://focalboard:8000. Set serverRoot in config.json to your public URL:
{
"serverRoot": "https://focalboard.yourdomain.com"
}
WebSocket connections are needed for real-time updates. Ensure your reverse proxy passes WebSocket headers.
Backup
Back up the data volume:
# SQLite backup
docker cp focalboard:/opt/focalboard/data/focalboard.db ./focalboard-backup-$(date +%Y%m%d).db
# Full data directory (includes uploaded files)
docker run --rm -v focalboard-data:/data -v $(pwd):/backup alpine tar czf /backup/focalboard-data-$(date +%Y%m%d).tar.gz /data
Troubleshooting
Board appears empty after restart
Symptom: Created boards disappear after container restart.
Fix: Verify the data volume is properly mounted. Check that focalboard-data is a named volume, not an anonymous volume. Run docker volume inspect focalboard-data to confirm data persistence.
”Unable to register” error
Symptom: Registration form shows an error.
Fix: The standalone version limits registration by default. Check that enableLocalMode is not set to true in your config, which restricts access to single-user mode.
Slow performance with large boards
Symptom: Boards with 500+ cards become sluggish. Fix: Switch from SQLite to PostgreSQL. SQLite handles small to medium boards well, but PostgreSQL performs significantly better with large datasets and concurrent users.
Resource Requirements
- RAM: ~50 MB idle (SQLite), ~120 MB with PostgreSQL
- CPU: Low — minimal background processing
- Disk: ~200 MB for the application, plus storage for uploaded files
Verdict
Focalboard’s Notion-style database approach to task management is genuinely useful — defining custom properties and switching between views is more flexible than fixed Kanban boards. However, the unmaintained status of the standalone version is a deal-breaker for new deployments.
If you’re already running Focalboard and it works for you, it’s fine to keep using it. The v8.0.0 image is stable and functional. But don’t start new projects on unmaintained software.
For new deployments, use Vikunja for a similar multi-view experience (list, Kanban, Gantt, table) with active development, or Planka for straightforward Kanban boards. If you specifically want Focalboard’s database-style boards, the closest maintained alternative is running the full Mattermost server with the Boards plugin enabled.
Frequently Asked Questions
Is Focalboard still safe to use?
The standalone v7.11.4 Docker image works and is stable, but it won’t receive security patches. For personal use on a private network, the risk is low. For internet-facing deployments, the lack of security updates is a concern. Consider migrating to Vikunja or running Focalboard as a Mattermost plugin instead.
What’s the difference between Focalboard standalone and Mattermost Boards?
Same core code, different packaging. Standalone Focalboard runs as a separate Docker container with its own UI. Mattermost Boards is Focalboard integrated into the Mattermost chat platform — same features but accessed through Mattermost’s interface. Mattermost Boards is actively maintained; standalone Focalboard is not.
Can I import data from Notion or Trello into Focalboard?
Focalboard supports importing from Trello (JSON export), Asana (CSV), and Notion (CSV). Go to the board menu → Import → select your source format. The import maps columns and properties as closely as possible, but some manual cleanup may be needed.
Does Focalboard support team collaboration?
Yes. Multiple users can register and share boards. There’s no fine-grained permissions (all registered users can see all boards), but you can restrict registration in the config file to control who has access.
Can I migrate from Focalboard to Vikunja?
There’s no direct migration tool. Export your Focalboard data as CSV (or copy from the database), then import into Vikunja. Both support Kanban views with custom properties, so the conceptual model maps well. The manual effort depends on how many boards and cards you have.
How lightweight is Focalboard compared to alternatives?
Very lightweight. At ~50 MB RAM with SQLite, Focalboard uses a fraction of what Vikunja (~150 MB) or full project management tools like Taiga (~500 MB+) need. It’s one of the lightest self-hosted task management options available.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments