How to Install Planka (A Self-Hosted Trello for Projects and the Household)

Planka: a self-hosted Trello — The renovation, the garden, the kids' chores. One board each.

A board with columns — To do, Doing, Done — is the simplest project tool there is, and Trello made it famous. Planka is the self-hosted version: projects with boards, lists and cards, drag and drop, labels, due dates, checklists, attachments, comments and members, in a clean interface that works on a phone. House renovation, the garden, a side project, the kids' chores — one board each, on your server.

Quick reference

TaskWhat
Folder~/docker/planka/compose.yaml
Webhttp://server-ip:3015
First adminset with DEFAULT_ADMIN_* in the environment
StructureProject → Board → List → Card
Attachmentsstored in ./user-avatars, ./attachments volumes
Phoneadd to home screen; the layout is responsive

1. The compose file

mkdir -p ~/docker/planka && cd ~/docker/planka
nano compose.yaml

services:
planka:
image: ghcr.io/plankanban/planka:latest
container_name: planka
ports:
- "3015:1337"
environment:
BASE_URL: http://192.168.1.50:3015
DATABASE_URL: postgresql://postgres@postgres/planka
SECRET_KEY: ${SECRET_KEY}
DEFAULT_ADMIN_EMAIL: john@example.com
DEFAULT_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
DEFAULT_ADMIN_NAME: John
DEFAULT_ADMIN_USERNAME: john
volumes:
- ./user-avatars:/app/public/user-avatars
- ./background-images:/app/public/background-images
- ./attachments:/app/private/attachments
depends_on:
- postgres
restart: unless-stopped

postgres:
image: postgres:16-alpine
container_name: planka_db
environment:
POSTGRES_DB: planka
POSTGRES_HOST_AUTH_METHOD: trust
volumes:
- ./db:/var/lib/postgresql/data
restart: unless-stopped

.env:

SECRET_KEY=output-of-openssl-rand-hex-64
ADMIN_PASSWORD=long-random

The database uses trust auth because only Planka can reach it on the compose network; don't publish its port.

docker compose up -d
sudo ufw allow 3015/tcp

2. First login

http://192.168.1.50:3015, log in with the admin email and password. Once in, you can remove the DEFAULT_ADMIN_* lines from the compose file (the account persists).

3. Make a project

+ Create project → "House". Inside it, + Create board → "Renovation". Add lists: Ideas, To do, In progress, Waiting on someone, Done. Then cards: "Get quotes for the bathroom", with a due date, a checklist (three plumbers), a label (Bathroom), and the PDF quote attached when it arrives. Drag it along as it progresses.

4. People

Users (admin menu) → add a user per family member. Then on the project, Add member so they see it. Assign cards to people; each person's cards show their avatar. Comments on a card are the conversation about it, instead of a WhatsApp thread nobody can find later.

5. Keyboard and phone

/ searches, drag-and-drop works with touch, and the board scrolls sideways on a phone. Add it to the home screen for an app-like feel. Notifications appear in Planka itself; for push, pipe its webhooks through n8n (tutorial 77) to Telegram or ntfy (tutorial 93).

6. Import from Trello

Trello → board menu → Print and export → Export as JSON. In Planka, Create project → Import → Trello and choose the file. Lists, cards, labels and checklists come across.

Back up

./db (dump it — tutorial 65) plus the three attachment volumes. All in ~/docker/planka, so the usual backup covers it.

Behind the proxy

boards.example.com → 127.0.0.1:3015 with the WebSocket lines (live updates need them), and change BASE_URL to the https address.

Troubleshooting

Blank page or broken images. BASE_URL doesn't match the address in the browser.

"Invalid secret key". SECRET_KEY missing or changed; it must stay constant.

Changes made by one person don't appear for another until refresh. WebSockets blocked — the proxy needs the Upgrade headers.

Forgot the admin password. Set DEFAULT_ADMIN_PASSWORD again in the compose file and up -d; it resets that account.

Wrapping up

Two containers, an admin in the environment, one project per thing you're juggling. The renovation, the garden and the kids' jobs each get a board the whole household can see and move cards on — on your server, with the attachments and comments where you'll find them next year.

Call us