Search iThub

Search tools, categories and collections. Type at least two characters.

Explore all tools
↑ ↓ to explore resultsEnter to open · Esc to close

PLANKA

Self-hosted Kanban board with real-time sync, Docker and Helm installs, and a paid Pro edition

Visit website Save

PLANKA is a self-hosted Kanban board from PLANKA Software GmbH with real-time collaboration, Markdown cards, webhooks, a REST API and two-factor sign-in. Community is free under a fair-code license; Pro adds mobile, timeline views and SSO.

Pricing
Freemium
Deployment
Self-hosted
Platforms
Web, Windows, Linux
12,663stars1,397forks
2views
Updated

What is PLANKA?

PLANKA is a self-hosted Kanban board for project and task tracking. Teams organise work into projects, boards, lists and cards, and every change reaches other open browsers in real time. It is developed by PLANKA Software GmbH in Kempten im Allgäu, Germany, together with a contributor community. According to the company history, the first commit dates from 2019, Community 1.0 shipped in 2021, the GmbH was founded in 2024 and Community 2.0 arrived alongside the paid Pro edition in 2025.

There are two main editions. Community is free to self-host and covers boards, cards, comments, attachments, custom fields, webhooks, the REST API and two-factor sign-in. PLANKA Pro adds a phone and tablet layout, calendar, timeline and map views, templates, guest roles, OIDC single sign-on and PDF export, and runs either on your own server or as a hosted instance in Germany. The edition comparison lists the split. Community is distributed as the Docker image ghcr.io/plankanban/planka with a reference Compose file, as a Helm chart, and as a planka-prebuild.zip archive for manual installs on Debian, Ubuntu or Windows.

The latest Community release is v2.3.1 from November 5, 2026. It fixes a crash in the card description editor on boards with a member who has no username. Version 2.3.0, one day earlier, added saved board filters, comment replies, @mentions in descriptions, webhooks scoped to one project or account and a keyboard shortcuts dialog. It also limited failed sign-ins per address and per account, blocked link-favicon fetches to private addresses and added encrypted backups. Version 2.2.0 in August 2026 removed OIDC from Community and moved it to Pro, added TOTP two-factor authentication, trusted devices and inactivity logout, raised the manual-install requirement to Node.js 24 and stopped building armv7 images.

The server is a Node.js application built on Sails.js with Knex migrations against PostgreSQL; real-time updates travel over Sails websockets. The browser client uses React 18 with Redux and redux-saga and is built with Vite. Uploaded images are processed with sharp, files live in a local data directory or an S3-compatible bucket, mail goes out over SMTP and notifications are sent through Apprise. The 2.3.0 notes report translations for 34 languages, all contributed by the community.

Community is not released under an OSI open-source license. It uses the PLANKA Fair Use License, a fair-code license derived from the n8n Sustainable Use License. It allows personal use, internal use inside an organisation and free hosting for non-profits, but prohibits running PLANKA as a hosted service for third parties for commercial gain. Files marked .pe. fall under the commercial Pro/Enterprise license. Community has no native mobile app, no Gantt or calendar view and no single sign-on; those belong to Pro, and the PLANKA Notes quick-capture app is a community project rather than an official client.

Inside the application

PLANKA screenshots

Explore the interface. Open a screenshot to view it at full size.

PLANKA Community board with To Do, Doing, Testing and Done lists, labelled cards, task checklists, a due date and a running stopwatch
PLANKA screenshot 1

Frame from the official README demo of the Community edition: cards with labels, task progress and a stopwatch on the Testing list.

PLANKA board with image-covered cards, labels, custom fields and the view switcher in the toolbar
Pro board with cover images

Official screenshot from planka.app of a demo board; the calendar, timeline and map view buttons shown are Pro features.

PLANKA Pro projects overview with tiles for each project, background images, favourites and unread counters
Projects overview

Official planka.app screenshot of the projects grid in PLANKA Pro with a German interface language.

PLANKA Pro dashboard with date, weekly activity, team pulse chart, featured photos and a live activity feed
Pro personal dashboard

Official repository image of the PLANKA Pro dashboard, marked alpha in the product; not part of Community.

PLANKA Pro timeline listing cards with start dates and durations as coloured bars across September 2026
Pro timeline view

Official repository image of the Pro timeline view, with cards grouped by label; Community has no timeline.

