自動化

ToolJetとは:OSSの社内ツール基盤をDocker Composeで建てる手順とAppsmithとの選び分け

ToolJetとは:OSSの社内ツール基盤をDocker Composeで建てる手順とAppsmithとの選び分け

ToolJetは、PostgreSQLやREST APIにつないだ承認画面・在庫照会・顧客管理などの社内ツールを、画面部品の配置とSQL・JavaScript・Pythonのクエリで組み立てるオープンソースのローコード基盤です。この記事では2026年10月31日時点の公式情報をもとに、データの置き場所とイメージの種類、作る人の数で決まる料金とセルフホスト無料版の上限、公式のComposeファイルで自社サーバに建てる手順を順に確認します。パラメータ付きSQLとWebhookのリクエスト例を示したうえで、Appsmith・Budibase・Retoolとの選び分けを言い切ります。

まとめ:ToolJetは作る人の課金と頻繁なLTS更新を前提に選ぶAGPLの基盤

ToolJetが向くのは、既存のデータベースやAPIの上に、作る人が少数で使う人が数十人規模の社内ツールを載せる案件です。SQLとJavaScriptに加えてPythonでもクエリを書けるため、データ加工の多い画面を少ない手数で作れます。課金は作る人(Builder)の人数が基準で、セルフホストの無料版は作る人2人・使う人50人・アプリ10本までと料金表に書かれています。

自社サーバに建てるときは、公式のComposeを取得したまま起動しないでください。イメージのタグが可変のee-lts-latestで、80番ポートがHTTPのまま外に開き、サインアップも閉じていない設定です。版の固定、ポートの限定、サインアップの停止を済ませたうえで、10日で6本出ることもあるLTS版の修正に追従する運用を組みます。動くのはx86のサーバだけで、arm64のサーバには載りません。

ToolJetの定義とToolJet Database・外部データソースで画面を組む仕組み

ToolJetでは、データソースを登録する、クエリを書く、画面部品にクエリの結果を結びつける、の3段で社内ツールを作ります。最初に決めるのはデータの置き場所です。

PostgreSQLのToolJet Databaseと90以上の外部データソースの選択

ToolJet Databaseの説明によると、内蔵のデータベースは準備なしで他のデータソースと同じようにクエリでき、SQLエディタで直接SQLも書けます。テーブル間の関連付けには外部キーを使う構成です。実体はToolJetが使うPostgreSQLの中の別データベースで、環境変数のページは、APIでの読み書きにPostgREST v12.2.0を使うと明記しています。

既に業務データがあるなら、外部のデータソースとして登録します。GitHubのREADMEは90以上のデータソースに対応するとし、PostgreSQL・MySQL・MongoDB・REST API・GraphQL・Google Sheetsなどが並びます。基幹システムの正本を内蔵DBへ写すと二重管理になるため、正本が外にあるデータは外部接続で扱い、内蔵DBは画面側だけで完結する補助データに限るのが原則です。

AGPL-3.0の本体とEEイメージ・CEイメージで分かれる配布の形

リポジトリのLICENSEファイルはAGPL-3.0です。AGPLは、改変したToolJetをネットワーク越しに他者へ使わせるとき、改変後のソースの提供を求めます。社内で改変せずに使う限り、この義務が問題になる場面はまずありません。GitHubのリポジトリのスター数は、2026年10月31日時点で41,151件でした。

配布されるイメージは、次に示す2種類です。公式のComposeが使うtooljet/tooljet(EE)と、Docker Hubのtooljet-ce(CE)で、どちらにもv3.20.252-ltsのタグが付いています。READMEはワークフロー機能をCEではなくToolJet AI(有償版)側の機能として挙げています。ワークフローを使う予定があるなら、公式どおりEEイメージを選んでください。

ToolJetの料金体系と作る人の課金・セルフホスト無料版の上限

ToolJetの課金は、作る人の人数に、使う人の上限とAIクレジットの量を組み合わせた形です。クラウド版とセルフホスト版で使える機能が違います。

Cloud版Free・Basic・Pro・Teamの月額とBuilder単位の数え方

公式の料金ページで2026年10月31日に確認した値です。月額はいずれも作る人1人あたりで、年払いの割引を適用した表示です。

プラン Cloud版の月額 セルフホスト版の月額 使う人の上限 アプリ数
Free $0 $0 50人 10本
Basic $23 なし 50人 10本
Pro $79 なし 50人 10本
Team $199 $199 100人 無制限
Enterprise 要相談 要相談 無制限 無制限

