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

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
| Task | What |
|---|---|
| Folder | ~/docker/planka/compose.yaml |
| Web | http://server-ip:3015 |
| First admin | set with DEFAULT_ADMIN_* in the environment |
| Structure | Project → Board → List → Card |
| Attachments | stored in ./user-avatars, ./attachments volumes |
| Phone | add 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.
