4.0 KiB
4.0 KiB
Planka
Self-hosted Kanban board with card cover images, inspired by Trello
Overview
| Property | Value |
|---|---|
| Category | Productivity / Kanban Board |
| Host | guava (TrueNAS Scale) |
| Status | ✅ Active |
| Image | ghcr.io/plankanban/planka:latest |
| Port | 3090 |
Access
| Type | URL |
|---|---|
| Primary | http://100.75.252.64:3090 (Tailscale) |
| LAN | http://192.168.0.100:3090 |
Features
- Kanban boards with drag-and-drop cards
- Card cover images (auto-set from first image attachment)
- Multiple boards per project
- Card labels, due dates, checklists
- File attachments (up to 50MB)
- Multi-user with role-based access
- OIDC/SSO support (Authentik compatible)
Architecture
┌─────────────────────────────────┐
│ planka (Node.js) │
│ Port 3090:1337 │
│ │
│ ┌───────────┐ ┌────────────┐ │
│ │ Sails.js │ │ Squid │ │
│ │ API + UI │ │ (outbound) │ │
│ └─────┬─────┘ └────────────┘ │
│ │ │
│ ┌─────┴──────┐ │
│ │ planka-db │ │
│ │ Postgres 16│ │
│ └────────────┘ │
└─────────────────────────────────┘
Data Persistence
All data stored at /mnt/data/planka-data/:
| Directory | Purpose | Backup Priority |
|---|---|---|
db/ |
PostgreSQL database | 🔴 Critical |
app/ |
Attachments & cover images | 🔴 Critical |
Backup
# Database backup
ssh guava "sudo docker exec planka-db pg_dump -U postgres planka > /tmp/planka_backup.sql"
# Full data backup
ssh guava "sudo tar -czf /tmp/planka_data_$(date +%Y%m%d).tar.gz /mnt/data/planka-data/"
Configuration
Compose file: /mnt/data/planka-data/docker-compose.yaml
Key Environment Variables
| Variable | Value | Description |
|---|---|---|
BASE_URL |
http://100.75.252.64:3090 |
Public-facing URL |
SECRET_KEY |
(64-byte hex) | Session encryption |
DATABASE_URL |
postgresql://postgres@planka-db/planka |
DB connection |
DEFAULT_ADMIN_EMAIL |
vish_loves_crista@pepe.com |
Admin account |
MAX_UPLOAD_FILE_SIZE |
50mb |
Attachment size limit |
TOKEN_EXPIRES_IN |
365 |
Session lifetime (days) |
TRUST_PROXY |
false |
Set true if behind reverse proxy |
Operations
Start/Stop
# Start
ssh guava "cd /mnt/data/planka-data && sudo docker compose up -d"
# Stop
ssh guava "cd /mnt/data/planka-data && sudo docker compose down"
Update
ssh guava "cd /mnt/data/planka-data && sudo docker compose pull && sudo docker compose up -d"
View Logs
ssh guava "sudo docker logs planka --tail 100"
ssh guava "sudo docker logs planka-db --tail 100"
Troubleshooting
Attachments/Cover Images Not Working
The app data directory must be owned by uid 1000 (node user inside container):
ssh guava "sudo chown -R 1000:1000 /mnt/data/planka-data/app"
ssh guava "sudo docker restart planka"
500 Errors on Upload
Check the data volume permissions (see above). Planka runs as node (uid 1000) inside the container.
Upload Size Limit
Controlled by MAX_UPLOAD_FILE_SIZE env var in the compose file. Default is very low (~1MB) if not set.
History
- 2026-03-29: Deployed on guava, replacing Plane.so
- Chose Planka over Plane for simpler Kanban workflow and card cover image support
External Links
Deployed: 2026-03-29 | Standalone Docker Compose on guava