Planeは、JiraやLinearと同じ領域に位置するオープンソースのプロジェクト管理プラットフォームです。セルフホスト版のCommunity Editionは見た目の印象よりずっと重く、VPSのサイズを当て推量で決めることが、Plane導入が失敗する最も多い原因になっています。
ドキュメントに記載された要件
Plane公式のセルフホスティング文書は次のように定めています。
| リソース | 要件 |
|---|---|
| CPU | 2コア(x64/AMD64またはAArch64/ARM64) |
| RAM | 最小4GB、本番環境の推奨は8GB |
| OS | Ubuntu、Debian、CentOS、Amazon Linux 2または2023 |
| ランタイム | Docker Engine 20.10以降、Docker Compose v2 |
| ネットワーク | 80番と443番ポート、名前解決できるドメイン |
4GBという下限が現実的な理由
Planeは単一のプロセスではありません。Community Editionのcomposeスタックは13個のコンテナを起動します。
- アプリケーション:
web、admin、space、liveの各フロントエンドと、Django製のapi - バックグラウンド:
worker、beat-worker、migrator - データ:
postgres:15.7-alpine、valkey/valkey:7.2.11-alpine、rabbitmq:3.13.6-management-alpine、minio/minio - エッジ: 80番と443番ポートを担う
proxyコンテナ
13個のコンテナはアイドル状態でも、課題が1件も作られないうちに4GBの大半を消費します。1GBや2GBのプランで動かない理由はここにあります。Planeの効率が悪いからではなく、アプリ本体と並べてデータベース、メッセージブローカー、キャッシュ、オブジェクトストアを動かしているからです。
RAM:チーム規模から決める
| 想定 | RAM | 補足 |
|---|---|---|
| 評価用または2〜5人のチーム | 4GB | ドキュメント上の最小構成。動くが余裕はない |
| 5〜30人が日常的に使用 | 8GB | ドキュメントが本番向けに推奨する構成 |
| 大規模なJira移行の最中 | 8GB以上 | 一括インポートはメモリを消費するが、期間は短い |
サイズを迷ったら大きいほうを選んでください。メモリが足りないときのPlaneの壊れ方は、カーネルがリクエストの途中でコンテナを停止するというもので、明示的なメモリ不足のエラーではなく散発的な障害のように見えます。
CPU:2コアで実際に足りる
課題管理の負荷は断続的です。誰かがボードを開き、APIが応答し、サーバーはまた静かになります。通常のチームなら2 vCPUで余裕をもって処理できます。
4コアが元を取るのは1つの場面だけです。既存のバックログを取り込むときです。一括インポート中はDjangoのAPI、Celeryワーカー、PostgreSQLが同時に動くため、コアが多いほど処理は目に見えて早く終わります。ただしこれは一度きりの作業なので、常時その分を払う価値があることは稀です。4コアのプランが同時に8GBのプランでもある場合は話が別で、Contaboはまさにそれに当たります。
ストレージ:見るべきはPostgresではなくMinIO
データベースは小さいままです。課題、コメント、操作履歴はいずれもテキストで、忙しいチームでもPostgresのボリュームはゆっくりとしか増えません。
変動するのは添付ファイルです。課題にアップロードされたスクリーンショットや資料はすべてMinIOのボリュームに入るため、スクリーンショットを気軽に貼るチームは、データベースが問題になるはるか前に40GBのディスクを使い切ります。
40GBから始め、MinIOのボリュームを監視し、NVMeまたはSSDを選んでください。PostgreSQLの性能はI/O依存で、多数の課題を集計するボード表示ではその差がはっきり出ます。
この要件を満たすVPSプラン
| プロバイダー | プラン | vCPU / RAM / ディスク | 価格 | 評価 | リンク |
|---|---|---|---|---|---|
| Contabo | Cloud VPS 4 | 4 / 8GB / 100GB SSD | 5.50 EUR/月(税別) | 推奨の8GBを満たす唯一のプラン | Contabo |
| Hetzner Cloud | CX23 | 2 / 4GB / 40GB NVMe | 5.49 EUR/月(税別) | 最小要件を満たす。8GBならCX33が8.49 EUR | Hetzner |
| DigitalOcean | Basic 4GB | 2 / 4GB / 80GB SSD | 24 USD/月 | 最小要件を満たす。スナップショット機能が最良 | DigitalOcean |
| Vultr | Regular 4GB | 2 / 4GB / 80GB SSD | 20 USD/月 | 最小要件を満たす。リージョンの選択肢が最も広い | Vultr |
| Linode | Linode 4GB | 2 / 4GB / 80GB SSD | 24 USD/月 | 最小要件を満たす。性能が安定している | Linode |
各社の1GBのエントリープランは意図的に除外しています。これらはPlaneが定める最小要件を下回っており、設定を工夫しても変わりません。
ソースからビルドする場合の注意
PlaneのGitHubリポジトリにあるdocker-compose.ymlは、公開イメージを取得するのではなく各サービスをDockerfileからビルドします。Next.jsのフロントエンドをビルドするには、それを動かすよりはるかに多くのメモリが必要で、4GBのVPSではビルドが極端に遅くなるか失敗します。
サポートされている手順はビルド済みイメージを取得します。
curl -fsSL https://prime.plane.so/install/ | sh -
サーバーはPlaneをビルドするためではなく、動かすために選んでください。
拡張を見据えて
- リサイズを決める前に
docker statsで監視してください。どのコンテナが実際に逼迫しているかが分かります。 - バージョンアップの前には必ずVPSのスナップショットを取ってください。
migratorコンテナが起動時にスキーマ変更を適用します。 - PostgreSQLのボリュームとMinIOのボリュームは必ずセットでバックアップしてください。片方だけでは不完全な状態しか復元できません。
- 多くのプロバイダーはメモリをその場で増やせるため、4GBで始めて後から8GBへ移るのは移行作業ではなく再起動で済みます。
各社のプランをより広く見比べたい場合は、VPS比較の全体版をご覧ください。
追いかける価値のあるコミュニティ情報源:awesome-selfhostedのリストとr/selfhostedです。
Frequently asked questions
セルフホストしたPlaneには実際どれくらいのRAMが必要ですか?
公式の最小要件は4GB、ドキュメントが本番環境向けに推奨しているのは8GBです。Community Editionは13個のコンテナを起動し、PostgreSQL、Valkey、RabbitMQ、MinIOだけで誰もログインしないうちに4GBの大半を占有します。少人数のチームや試用なら4GB、チームが毎朝開く課題管理ツールとして使うなら8GBを選んでください。
PlaneにはCPUコアがいくつ必要ですか?
ドキュメント上の最小要件はx64/AMD64またはAArch64/ARM64で2コアです。日常の課題管理は負荷が継続的ではなく断続的なので、2コアで十分に足ります。Jiraから大量のバックログを移行する予定があるなら4コアが役立ちます。一括処理の最中はDjangoのAPIとバックグラウンドワーカーが同じCPUを奪い合うためです。
Planeにはどれくらいのディスク容量を割り当てるべきですか?
40GBから始めて増加を見込んでおいてください。PostgreSQL自体は長く小さいままですが、課題に添付されたファイルはすべてMinIOに保存され、ディスクを埋めるのはこちらです。スクリーンショットや資料は着実に溜まっていくので、リサイズの判断はデータベースではなくMinIOのボリュームを見て行ってください。