Teamの購入画面では、年払いが月$199、月払いが月$249と表示されます。監査ログ、カスタムのユーザーグループ、GitSync、開発・本番のような環境の分離は、Team以上の機能です。使う人が100人を超えるとEnterpriseの見積もりになるため、全社員に配る申請ツールでは費用が人数で跳ねます。ローコード製品のライセンス費と開発費の総額の考え方は、ローコード開発の費用相場で整理しています。

セルフホストFreeの作る人2人・使う人50人・アプリ10本という上限

セルフホストの無料版は、サーバ代以外の費用がかかりません。ただし料金表には、作る人2人、使う人50人、アプリ10本の上限が書かれています。ユーザーロールのページは、Admin・Builder・End-userの3つのロールが課金の計算に使われると説明しています。

ワークフローはクラウド版では使えず、セルフホスト版だけの機能です。料金表ではセルフホストの全プランで実行回数が無制限ですが、定時起動のスケジューラーはTeam以上に限られます。部署ごとに作る人が3人以上いる、または夜間バッチをToolJetで回したい案件は、無料版の範囲を超えます。AGPLのCEイメージに同じ人数の上限が掛かるかは、2026年10月31日時点で公式に明記がありません。導入前に試用環境で、想定人数の利用者を登録できるか確かめてください。

公式Composeとinternal.shでToolJetを自社サーバに建てる手順

公式のDocker Composeの手順には、PostgreSQLを同じComposeで動かす方式と、RDSなど外部のPostgreSQLを使う方式があります。ここでは前者で、本番に出す前に必要な変更を加えた手順を示します。

x86限定・メモリ4GBから始めるシステム要件とPostgreSQL 16の推奨

システム要件のページによると、ToolJetのイメージは64ビットのx86のLinuxで動き、arm64は非対応です。Docker Hubのタグもamd64だけで、AWSのGravitonやApple SiliconのMacにはそのまま載りません。Windowsは直接の対象外で、仮想マシンかWSL2を使います。

ToolJet本体の最小は1 vCPU・メモリ4GB・ディスク8GiBです。PostgreSQLは16.x系が推奨で、目安は2 vCPU・8GB・20GB以上とされています。同じサーバに両方を載せるなら、メモリ12GB級のx86インスタンスから見積もると要件に沿います。ワーカーを分けて複数台で動かす場合は、外部のRedis 7.x系が必須です。

internal.shが生成する秘密情報と版固定・ポート制限の設定手順

公式のinternal.shは、.envの空欄を埋めるスクリプトです。データソースの認証情報を暗号化するLOCKBOX_MASTER_KEY、セッションCookieを暗号化するSECRET_KEY_BASE、PostgREST用のPGRST_JWT_SECRETをopensslで生成し、DBのパスワードは入力するかEnterで自動生成します。次の手順は、その後に版とポートとサインアップの設定を変えてから起動します。

# 公式ファイルを取得する(PostgreSQL 16 を同じ Compose で動かす方式)
mkdir tooljet && cd tooljet
BASE=https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker
curl -fsSL -o docker-compose.yaml "$BASE/docker-compose-db.yaml"
curl -fsSL -o .env "$BASE/.env.internal.example"
curl -fsSLO "$BASE/internal.sh" && chmod +x internal.sh
mkdir postgres_data
./internal.sh   # 秘密情報3つと DB パスワードを .env に書き込む

# 可変タグをやめて LTS の版に固定する
sed -i 's|tooljet/tooljet:ee-lts-latest|tooljet/tooljet:v3.20.252-lts|' docker-compose.yaml
# 80 番をサーバ自身に限り、前段の Nginx などで HTTPS を終端する
sed -i 's|- 80:80|- 127.0.0.1:8080:80|' docker-compose.yaml
# 公開 URL と、招待した人だけが登録できる設定
sed -i 's|^TOOLJET_HOST=.*|TOOLJET_HOST=https://tooljet.example.co.jp|' .env
sed -i 's|^DISABLE_SIGNUPS=.*|DISABLE_SIGNUPS=true|' .env

docker compose up -d

Composeは${PWD}/postgres_dataをPostgreSQLの保存先にするため、必ず取得したディレクトリで起動します。LOCKBOX_MASTER_KEYは接続情報の暗号鍵なので、.envはDBのバックアップと一緒に別の場所へ退避してください。DISABLE_SIGNUPS=trueにすると、登録画面は見えたまま招待された人しか登録できなくなります。権限とアカウントの棚卸しの考え方は、ローコード開発のセキュリティリスクと対策も参考になります。

