ToolJet 部署选型指南:自托管(Self-Hosted)与云服务(Cloud)的完整决策与实践路径
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
ToolJet 是一个面向内部工具、数据看板、业务应用、工作流与 AI Agent 构建的开源低代码平台。部署方式的选择直接决定了你的数据控制权、可扩展性和运维效率。本文基于官方部署指南,系统对比 ToolJet 的两种部署模式——自托管与云服务,并结合当前仓库中的部署配置、编排文件与初始化脚本,给出从选型判断到落地启动的完整实践路径。
部署模式总览:两种模型,一条主线
ToolJet 官方提供了两种部署选项——Self-Hosted(自托管)与Cloud(云服务)。选择哪种模式,本质上是在回答三个问题:
- 数据由谁掌控?自托管将数据保留在你的基础设施内;云服务由 ToolJet 团队托管。
- 基础设施由谁运维?自托管需要你自行管理服务器与中间件;云服务开箱即用。
- 扩展能力如何获取?自托管依赖你自己的容量规划;云服务自动伸缩。
仓库文档 docs/docs/tj-setup/tj-deployment.md 明确指出,这个选择"至关重要,因为它影响数据控制、可扩展性和运营效率"。下文分别展开两种模式的适用场景与理由,再结合仓库源码给出自托管的实际操作路径。
Self-Hosted 自托管:把控制权握在自己手里
自托管意味着将 ToolJet 部署在你自己的基础设施上(本地机房 on-premises 或私有云)。这是追求合规、安全与深度定制的组织首选。
选择自托管的三大核心理由
- 完整的数据控制(Complete Data Control):部署在自己的基础设施上,数据始终处于你的掌控之内,满足严格的合规与隐私要求。仓库文档 docs/docs/tj-setup/instances.md 进一步强调:自托管实例下 "ToolJet 无法访问你的数据"(ToolJet does not have access to your data),这从产品层面保证了数据私密性。
- 可定制性(Customizability):自托管允许更深度的定制,以匹配组织的既有工作流、集成需求与独特业务场景。
- 增强的安全(Enhanced Security):在本地机房或私有云中托管,你可以施加自己的安全策略,为敏感数据增加额外保护层。
实例(Instance)与多实例架构
从仓库文档 docs/docs/tj-setup/instances.md 可以了解到,ToolJet 将一次自托管部署称为一个实例(Instance)。每个实例独立运行,拥有自己的配置、数据与用户体系;实例内部还可以创建多个工作空间(Workspace),用于隔离不同团队或项目。实例的价值体现在三个方面:
- 数据隔离:为不同团队、部门或客户分离数据;
- 合规:按组织监管要求托管数据;
- 数据隐私:ToolJet 不接触你的数据。
在实例规划上,文档给出了两种典型形态:
- 单实例(Single Instance):适合希望快速上线、同时满足数据合规与隐私要求、运维开销最小的团队;
- 多实例(Multiple Instances):适合需要跨部门隔离管理应用、跨地域托管数据以满足合规、或为更严格的 SDLC 流程拆分开发/预发/生产环境的组织。
自托管的落地路径:仓库中的部署资产
仓库根目录与 deploy 目录提供了完整的自托管部署资产,覆盖 Docker Compose、Helm、Kubernetes(AKS/GKE)、OpenShift 与 EC2 等多种形态:
- Docker Compose:deploy/docker/docker-compose.yaml 与 deploy/docker/docker-compose-db.yaml 是两种核心编排方式(详见下文);
- Helm:deploy/helm 适用于 Kubernetes 集群的声明式部署;
- Kubernetes:deploy/kubernetes(含 AKS、GKE 子目录);
- OpenShift:deploy/openshift;
- EC2:deploy/ec2/ee。
此外,docs/docs/setup 目录集中了各平台的逐步部署指南,包括 Docker 部署、系统需求、环境变量参考 以及 Kubernetes/Helm/OpenShift/ECS/云厂商等专项文档。
Docker Compose 生产部署(推荐方式)
官方推荐的快速生产部署路径是 Docker Compose。仓库中的 deploy/docker/docker-compose-db.yaml 展示了"内置 PostgreSQL"的完整服务拓扑,包含三个关键服务:
- tooljet:主应用容器,使用
tooljet/tooljet-ce:latest镜像,映射80:80端口,通过env_file: .env注入配置,启动命令为npm run start:prod,并设置SERVE_CLIENT: "true"与PORT: "80"; - postgres:数据存储,使用
postgres:13,数据卷绑定挂载到宿主机postgres_data目录(volumes.postgres.driver_opts.device: ${PWD}/postgres_data),便于备份与迁移; - postgrest:当启用 ToolJet Database(
ENABLE_TOOLJET_DB=true)时提供 REST 接口的 PostgREST 服务,使用postgrest/postgrest:v12.0.2镜像。
而 deploy/docker/docker-compose.yaml 则对应"外部 PostgreSQL"场景:只保留 tooljet 服务,PostgREST 服务被注释掉,需按需启用。
密钥初始化:internal.sh 做了什么
部署文档 docs/docs/setup/docker.md 提到,internal.sh用于生成基础.env变量。仓库中的 deploy/docker/internal.sh 完整揭示了它的逻辑——该脚本逐个检查并回填以下密钥:
| 环境变量 | 生成方式 | 用途 |
|---|---|---|
LOCKBOX_MASTER_KEY | openssl rand -hex 32(64 字符十六进制) | 加密数据源凭据等敏感信息的主密钥 |
SECRET_KEY_BASE | openssl rand -hex 64(128 字符十六进制) | 应用安全操作与会话签名的密钥 |
PGRST_JWT_SECRET | openssl rand -hex 32 | PostgREST 认证使用的 JWT 密钥 |
PG_PASS/TOOLJET_DB_PASS | openssl rand -base64 12处理后截取 16 位 | PostgreSQL 数据库密码 |
PGRST_DB_URI | 基于生成的密码拼装postgres://postgres:<password>@postgresql/tooljet_db | PostgREST 连接数据库的 URI |
脚本使用awk对.env进行原地更新:若变量已存在则跳过(避免覆盖已有配置),不存在则生成并追加。这意味着重复执行脚本是安全的,且所有密钥均为一次性随机生成,无需手工指定。
TOOLJET_HOST 与域名配置
部署完成后,需要设置TOOLJET_HOST环境变量,它可以是服务器的公网 IPv4 地址或自定义域名,两种形式:
TOOLJET_HOST=http://12.34.56.78 TOOLJET_HOST=https://tooljet.yourdomain.com注意两点:TOOLJET_HOST必须以http://或https://开头;若使用自定义域名,需要在 DNS 中配置指向服务器 IP 的A记录。更多环境变量请参考 docs/docs/setup/env-vars.md。
版本选择:LTS 优先
自托管部署还涉及版本选择。仓库文档 docs/docs/setup/choose-your-tooljet.md 将 ToolJet 版本划分为三类:
- LTS(长期支持)版本:官方推荐用于生产环境,优先获得缺陷修复与稳定性保障,适合对稳定性与持续性能有要求的场景;
- Pre-Release 预发布版本:用于尝鲜最新特性,但可能包含缺陷、缺乏 LTS 的稳定性,官方明确不建议用于生产环境;
- Past 历史版本:不再维护,不接收更新与安全补丁,不建议在生产使用。
对于生产环境,应优先选择最新 LTS 版本,并关注升级文档(如 升级到最新 LTS 版本 中的要求:升级前务必完整备份数据库;低于 v2.23.0-ee2.10.2 的版本需先升级到该版本)。
ToolJet Cloud:托管服务,聚焦构建本身
ToolJet Cloud 是由 ToolJet 团队运营的托管服务,消除了基础设施管理负担,提供快速部署与无缝更新。适合追求快速上线、弹性伸缩、降低运维复杂度的团队。
选择 ToolJet Cloud 的三大核心理由
- 零配置启动(Hassle-Free Setup):无需管理服务器或基础设施,一切由 ToolJet 团队搭建与维护,团队只需专注应用构建。
- 无缝更新与维护(Seamless Updates and Maintenance):始终使用最新特性与更新,无需人工干预;备份、正常运行时间与维护均由平台负责。
- 自动伸缩(Scalability):云部署随团队规模与应用需求自动扩展,保证一致的性能表现。
订阅计划:两种部署模式下的商业维度
ToolJet 为两种部署模式都提供了多种订阅计划。不同计划在功能与成本上存在差异,具体细节以官方定价页面为准(见 docs/docs/tj-setup/tj-deployment.md 中的说明)。结合仓库结构可以确认,订阅与许可相关的实现存在于服务端:
- 数据库迁移层可见许可相关表结构,如 AddOrganizationLicenseTable 迁移 与 CreateSelfhostCustomerLicenses 迁移;
- 自托管与云的许可说明分别见 docs/docs/tj-setup/licensing/self-hosted.md 与 docs/docs/tj-setup/licensing/cloud.md。
决策对照:如何为你的团队选择
综合上文,可将两种模式的关键差异归纳如下:
| 维度 | Self-Hosted 自托管 | ToolJet Cloud |
|---|---|---|
| 数据存放 | 你的基础设施(本地/私有云) | ToolJet 团队托管 |
| 数据控制权 | 完全自主,ToolJet 无法访问 | 受托管平台策略约束 |
| 合规/安全 | 自行实施安全与合规策略 | 由托管方负责基线安全 |
| 定制能力 | 深度定制(集成、工作流、品牌) | 以平台提供能力为边界 |
| 运维负担 | 自行维护(可用 deploy 与 docs/docs/setup 自动化) | 零运维,含更新、备份、可用性 |
| 扩展方式 | 自行规划容量 | 自动伸缩 |
| 适用场景 | 严格合规、数据敏感、深度定制 | 快速上线、小团队、降低运维复杂度 |
实践建议:如果你的组织处于金融、医疗、政企等强监管行业,或对数据主权有硬性要求,选择自托管,并优先采用 Docker Compose 内置 PostgreSQL 的方案(参考 deploy/docker/docker-compose-db.yaml),通过internal.sh自动生成全部密钥后以docker-compose up -d一键启动。如果你的团队希望最快速度开始构建应用、且不希望承担任何基础设施职责,ToolJet Cloud 是更合适的选择。
延伸阅读
- 部署模式与订阅计划总览:docs/docs/tj-setup/overview.md
- 实例与多实例架构:docs/docs/tj-setup/instances.md
- Docker Compose 部署与升级指南:docs/docs/setup/docker.md
- 环境变量完整参考:docs/docs/setup/env-vars.md
- 版本类型(LTS/Pre-Release/历史版本)说明:docs/docs/setup/choose-your-tooljet.md
- 部署编排资产:deploy/docker、deploy/helm、deploy/kubernetes、deploy/openshift
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考