English
Get started

← All templates · Productivity

Deploy PLANKA in one click

Kanban boards for projects and teams, updated for everyone in real time

A self-hosted alternative to Trello.

What is PLANKA?

PLANKA is a kanban board that teams and individuals run in place of Trello. Projects hold boards, boards hold lists, and cards carry labels, due dates, checklists, attachments, comments, custom fields and a stopwatch, with a Markdown editor. Every change shows for everyone on the board at once, and a board can be seen as kanban, a grid or a list. Notifications go out by email or through Apprise to over 100 services, and a REST API, API keys and webhooks connect it to other tools.

People self-host PLANKA to keep their projects on a machine they control. This template runs the free Community edition with PostgreSQL and makes the administrator from the fields, since PLANKA has no sign-up: the administrator adds every account, and board members are editors or viewers. The catch: the Community edition is under PLANKA’s Fair Use License, which allows personal and internal use but not selling access to it, and SSO, themes and the layout for phones and tablets are in the paid PLANKA Pro.

Hosting PLANKA on Pethost

  1. You sign in to Pethost with a passkey, GitHub or Google. No machine yet? You pick a plan, and the link waits until it is ready.
  2. New project opens at PLANKA. You fill in what it asks for and click Create project: Email, Username, Admin password.
  3. In a minute or two PLANKA is live at its own address with HTTPS. Its secrets are made at random, and its data is in the nightly backup.
  4. It is a project like any other: you or your agent can change it, roll it back or restore it.

Questions about PLANKA

Is PLANKA free?

The Community edition is free to self-host under PLANKA’s Fair Use License: for yourself, inside your own organization, and for friends and family, but not to host for others for money. PLANKA Pro, which adds SSO, more views, themes and phone support, costs €7.90 per user a month, or €7.20 billed yearly.

Can I import my Trello boards into PLANKA?

Yes, one board at a time, from the JSON file Trello exports: its lists, cards and labels come over. Users and attachments do not, only one checklist per card does, and Trello’s export stops at 1,000 actions.

How do I add users to PLANKA?

The administrator adds them in Administration → Users with Add user, giving each an email, a password and a role: admin, project owner or board user. There is no public sign-up, and a forgotten password is reset by the administrator.

Why does PLANKA ask me to accept terms?

Every user accepts PLANKA’s End User Terms of Service at their first sign-in. The text it ships is a template: an administrator replaces it with Markdown files of their own in /app/terms/custom, and users are asked again when it changes.

Is there a PLANKA mobile app?

Not an official one. The board opens in a phone’s browser, while the layout made for phones and tablets is part of PLANKA Pro.

How much memory and disk does PLANKA need?

PLANKA is light: about 200 MB of memory with Postgres, and boards grow slowly; attachments take what their files take. On Pethost the Starter plan is enough for it, with room for other apps beside it.

PLANKA Docker Compose file

The template is this compose.yaml and the variables written into the project’s .env as it is created. Pethost runs the file as it is written.

Containers: planka (ghcr.io/plankanban/planka:2.2.1), postgres (postgres:16-alpine).

Volumes, in the nightly backup: data, db.

services:
  planka:
    image: ghcr.io/plankanban/planka:2.2.1
    restart: unless-stopped
    environment:
      BASE_URL: ${URL}
      DATABASE_URL: postgresql://planka:${POSTGRES_PASSWORD}@postgres/planka
      SECRET_KEY: ${SECRET_KEY}
      # Requests come through the proxy, which says the client's address and that it was HTTPS.
      TRUST_PROXY: "true"
      # PLANKA has no sign-up: this administrator is made at the first start, and its password is
      # set again from ADMIN_PASSWORD at every start, so a new one in .env takes effect on restart.
      DEFAULT_ADMIN_EMAIL: ${ADMIN_EMAIL}
      DEFAULT_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      DEFAULT_ADMIN_NAME: ${ADMIN_USERNAME}
      DEFAULT_ADMIN_USERNAME: ${ADMIN_USERNAME}
    volumes:
      - data:/app/data
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: planka
      POSTGRES_USER: planka
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U planka -d planka"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 30s

volumes:
  data:
  db:

More in Productivity