CVE-2026-55413を踏まえたLTS版の追従と更新前の2つのDBの退避

2026年6月に公開されたCVE-2026-55413は、Builderロールの利用者がマーケットプレイスのプラグインを書き換え、インスタンス全体でサーバ上のコードを実行できる深刻度criticalの欠陥でした。影響版は3.20.169-lts以前で、3.20.178-ltsで修正されています。勧告はワークスペースの作成者が既定でBuilderになると書いており、誰でも登録できる状態のまま公開すると危険が大きくなります。

10月には、サインアップを無効にしてもAPIから登録できてしまうGHSA-gwr6-mv6v-23f2が3.20.242-ltsで直りました。LTSの版はv3.20.252-lts(10月30日)まで、10月21日から10日間で6本出ています。少なくとも月1回は最新のLTSに上げる運用を前提にしてください。公式の更新手順は、アプリ用のPG_DBと内蔵DB用のTOOLJET_DBの両方をバックアップしてから、docker compose down、イメージのタグの書き換え、docker compose up -dの順です。

既存DBへのパラメータ付きSQLとWebhookで処理を動かす設定例

社内ツールの中身は、既存DBへのクエリと、外部からの処理の起動でほぼ決まります。どちらも書き方を誤ると、情報漏えいや二重実行の原因になります。

PostgreSQLデータソースで名前付きパラメータを使うSQLの書き方

PostgreSQLの接続ページによると、SQLモードでは値を入れたい位置に:parameter_nameの形のプレースホルダを書き、パラメータ欄で値を渡します。次は、画面で選んだ部署の承認待ち申請を新しい順に取る例です。

-- 承認待ちの経費申請を、画面で選んだ部署だけに絞って取得する
SELECT id, applicant, amount, created_at
FROM expense_requests
WHERE status = 'pending'
  AND department = :department
ORDER BY created_at DESC
LIMIT 50;

パラメータ欄にはキーdepartment、値{{ components.departmentSelect.value }}を設定します。同じ値をSQL本文に{{ }}で直接埋め込むと、入力値が文字列としてSQLに連結されるため、パラメータ方式に統一してください。接続に使うDBユーザーはToolJet専用に作り、画面が読むテーブルへの権限だけを与えます。自社サーバ版なら、DB側ではToolJetのサーバのIPだけを許可すれば足ります。

trigger-asyncでワークフローを外部から起動するcurlのリクエスト例

ワークフローは、ToolJetのDB操作・JavaScript・ループ・条件分岐などのノードを線でつなぐ自動処理です。Webhookでの起動では、Bearerトークンによる認証を必ず設定します。次は、別の業務システムから申請データを渡して非同期で起動する例です。

# 申請データを渡してワークフローを非同期で起動する
curl -s -X POST \
  "https://tooljet.example.co.jp/api/v2/webhooks/workflows/${WORKFLOW_ID}/trigger-async?environment=${TJ_ENV}" \
  -H "Authorization: Bearer ${TJ_WORKFLOW_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"name": "山田太郎", "emp_id": 33}'

同期の/triggerは処理の完了まで応答を待つため、時間のかかる処理は/trigger-asyncで受けます。応答の実行IDを、/status/のエンドポイントに渡すと進み具合を確認できます。送った値の読み取り先は、ワークフロー内のstartTrigger.paramsです。トークンと環境名は、Webhook設定の「Copy as cURL」で正しい値を写すのが確実です。既定では60秒あたり100件を超える呼び出しが抑止されるため、一括処理は1件ずつ叩かず、配列で渡してループのノードで回してください。

ToolJet採用条件とAppsmith・Budibase・Retool・コード製の選定軸

同じG8グループで扱った社内アプリ基盤と並べると、ToolJetの持ち味はPythonのクエリとワークフローを自社サーバで持てる点にあります。採る場面と見送る場面を分けて示します。

Pythonのクエリと少人数の作り手が効く案件でToolJetを採る判断基準

ToolJetを選ぶのは、次の条件が2つ以上当てはまる案件です。1つ目は、既存のDBやAPIが正本で、その上に照会・更新の画面を載せたい場合です。2つ目は、集計や整形をPythonで書きたい担当者がいる場合で、ToolJet社のAppsmithとの比較ページもPythonのクエリをToolJet側だけの機能に挙げています。3つ目は、作る人が少なく使う人が100人以内に収まり、作る人の課金で費用が読める場合です。

Webhookで外部から処理を起動し、承認や通知を画面と同じ基盤で回したい業務も、セルフホストのToolJetの得意な範囲です。要件の整理から画面とワークフローの構築、既存システムとの接続までをまとめて任せたい場合は、ノーコード・ローコードアプリ開発として相談いただけます。

