Focalboard: Self-Hosted Kanban Boards and Project Management
Project management tools fall into two camps: the simple ones that run out of features the moment your project gets real, and the complex ones that require a week of configuration before you can create your first task. Trello is easy but limited. Jira is powerful but overwhelming. And both live on someone else's servers.
Focalboard is a self-hosted, open-source project management tool built by the Mattermost team. It gives you Kanban boards, table views, gallery views, and calendar views -- all backed by a structured property system that makes it more than a simple card-shuffling tool.
What Focalboard Does
Focalboard is a board-centric project management tool. Every project lives on a board, and every board has cards with customizable properties. The key views:
- Board view -- Kanban-style columns for drag-and-drop workflow management
- Table view -- Spreadsheet-like rows and columns for data-heavy tracking
- Gallery view -- Card grid with image previews (useful for design projects)
- Calendar view -- Tasks plotted on a calendar by due date
Each view is a different lens on the same underlying data. Change a card's status in the board view and it updates in the table view automatically.
Focalboard vs. Other Self-Hosted Project Management Tools
| Feature | Focalboard | Vikunja | Huly | Leantime | Trello (Free) |
|---|---|---|---|---|---|
| Kanban boards | Yes | Yes | Yes | Yes | Yes |
| Table view | Yes | No | Yes | No | No |
| Gallery view | Yes | No | No | No | No |
| Calendar view | Yes | No | Yes | Yes | Via Power-Up |
| Gantt chart | No | Yes | Yes | Yes | No |
| Custom properties | Yes (rich) | Labels only | Yes | Limited | Custom fields (paid) |
| Templates | Built-in | No | Yes | Yes | Yes |
| Nested tasks | No | Yes (sub-tasks) | Yes | Yes | Checklist only |
| Time tracking | No | No | Yes | Yes | No |
| CalDAV sync | No | Yes | No | No | No |
| Chat integration | Mattermost native | No | Built-in | No | Slack Power-Up |
| Multi-board views | Yes | No | Yes | No | No |
| Self-hosted | Yes | Yes | Yes | Yes | No |
| RAM usage | ~100 MB | ~50 MB | ~500 MB | ~200 MB | N/A |
| License | AGPL/MIT (Personal) | GPL | Proprietary (open core) | AGPL | Proprietary |
Choose Focalboard if you want rich custom properties and multiple board views with a small resource footprint. Choose Vikunja if you want CalDAV sync with phone apps and Gantt charts. Choose Huly if you need an all-in-one platform with built-in chat, time tracking, and HR features. Choose Leantime if your team uses lean/agile methodology and wants Gantt charts and time tracking.
Installation
Focalboard runs as a standalone server or as a Mattermost plugin. The standalone version is simpler if you do not use Mattermost.
Docker Compose (Standalone)
services:
focalboard:
image: mattermost/focalboard:latest
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- focalboard_data:/opt/focalboard/data
environment:
FOCALBOARD_PORT: 8000
volumes:
focalboard_data:
docker compose up -d
Visit http://your-server:8000 and register your first account.
With PostgreSQL (Production)
For multi-user production setups, swap SQLite for PostgreSQL:
services:
focalboard:
image: mattermost/focalboard:latest
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- focalboard_data:/opt/focalboard/data
- ./config.json:/opt/focalboard/config.json
depends_on:
- db
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: focalboard
POSTGRES_PASSWORD: changeme
POSTGRES_DB: focalboard
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
focalboard_data:
postgres_data:
Create a config.json for the database connection:
{
"serverRoot": "http://localhost:8000",
"port": 8000,
"dbtype": "postgres",
"dbconfig": "postgres://focalboard:changeme@db:5432/focalboard?sslmode=disable",
"useSSL": false,
"webpath": "./pack",
"filespath": "/opt/focalboard/data/files",
"telemetry": false,
"enablePublicSharedBoards": true
}
Mattermost Plugin Mode
If you already run Mattermost, Focalboard is available as a built-in plugin:
- Go to System Console > Plugin Management
- Enable the Focalboard plugin
- Access boards from the channel sidebar
This mode gives you tight integration: link boards to channels, mention users, and get notifications through Mattermost.
Like what you're reading? Subscribe to Self-Hosted Weekly — free weekly guides in your inbox.
Board Setup and Custom Properties
Creating a Board
Focalboard includes starter templates for common workflows:
- Project Tasks -- Standard Kanban with To Do / In Progress / Done
- Meeting Notes -- Cards for recurring meeting agendas and notes
- Content Calendar -- Track content production with publish dates
- Roadmap -- Feature planning with priority and quarter properties
- Bug Tracker -- Issue tracking with severity and component fields
- Personal Tasks -- Simple task board for individual use
Select a template or start with a blank board. You can customize everything after creation.
Custom Properties
This is where Focalboard pulls ahead of basic Kanban tools. Each card can have typed properties:
- Text -- Free-form text fields
- Number -- Numeric values (budgets, story points)
- Select -- Single-choice dropdown (status, priority, component)
- Multi-Select -- Multiple tags per card (labels, categories)
- Date -- Date picker with calendar integration
- Person -- Assign team members
- Checkbox -- Boolean toggle
- URL -- Clickable links
- Email -- Email addresses
- Phone -- Phone numbers
- Created Time / Updated Time -- Automatic timestamps
These properties drive the views. Group your table view by "Component", filter the board by "Priority: High", or sort the calendar by "Due Date". The property system turns Focalboard from a simple Kanban tool into a lightweight database-backed project tracker.
Filters and Sorting
Every view supports filters:
- Filter by any property (e.g., "Priority is High" AND "Assignee is Alice")
- Combine multiple filters with AND/OR logic
- Sort by any property, ascending or descending
- Group by a select or multi-select property
Save different filter combinations as separate views on the same board. Your "My Tasks" view shows cards assigned to you, while the "Sprint Board" view shows everything grouped by status.
Working with Cards
Each card is a structured document:
- Title -- The card name shown on the board
- Properties -- All custom properties defined on the board
- Description -- Rich text content with markdown support
- Comments -- Threaded discussion on the card
- Attachments -- Upload files directly to cards (stored on the server)
Card Templates
Define card templates for repeatable work. A "Bug Report" template might pre-fill properties like severity, component, and steps-to-reproduce sections in the description. When someone creates a new card from the template, they get a structured starting point instead of a blank card.
Sharing and Collaboration
Shared Boards
Focalboard supports sharing boards with people who do not have accounts:
- Open board settings
- Enable "Publish to web"
- Copy the public link
Shared boards are read-only. Viewers can see the board and cards but cannot edit. This is useful for sharing project status with stakeholders who do not need accounts on your system.
Multi-User Permissions
In Mattermost plugin mode, board permissions follow channel membership. In standalone mode:
- Admin -- Full control over the board, can manage members
- Editor -- Can create and edit cards, add views
- Commenter -- Can view and comment but not edit
- Viewer -- Read-only access
Import and Migration
Focalboard can import from several popular tools:
- Trello -- Export your Trello board as JSON, import into Focalboard. Cards, lists, labels, and descriptions come through.
- Asana -- CSV export from Asana, import as a table view
- Notion -- Export Notion databases as CSV, import into Focalboard
To import from Trello: export your board as JSON from the Board Menu, then use Focalboard's Import feature to create a new board with all your cards, lists, and labels preserved.
Focalboard also exposes a REST API for automation -- create cards from form submissions, move cards when CI/CD pipelines succeed, or sync with external tools like GitHub Issues. Export any board as CSV for backup or spreadsheet analysis.
Backup
SQLite (default):
cp /path/to/focalboard/data/focalboard.db \
/backup/focalboard-$(date +%F).db
PostgreSQL:
docker exec focalboard-db pg_dump -U focalboard focalboard \
> /backup/focalboard-$(date +%F).sql
Include the files/ directory to preserve card attachments.
Known Limitations
- No Gantt chart -- If you need timeline visualization, Vikunja or Huly are better choices.
- No time tracking -- No built-in way to track hours spent on cards. You need a separate tool like WakaPI or Toggl.
- No mobile app -- The web UI is responsive but there is no native mobile app. The Mattermost mobile app does include basic board access when running in plugin mode.
- No recurring cards -- Unlike Vikunja, there is no built-in recurrence for tasks. You can script it through the API.
- Mattermost stewardship -- Focalboard's future is tied to Mattermost's product direction. The standalone version receives less attention than the plugin version.
The Bottom Line
Focalboard sits in a productive middle ground between simple Kanban boards and heavyweight project management suites. The custom property system gives you structure without requiring a database degree, and the multiple view types mean you can look at the same project data in whatever way makes sense for the task at hand.
If Trello's free tier limitations pushed you to look for alternatives, or if you want boards that integrate natively with Mattermost, Focalboard delivers. The resource footprint is small enough for a homelab, the template system gets new boards productive quickly, and the API opens the door to automation. For teams that think in boards and cards, it is a solid self-hosted choice.