PLANKA Pro card detail on a phone with labels, members, description and a custom field group
Pro card on a phone

Official planka.app screenshot of the Pro phone layout; the Community edition has no mobile layout.

Source: official PLANKA project page.

Key capabilities

  • Projects, boards, lists and cards Work is organised as projects containing boards, boards containing lists, and lists containing cards that are moved by drag and drop. Since 2.0, lists can move between boards, cards in closed lists are shown struck through and new cards can be created at the top of a list. Release 2.3.0 lets you reorder cards by hand in the list view and shows a card counter on the add-card button as a board setting.
  • Real-time collaboration Edits, moves and comments appear for every connected user without a page refresh, carried over websockets by the Sails.js server. PLANKA accepts websocket connections only from the address configured in BASE_URL, so a mismatch between that value and the address in the browser produces a blank page. Behind a reverse proxy, TRUST_PROXY=true is also required.
  • Card content Cards hold a Markdown description, file attachments with a download button, comments with replies, labels, members and task lists whose items can have assignees or link to other cards. Completed tasks can be hidden and custom fields offer copy-to-clipboard. Since 2.3.0, @name mentions work in descriptions as well as comments, and an unsaved description survives a browser crash and is offered back.
  • Stopwatch, due dates and card ages Each card can carry a due date that can be toggled as done and a stopwatch for simple time tracking. Release 2.1.0 added an option to display card ages. These are per-card tools: Community has no time reports, calendar or timeline views, which are part of Pro.
  • Filters and keyboard shortcuts Boards filter by members, labels and a text search. Since 2.3.0, filters can target a set of lists, show unassigned cards, exclude labels and be saved under a name for later. A shortcuts dialog in the user menu documents the key bindings, including + to add a card to the list under the pointer and F to jump to the filter search.
  • Notifications through Apprise Notifications can be delivered through the Apprise library, which supports more than 100 providers such as chat services and mail. Operators can switch Apprise off or limit it with APPRISE_ENABLED, APPRISE_ALLOWED_SCHEMAS and APPRISE_BLOCKED_SCHEMAS. SMTP for email can be configured and tested from the administration interface or set through SMTP_* environment variables.
  • Webhooks Webhooks moved from environment variables to the user interface in 2.0. Since 2.3.0, a webhook can fire for a single project or a single account rather than for every event on the instance, and webhook payloads include only the public profile of the user who made the change.
  • REST API and API keys The server exposes a REST API documented in a Swagger UI, and since 2.1.0 the instance can publish its own specification with SWAGGER_EXPOSED. Clients authenticate with a session token or, since 2.0, a per-user API key. The docs also link a Postman collection, a PHP client and the community Python client plankapy.
  • Local accounts and two-factor sign-in Community uses local accounts with passwords. Release 2.2.0 added TOTP two-factor authentication with ten one-time recovery codes and admin reset, trusted browsers that can skip the second factor for a set period, and an inactivity logout with a warning. Sign-in attempts are rate-limited per client address and per account, tunable with the AUTH_RATE_LIMIT_* variables.
  • Instance administration The first admin is created with npm run db:create-admin-user or the DEFAULT_ADMIN_* environment variables. Operators can cap uploads with MAX_UPLOAD_FILE_SIZE, total storage with STORAGE_LIMIT and accounts with ACTIVE_USERS_LIMIT, set a default language and publish custom end-user terms. Since 2.1.0, PLANKA can run under a URL subpath.
  • Outbound request protection Features that fetch remote content, such as link favicons, could be abused for server-side request forgery. The Docker image ships an outgoing proxy controlled by OUTGOING_BLOCKED_IPS, OUTGOING_BLOCKED_HOSTS and the matching allow lists; by default only localhost and postgres are blocked, so internal hosts such as an S3 endpoint should be added. Manual installs must provide their own OUTGOING_PROXY or firewall rules.
  • File storage on disk or S3 Avatars, board backgrounds and attachments are stored in a unified data directory, or in an S3-compatible bucket configured with S3_ENDPOINT, S3_BUCKET and related variables. Protected files are re-streamed by the server, and since 2.3.0 each route checks the session, account status and password age rather than the token signature alone.
  • Trello import A board can be created from a single Trello JSON export through the Import button. Users and attachments are not imported, and Trello's default export stops at 1,000 actions without warning, so large boards need a custom export through the Trello API or one of the community import scripts listed in the import guide.
  • Docker Compose installation The recommended install downloads the reference docker-compose.yml, which runs the PLANKA image next to postgres:16-alpine. You generate a SECRET_KEY with openssl rand -hex 64, set BASE_URL, create an admin with docker compose run --rm planka npm run db:create-admin-user and start the stack. Since 2.3.0, PLANKA warns on every start while the key is missing, too short or still the example value.
  • Kubernetes Helm chart The official chart is published at https://plankanban.github.io/planka/ and its version follows the application version, so --version 2.3.1 installs PLANKA 2.3.1. It supports ingress with TLS, custom annotations, extra volume mounts and sidecar containers, and derives the base URL from the first ingress host. Release 2.3.0 fixed writable volumes through fsGroup and added probe settings.
  • Manual installs on Debian, Ubuntu and Windows The manual guide targets Debian 13 or Ubuntu 26.04 LTS (Debian 12 and Ubuntu 24.04 also work) and requires PostgreSQL 15 or newer, Node.js 24 or newer and Python 3.11 or newer. A Windows guide uses the same prebuilt archive with PowerShell. The documentation recommends Docker instead, because manual installs need their own outbound proxy configuration.
  • Backup and restore scripts The repository ships docker-backup.sh and docker-restore.sh for the stock Compose setup: they archive the PostgreSQL database and the data volume together. With BACKUP_PASSPHRASE set the archive is encrypted; without it, password hashes, sessions, two-factor secrets, SMTP credentials and API keys sit in the archive in clear form. Setups with S3 storage or an external database need their own backup process.
  • In-place upgrade to Pro A Community installation can be promoted to Pro without moving data. The migration adds a Valkey service and runs npm run db:promote, which currently accepts only Community 2.1.x, 2.2.x and 2.3.x as a starting point. The step is one-way: there is no downgrade back to Community, so the vendor advises taking a backup or testing on a copy first.