arm64のサーバや大人数の利用でToolJetを見送る場面と代替の比較表

ToolJetを選ばないのは、arm64のサーバしか使えない環境、使う人が数百人規模でTeamの上限を超える業務、社外の顧客が使う画面です。代替は次の表で選びます。

状況 ToolJetの扱い 代替の候補
Apache-2.0基盤で既存DBの管理画面を作る 比較して決める Appsmith
DBが無く使う人を人数無制限で増やしたい 見送り Budibase
運用をクラウドに任せ完成度を取りたい 見送り Retool
arm64のサーバしか使えない 見送り Appsmith・Budibase
社外の顧客に使わせる画面 見送り React-admin等のコード製

AGPLを避けたい、または全員課金のほうが安い構成なら、Apache-2.0のAppsmithと並べて試作してください。正本のDBが無く、セルフホスト無料版で人数を気にせず配りたいならBudibaseが合います。運用を任せたいならRetool、社外向けや長期の作り込みならReact-adminやRefineのようにコードで書く管理画面を選びます。

よくある質問:ToolJetの無料範囲・Mac対応・データの保存先・AI機能

ToolJetの導入検討でよく出る質問に、2026年10月31日時点の公式情報をもとに答えます。

ToolJetは無料で使えますか?

使えます。クラウド版とセルフホスト版の両方にFreeがあり、料金表では作る人2人、使う人50人、アプリ10本までです。AIクレジットは月100で、追加購入はできません。セルフホスト版はワークフローの実行回数に上限がない一方、定時起動のスケジューラーと監査ログはTeam以上です。サーバ代と更新作業の手間は自社の負担になる点も見込んでください。

ToolJetはApple SiliconのMacやarm64のサーバで動きますか?

公式には動きません。システム要件のページはx86の64ビットだけを対象とし、arm64は非対応と明記しています。Docker HubのイメージもEE版・CE版ともにamd64だけで、公式のComposeはplatform: linux/amd64を指定しています。検証用も本番用も、x86のサーバかx86の仮想マシンを用意してください。

ToolJetで作ったアプリのデータはどこに保存されますか?

アプリの定義やユーザー情報は、ToolJetが使うPostgreSQLのPG_DBに入ります。ToolJet Databaseに入れた業務データは、同じPostgreSQLのTOOLJET_DBに保存されます。セルフホストなら自社サーバ、クラウド版ならToolJet社のサーバです。外部のPostgreSQLやAPIにつないだデータは元の場所に残り、ToolJetは読み書きの窓口になります。

ToolJetのAI機能はセルフホストでも使えますか?

使えますが、外への通信が要ります。Docker Composeの手順のページによると、AI機能を使う場合はapi-gateway.tooljet.aiとpython-server.tooljet.aiへの通信を許可する必要があります。AIクレジットはFreeで月100、Teamで作る人1人あたり月3,000で、繰り越しはありません。閉じたネットワークで動かすなら、AI機能を使わない前提で画面を設計してください。

ToolJetとAppsmithはどちらを選べばよいですか?

ライセンスと課金の数え方で選びます。ToolJetはAGPL-3.0で作る人の人数に課金し、AppsmithはApache-2.0です。ToolJet社の比較ページでは、AppsmithのBusinessは使う人も含めた全員への課金とされています。作る人が少なく使う人が多い構成ならToolJet、AGPLを避けたい会社やarm64で動かしたい場合はAppsmithが候補です。どちらもDockerで建てられるので、要件の画面を1つずつ試作して比べるのが確実です。

関連記事

お気に入りに入れた記事の一覧

一創の公式 SNS

X では毎朝の新着記事と IT ニュースの速報を、YouTube・TikTok・Instagram では記事の解説動画を配信しています。

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.28 テックブログ リンツ不正アクセス:314万件の対象確認とパスワード強制リセット後の対処
  2. 2026.10.29 テックブログ ソニー生命の不正アクセス:38.5万件の対象確認と窓口、停止中の手続き
  3. 2026.10.27 テックブログ Brotli 脆弱性:CVE-2026-111497の影響確認とNode.js・Python・.NETの更新手順
  4. 2026.01.30 コラム 税務調査は個人と法人で何が違う?担当部署・件数・調べられる点と追徴税額を比較【令和6事務年度】
  5. 2026.09.26 コラム 価格転嫁とは?価格交渉促進月間の調査に回答義務はあるか・取適法の協議記録まで

RELATED POSTS 関連記事

目次