イントロ
タスク管理にカンバンツールを使いたいと思いませんか?
もちろんSaaSを使ったほうが手っ取り早いのですが、気軽なメモ書きやタスク管理を自分のサーバーで完結できるのってかっこいい!!
ということで今回導入するのがPlankaです。
Plankaの選定理由は以下の通りです。
- Dockerで動作できる
- 軽量
- OIDC認証に対応している
- UIがシンプルで使いやすい
- Markdown記法に対応している
Plankaの使い方
環境情報
$ docker version
Client: Docker Engine - Community
Version: 29.1.3
API version: 1.52
Go version: go1.25.5
Git commit: f52814d
Built: Fri Dec 12 14:49:51 2025
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 29.1.3
API version: 1.52 (minimum version 1.44)
Go version: go1.25.5
Git commit: fbf3ed2
Built: Fri Dec 12 14:49:51 2025
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v2.2.0
GitCommit: 1c4457e00facac03ce1d75f7b6777a7a851e5c41
runc:
Version: 1.3.4
GitCommit: v1.3.4-0-gd6d73eb8
docker-init:
Version: 0.19.0
GitCommit: de40ad0
前提条件
- Docker がインストールされていること
- Traefik が導入されていること(リバースプロキシサーバー)
手順
-
compose.ymlを作成するdomain.tldは自分のドメインに置き換えてください。services: planka: image: ghcr.io/plankanban/planka container_name: planka restart: unless-stopped volumes: - ./planka-data/avatars:/app/public/user-avatars - ./planka-data/bg-images:/app/public/project-background-images - ./planka-data/attachments:/app/private/attachments expose: - 1337 env_file: - .env environment: DATABASE_URL: postgresql://postgres:${DB_PASSWORD}@postgres/planka DEFAULT_ADMIN_EMAIL: ${ADMIN_EMAIL} # Do not remove if you want to prevent this user from being edited/deleted DEFAULT_ADMIN_PASSWORD: ${ADMIN_PASSWORD} DEFAULT_ADMIN_NAME: ${ADMIN_NAME} DEFAULT_ADMIN_USERNAME: ${ADMIN_NAME} depends_on: postgres: condition: service_healthy labels: traefik.enable: true traefik.http.services.todo.loadbalancer.server.port: 1337 traefik.http.routers.todo.rule: Host(`planka.domain.tld`) traefik.http.routers.todo.tls: true traefik.http.routers.todo.tls.certResolver: cloudflare traefik.docker.network: traefik-network glance.name: Planka glance.icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/planka.png glance.url: https://planka.domain.tld glance.description: kanban project glance.id: planka networks: - default - traefik-network postgres: image: postgres:17-alpine container_name: planka-db restart: unless-stopped volumes: - ./db-data:/var/lib/postgresql/data environment: - POSTGRES_DB=planka - POSTGRES_USER=postgres - POSTGRES_PASSWORD=${DB_PASSWORD} healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d planka"] interval: 10s timeout: 5s retries: 5 labels: glance.parent: planka glance.name: planka-db networks: - default - postgres-backup-network networks: default: traefik-network: external: true postgres-backup-network: external: true -
.envファイルを作成するBASE_URL="https://planka.domain.tld" SECRET_KEY="" # Adminによるローカルユーザー ADMIN_EMAIL="" ADMIN_PASSWORD="" ADMIN_NAME="" # PocketIDによるOIDC認証 OIDC_ISSUER="https://auth.domain.tld" OIDC_CLIENT_ID="" OIDC_CLIENT_SECRET="" # Postgresのパスワード DB_PASSWORD="93ef565399a9702797080c5a4e3cec04" -
Plankaを起動する
docker compose up -d
Plankaの感想
- 良いところ
- 軽量で高速
- 設定がシンプル
- OIDC認証に対応している
- イマイチなところ
- (使う人によりますが)リマインダーや繰り返しタスクの機能はない
- シンプルにカンバンだけ(リストやガントチャートはない)
以上、Plankaの紹介でした。
基本メモ書きはMarkdownにしているので、Plankaのシンプルさでちょうど良い感じです。