はじめに
Trelloのようなカンバンボードは便利な反面、タスクの内容や添付ファイルが社外のクラウドに保存されることに抵抗を感じる場面もあります。特に社内の機密プロジェクトや、セキュリティポリシー上データの保存場所を自社管理下に置きたいケースでは、SaaS型のツールを選びにくいことも少なくありません。
そんなときの選択肢になるのが、完全に自前のサーバーで運用できるオープンソースのカンバンボード「Wekan」です。この記事では、Wekanの特徴からDockerを使った構築方法、REST APIを使った実践的な連携までを紹介します。
Wekanとは
Wekanは、MITライセンスで公開されているオープンソースのカンバンボードアプリケーションです。Node.js製のフレームワークであるMeteorをベースに構築されており、ドラッグ&ドロップでカードを操作するTrelloライクなUIをそのままセルフホストできる点が最大の特徴です。GitHub上での開発は非常に活発で、日々細かな修正やアップデートが積み重ねられています。
主な特徴
- 完全セルフホスト - Docker一つで自社サーバーやオンプレ環境に構築でき、データの保存場所を完全にコントロールできます
- リアルタイム同期 - 複数人が同時にボードを操作しても、変更が即座に画面へ反映されます
- 多言語対応 - 100を超える言語に翻訳されており、日本語UIも標準で利用可能です
- 豊富な認証方式 - LDAP、OAuth2、CAS認証など、既存の社内認証基盤と連携しやすい設計になっています
- REST APIを標準搭載 - 外部システムとの連携やタスクの自動登録がAPI経由で行えます
インストール
Wekanは公式でDockerイメージを配布しており、docker composeを使うのが最も手軽な導入方法です。以下は最小構成のdocker-compose.ymlの例です。
version: "3.7"
services:
wekandb:
image: mongo:6.0
container_name: wekan-db
restart: unless-stopped
command: mongod --oplogSize 128 --replSet rs0
networks:
- wekan-tier
volumes:
- wekan-db:/data/db
wekan:
image: ghcr.io/wekan/wekan:latest
container_name: wekan-app
restart: unless-stopped
environment:
- MONGO_URL=mongodb://wekandb:27017/wekan
- ROOT_URL=http://localhost:8080
ports:
- "8080:8080"
depends_on:
- wekandb
networks:
- wekan-tier
networks:
wekan-tier:
driver: bridge
volumes:
wekan-db:
起動は次のコマンド一つです。
docker compose up -d
起動後、http://localhost:8080 にアクセスすると初回セットアップ画面が表示され、管理者アカウントを作成すればすぐに利用を開始できます。
基本的な使い方
WekanのUI自体はTrelloに近く直感的に操作できますが、真価を発揮するのはREST APIによる外部連携です。ここではログインしてトークンを取得し、カードを作成する一連の流れを見てみましょう。
まずユーザー名とパスワードでログインし、認証トークンを取得します。
curl -H "Content-type: application/json" \
http://localhost:8080/users/login \
-d '{ "username": "myusername", "password": "mypassword" }'
レスポンスとしてトークンが返ってきます。
{
"id": "XQMZgynx9M79qTtQc",
"token": "ExMp2s9ML1JNp_l11sIfINPT3wykZ1SsVwg-cnxKdc8",
"tokenExpires": "2026-08-15T00:47:26.303Z"
}
このトークンを使い、指定したボードのリストにカードを新規作成します。
curl -H "Authorization: Bearer ExMp2s9ML1JNp_l11sIfINPT3wykZ1SsVwg-cnxKdc8" \
-H "Content-type: application/json" \
-X POST \
http://localhost:8080/api/boards/{boardId}/lists/{listId}/cards \
-d '{
"title": "リリース作業チェックリスト",
"description": "本番デプロイ前の確認事項をまとめる",
"authorId": "XQMZgynx9M79qTtQc",
"swimlaneId": "{swimlaneId}"
}'
boardIdやlistIdはブラウザでボードを開いた際のURL、またはボード一覧取得APIから確認できます。ログインAPIはユーザー名とパスワードを平文で送信するため、本番環境では必ずHTTPS経由で呼び出すようにしてください。
実践的なユースケース
REST APIが使えることで、Wekanは単なるタスク管理ツールにとどまらず、開発フローの一部として組み込むことができます。
例えば、CIパイプラインでビルドが失敗した際に、自動でWekanのボードにカードを作成する運用が考えられます。
#!/bin/bash
# CI失敗時にWekanへ通知カードを作成するスクリプト例
set -euo pipefail
WEKAN_URL="https://wekan.example.com"
BOARD_ID="your-board-id"
LIST_ID="your-list-id"
SWIMLANE_ID="your-swimlane-id"
TOKEN=$(curl -s -H "Content-type: application/json" \
"${WEKAN_URL}/users/login" \
-d "{ \"username\": \"${WEKAN_USER}\", \"password\": \"${WEKAN_PASS}\" }" \
| jq -r '.token')
curl -s -H "Authorization: Bearer ${TOKEN}" \
-H "Content-type: application/json" \
-X POST \
"${WEKAN_URL}/api/boards/${BOARD_ID}/lists/${LIST_ID}/cards" \
-d "{
\"title\": \"CIビルド失敗: ${CI_JOB_NAME}\",
\"description\": \"コミット ${CI_COMMIT_SHA} でビルドが失敗しました\",
\"authorId\": \"${WEKAN_USER_ID}\",
\"swimlaneId\": \"${SWIMLANE_ID}\"
}"
このように、社内の認証基盤と組み合わせつつ、外部にデータを出さずに障害対応や進捗管理のワークフローを自動化できるのがセルフホスト型ならではの強みです。オンプレミス環境で情報を完結させたいチームや、Trelloのライセンス費用を抑えたい小規模チームにとって、有力な選択肢になるはずです。
まとめ
Wekanは、Trelloライクな使いやすいUIをそのまま自社サーバー上で運用できるオープンソースのカンバンボードです。Dockerを使えば数分で環境を構築でき、REST APIを活用することでCIやチャットボットなど既存の開発ツールと組み合わせた自動化も実現できます。
データの保管場所を自社でコントロールしたい、あるいは既存の認証基盤と統合したタスク管理ツールを探している方は、ぜひ一度Wekanを試してみてください。
