编程 自托管 ToolJet:一条命令试跑,生产走 Compose,升级前先备份两个库

2026-09-19 00:04:01

自托管 ToolJet:一条命令试跑,生产走 Compose,升级前先备份两个库

ToolJet 是开源的自托管低代码/内部工具开发平台,用来搭管理后台、Dashboard、运营系统,直接接现有的数据库、API 和 SaaS。技术栈是 JavaScript/Node.js + React,许可 AGPL-3.0,支持 Docker/K8s/AWS/GCP/Azure 自托管。社区版 CE 免费,包含 80+ 组件、内置 ToolJet Database、90+ 数据源、多页应用与多人协作、AES-256-GCM 加密、SSO;Enterprise 额外提供 AI 生成、Workflows、Modules、RBAC、GitSync CI/CD、Embedded Apps。

  • 项目地址:
  • 文档:

自托管的结论很简单:试跑一条 docker run 就够,生产必须走生成的 Compose + 生成脚本产出的密钥,升级前不备份 PG_DBTOOLJET_DB 就是给自己挖坑。

路径一:本地快速试跑(非生产)

一条命令起一个自带 PostgreSQL 的实例:

docker run \
--name tooljet \
--restart unless-stopped \
-p 80:80 \
--platform linux/amd64 \
-v tooljet_data:/var/lib/postgresql/13/main \
tooljet/try:ee-lts-latest

这条命令只适合本地验证,数据挂在 tooljet_data 卷上,别拿它当生产环境。

路径二:生产部署,用生成好的 Compose

推荐用内置 PostgreSQL,也支持外部托管 PG。

1. 下载生产 compose 文件

curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/docker-compose-db.yaml
mv docker-compose-db.yaml docker-compose.yaml
mkdir postgres_data

外部 PG 用 docker-compose.yaml

2. 生成 .env

curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/.env.internal.example
curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/internal.sh && chmod +x internal.sh
mv .env.internal.example .env && ./internal.sh

internal.sh 会生成 LOCKBOX_MASTER_KEYSECRET_KEY_BASE 和 PostgreSQL 密码。外部 PG 走 .env.external.example + external.sh

3. 启动

docker-compose up -d

Linux 服务器上可能需要 sudo

4. TOOLJET_HOST 必须带前缀

TOOLJET_HOST 必须带 http://https://,填服务器公网 IP 或自定义域名;用域名要先加 A 记录。如果 HTTPS 端点是自签证书,需要设 NODE_EXTRA_CA_CERTS 指向证书的绝对路径。

AI 功能的网络放行

要用 AI 功能,需要在网络安全策略里放行这两个域名:

  • https://api-gateway.tooljet.ai
  • https://python-server.tooljet.ai

备份(仅内置 PostgreSQL)

curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/backup-restore.sh && chmod +x backup-restore.sh ; ./backup-restore.sh

Workflows 的 worker 与 Redis 约束

Workflows 是节点式自动化。启用调度需要 WORKER=true(必需),TOOLJET_WORKFLOW_CONCURRENCY=5(可选,默认就是 5)。

坑在这里:一旦跑独立的 worker 容器或多个实例,job queue 的协调必须用外部有状态 Redis;内置 Redis 只在单容器单实例时可用。

外部 Redis 配置:

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_USER/REDIS_PASSWORD 可选
REDIS_DB、REDIS_TLS 可选

Redis 两个关键参数:

  • --appendonly yes:AOF 持久化
  • --maxmemory-policy noeviction:BullMQ 的要求,防止任务被淘汰丢失

多 worker 的 compose 示例里,tooljet 服务的 imagetooljet/tooljet:ee-lts-latestplatformlinux/amd64commandnpm run start:prodSERVE_CLIENT=truePORT=80;worker 容器设 WORKER=true 且不暴露端口。

升级到最新 LTS

新安装直接用最新版即可,升级指南只针对已有部署。

LTS 每 3–5 个月发一版,EOL 至少 18 个月。LTS 镜像 tag 前缀是 LTS-,例如 tooljet/tooljet:ee-lts-latest

升级前必须完整备份 PostgreSQL 的两个库:

  • PG_DB:应用库,存用户、应用、配置
  • TOOLJET_DB:内置 ToolJet Database 的数据

硬门槛:低于 v2.23.0-ee2.10.2 的版本必须先升到这个版本,才能继续往最新 LTS 升。

升级步骤:

  1. docker compose down
  2. 从 Docker Hub 取最新 LTS tag
  3. docker-compose.yml 里的 image 字段(如 v3.x.x-lts,替换成实际 tag)
  4. docker compose up -d

选 LTS 而不是 latest:LTS 有稳定修复、安全补丁和性能增强。分支模型用 git-flow,base 分支是 develop,稳定版用 mainv1.x.x tag。

另外,MCP server 目前处于 beta,可以在 Claude Code、Codex、Grok Build、Cursor 里接入,用的是你自己的模型订阅,而不是消耗 ToolJet AI 额度。

推荐文章

程序员茄子在线接单