Advertisements

Where PLANKA fits

Running a shared board for a team or release

Create a project, add a board per stream of work and set up lists that match the actual stages, for example To Do, Doing, Testing and Done. Add members to the board, use labels for release targets and task lists for the checklist inside each card. Check that two users see each other's moves without reloading; if the page stays blank, compare BASE_URL with the address in the browser. Save the filters people use daily so that each role can reopen its own view.

Moving a team off Trello

Export each Trello board as JSON, create an empty board in PLANKA and use Import with Trello as the source. Compare card and comment counts against the original, because the default Trello export is capped at 1,000 actions and does not warn when it is cut. Members and attachments are not carried over, so re-add people and decide whether the community scripts linked from the import guide are needed for files.

Deploying on a single Docker host

Follow the production Docker guide: download the Compose file, generate a 64-byte secret key, set BASE_URL and create the first admin with the bundled script. Put Nginx, Apache, Caddy or Traefik in front for TLS, set TRUST_PROXY=true and add internal hostnames to OUTGOING_BLOCKED_HOSTS. Confirm the startup log no longer warns about the secret key before inviting users.

Running on Kubernetes

Add the chart repository, pin --version to the release you tested and keep settings in a values.yaml rather than long --set chains. Configure an ingress host with a TLS secret so the chart derives an https base URL. After the first start, the admin_* values can be removed unless you want the admin account locked against edits. Verify that the data volume is writable by the container user and that the PostgreSQL storage class matches your backup policy.

Connecting notifications and automation

Configure SMTP and test it from administration, then decide which Apprise schemas the instance may use and block the rest. For integrations, create an API key per service account and register webhooks scoped to the one project or account that needs them. Use the Swagger UI or plankapy to script board setup. Check that webhook receivers handle retries and that API keys are rotated when people leave.

Hardening and backing up an instance

Enable two-factor authentication for administrators, set an inactivity timeout and review the sign-in rate limits. Schedule docker-backup.sh through cron with BACKUP_PASSPHRASE set, store the passphrase elsewhere and prune old archives. The backup runs against the live instance, so stop the app when you need the database and files captured at the same moment. Restore into a scratch environment at least once and confirm attachments open.

Install

curl -L https://raw.githubusercontent.com/plankanban/planka/master/docker-compose.yml -o docker-compose.yml

Reviews of PLANKA

No reviews yet

Be the first to share your experience with PLANKA.

Loading review form…

Alternatives to PLANKA

Compare PLANKA with these tools →