尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

在 AWS ECS 上部署 ToolJet:CloudFormation、任务定义、环境变量与 PostgREST 完整指南

在 AWS ECS 上部署 ToolJet:CloudFormation、任务定义、环境变量与 PostgREST 完整指南 在 AWS ECS 上部署 ToolJetCloudFormation、任务定义、环境变量与 PostgREST 完整指南【免费下载链接】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本文是一份面向 AWS 用户的自托管部署指南完整讲解如何在 Amazon Elastic Container ServiceECS上以 Fargate 方式运行 ToolJet 平台覆盖一触式 CloudFormation 模板、Redis 与 ToolJet 容器任务定义、必需的数据库/密钥/环境变量配置、ToolJet Database 所需的 PostgREST 服务以及 LTS 版本升级流程。读完本文你将能够独立完成 ToolJet 在 ECS 集群上的生产级部署与后续升级并掌握/api/health健康检查、npm run start:prod启动命令等关键运维细节。本文内容以 ecs.md 为主体骨架并结合 env-vars.md 与仓库源码、部署配置进行深度补充。文中涉及的 AWS 控制台操作截图可在 docs/static/img/setup/ecs 目录中找到原图。部署前置准备 PostgreSQL 数据库:::info 重要前提 在开始 ECS 部署之前你必须手动搭建一个 PostgreSQL 数据库供 ToolJet 使用。 :::ToolJet 使用 PostgreSQL 作为持久化存储用于保存用户与应用相关的数据。这一点与仓库中的 docker-compose 编排完全一致——deploy/docker/docker-compose-db.yaml 中同样将postgres:13作为 ToolJet 的主数据库镜像。在 ECS 场景下你可以将 PostgreSQL 部署在 RDS、EC2 或现有 VPC 内的自建实例上只要保证 ECS 任务所在的 VPC 与安全组能够访问到它即可。如果你不打算让 ToolJet 在启动时自动创建数据库该行为要求 PostgreSQL 用户具备CREATEDB权限可以设置PG_DB_OWNERfalse来禁用自动创建并手动执行建库与扩展创建操作相关说明见 env-vars.md。方式一使用 CloudFormation 一键部署AWS CloudFormation 模板可以把整套服务一次性部署起来官方提供了两种模板通过curl下载后导入 AWS CloudFormation 控制台即可一键部署模板适用于全新环境部署所有服务curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/cloudformation/Cloudfomation-template-one-click.yml已有 VPC/基础设施的集成模板适用于已有服务将 ToolJet 无缝接入现有 VPC 或既有架构curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/cloudformation/Cloudformation-deploy.yml:::info 提示 以上 CloudFormation 模板文件托管在 ToolJet 官方 S3 桶us-west-1 区域中。若你无法访问该地址例如处于内网环境可以手动按下文“方式二”的步骤在 ECS 控制台完成同等配置。 :::模板部署完成后请继续阅读下文完成 Redis、环境变量与 ToolJet Database 的配置验证。方式二手动部署 Redis多人在线编辑与后台任务依赖:::info ToolJet必须配置 Redis它用于启用多人在线协作编辑multiplayer editing以及运行后台任务background jobs。 :::如果你已有可用的 Redis 实例可以继续沿用若需新建按以下步骤在 ECS 集群中部署创建新的任务定义Task Definition界面截图见 ecs-1.png。添加容器并指定镜像与标签务必使用 Redis 6.x 版本例如redis:6.2见 ecs-2.png。创建服务时确保 Redis 与 ToolJet 应用部署在同一个 ECS 集群中并启用公网 IPpublic IP以便 ToolJet 容器可以通过公网地址访问 Redis见 ecs-3.png。之后在 ToolJet 容器中补充以下 Redis 环境变量详见后文 ToolJet 容器环境变量一节REDIS_HOSTredis 任务公网 IP REDIS_PORT6379 REDIS_USERdefault REDIS_PASSWORD部署 ToolJet 应用容器在 ECS 集群上部署 ToolJet 主应用按以下步骤操作。第 1 步准备 PostgreSQL 数据库ToolJet 使用 PostgreSQL 作为持久化存储保存用户与应用相关的数据即本文开篇的前置准备。确保数据库实例已在与 ECS 相同的 VPC 内可达并记录好连接信息。第 2 步创建目标组与 Application Load Balancer创建目标组Target Group与应用负载均衡器ALB将流量路由到 ToolJet 容器。ToolJet 服务端暴露了/api/health端点可直接用作健康检查路径。从源码层面看这一端点在多个模块中都被显式处理健康检查控制器同时响应/health与/api/health两个路径见 server/src/modules/app/controller.ts引导阶段的受保护路径列表包含/api/health见 server/src/helpers/bootstrap.helper.ts日志与链路追踪中间件都将/api/health排除在记录范围之外见 server/src/modules/logging/constant.ts 与 server/src/otel/tracing.ts。也就是说在 ALB 的健康检查中填写HTTP GET /api/health即可获得稳定的存活探针且该请求不会污染访问日志与追踪数据。第 3 步创建 ToolJet 任务定义在集群中创建用于部署 ToolJet 应用的任务定义关键配置如下启动类型兼容性选择Fargate。IAM 角色按需配置任务执行角色Task Execution Role操作系统族选择Linux。任务大小选择3GB 内存 1 vCPU见 ecs-4.png。容器配置见 ecs-5.png容器名称例如ToolJet镜像tooljet/tooljet:EE-LTS-latestLTS 企业版标签社区版对应CE-LTS-latest系列端口映射容器端口3000协议TCP截图显示该端口名为tooljet-3000-tcp应用协议为 HTTP。环境变量在“Environment variables”部分按需填写见下一节敏感信息建议使用AWS Secrets Manager参见 AWS 文档“Specifying sensitive data using Secrets”也可以将环境变量文件存放到S3桶中通过 env file 方式注入参见 AWS 文档“Using env files in task definitions”对应界面见 ecs-6.png。日志与启动命令勾选“Use log collection”启用日志收集并在Docker configuration的 Command 中填写npm run start:prod见 ecs-8.png。关于启动命令npm run start:prod对应 server/package.json 中定义的NODE_ENVproduction node dist/src/main即以生产模式启动 NestJS 服务端。从 server/src/main.ts 的启动逻辑可以看到ToolJet 服务端在启动阶段会执行数据库迁移等引导操作这也是下文“健康检查宽限期设为 900 秒”的原因并通过/api/health对外暴露就绪状态。必需的 10 个环境变量ToolJet 部署必须配置以下环境变量环境变量用途TOOLJET_DBToolJet Database 数据库名TOOLJET_DB_HOSTToolJet Database 数据库主机TOOLJET_DB_USERToolJet Database 用户名TOOLJET_DB_PASSToolJet Database 密码PG_HOSTPostgreSQL 主数据库主机PG_DBPostgreSQL 主数据库名PG_USERPostgreSQL 用户名PG_PASSPostgreSQL 密码SECRET_KEY_BASE用于加密会话 Cookie 的 64 字节十六进制密钥LOCKBOX_MASTER_KEY用于加密数据源凭据的 32 字节十六进制密钥完整的变量说明可参考 环境变量参考文档。以下结合 env-vars.md 对关键变量做进一步说明LOCKBOX_MASTER_KEY必填ToolJet 服务端使用 Lockbox 加密数据源凭据必须是32 字节64 位十六进制字符串。可用openssl rand -hex 32生成。SECRET_KEY_BASE必填用于加密会话 Cookie必须是64 字节128 位十六进制字符串。可用openssl rand -hex 64生成。数据库连接如果希望通过连接串方式连接数据库且目标库不支持 SSL可使用DATABASE_URL格式为postgres://username:passwordhostname:port/database_name?sslmodedisablePG_PORT用于指定端口。数据库自动创建默认情况下 ToolJet 会根据PG_DB自动建库并尝试创建 PostgreSQL 扩展这要求数据库用户具备CREATEDB权限若无法授权设置PG_DB_OWNERfalse并手动执行建库与迁移迁移命令见 server/package.json 中的db:setup/db:setup:prod。更新检查自托管版每 24 小时向官方服务器请求一次更新信息设置CHECK_FOR_UPDATES0可关闭。遥测每 24 小时上报一次用户总数设置DISABLE_TOOLJET_TELEMETRYtrue可关闭。额外的 Redis 环境变量如果你按前文步骤新建了 Redis 服务还需要在 ToolJet 容器内补充REDIS_HOSTredis 任务公网 IP REDIS_PORT6379 REDIS_USERdefault REDIS_PASSWORD第 4 步创建服务运行任务定义在集群中创建 Service 来运行上述任务定义选择集群与启动类型 Fargate见 ecs-9.png。选择集群并设置服务名称任务数量number of tasks建议设置为 2其余保持默认见 ecs-10.png。进入网络配置步骤选择指定的VPC、子网与安全组并确保安全组允许入站流量访问任务的 3000 端口HTTP见 ecs-11.png。由于数据库迁移会在容器启动时作为引导流程的一部分执行请将健康检查宽限期health check grace period设置为 900 秒选择Application Load Balancer选项并指定之前创建的目标组名称系统会自动填充健康检查端点。:::info 提示 以上配置仅为模板参考。你可以根据实际需求自由调整任务定义的资源配置与环境变量参数。 :::部署 PostgREST启用 ToolJet DatabaseToolJet Database 是内置的数据存储能力用户可以直接基于它构建应用。要使用该功能必须额外部署PostgREST服务——它负责以 REST 方式查询 ToolJet Database。关于该功能的详细介绍见 ToolJet Database 文档。第 1 步创建 PostgREST 任务定义创建新的任务定义见 ecs-12.png。添加容器镜像标签如下见 ecs-13.png容器名称PostgREST镜像postgrest/postgrest:v12.2.0端口映射容器端口3001协议TCP。仓库中 deploy/kubernetes/postgrest.yaml 使用postgrest/postgrest:v12.0.2并将容器端口设为 3000在 ECS 部署中请以本文档为准使用 v12.2.0 并映射到 3001 端口同时保证 ToolJet 安全组放行 3001。在环境变量中填写 PostgREST 相关变量见 ecs-14.png完整变量参考见 环境变量文档。PostgREST 服务端需要配置的变量如下摘自 env-vars.md变量说明PGRST_JWT_SECRET用于身份认证的 JWT 密钥若不设置PostgREST 将拒绝认证请求PGRST_DB_URIToolJet Database 的连接串PGRST_LOG_LEVEL日志级别例如info:::tip 密钥生成 可用openssl rand -hex 32生成PGRST_JWT_SECRET的值。PGRST_DB_URI请使用postgrest://[USERNAME]:[PASSWORD][HOST]:[PORT]/[DATABASE]格式。若需要调整更多配置可参考 PostgREST 官方配置文档中的环境变量一节。 :::第 2 步创建服务创建服务并确保 PostgREST 与 ToolJet 应用位于同一个 ECS 集群中见 ecs-15.png。指定服务名称其余设置保持默认见 ecs-16.png。确保 PostgREST 服务位于同一个 VPC内并确认 ToolJet 应用使用的安全组中包含端口 3001同时启用公网 IPpublic IP见 ecs-17.png。第 3 步在 ToolJet 中启用 ToolJet Database部署完成后回到 ToolJet 应用容器补充 环境变量文档中的“Enable ToolJet Database”一节 所列的变量并应用变更变量说明ENABLE_TOOLJET_DBtrue或false控制是否启用 ToolJet DatabaseTOOLJET_DB默认值为tooljet_dbTOOLJET_DB_HOST数据库主机TOOLJET_DB_USER数据库用户名TOOLJET_DB_PASS数据库密码TOOLJET_DB_PORT数据库端口PGRST_JWT_SECRET客户端认证用 JWT 密钥PGRST_HOSTPostgREST 主机:::tip 启用该功能后在我们所有的生产部署方案中服务端启动时会根据TOOLJET_DB指定的库名自动创建数据库。如需手动触发可在 ToolJet 服务端执行npm run db:create对应 server/package.json 中的ts-node ./scripts/create-database.ts。 :::升级到最新 LTS 版本ToolJet 每35 个月发布新的 LTS 版本每个 LTS 版本的生命周期end-of-life至少 18 个月。要查看最新 LTS 版本可访问 ToolJet 官方 Docker Hub 的 tags 页面LTS 标签遵循LTS-前缀加版本号的命名约定例如tooljet/tooljet:EE-LTS-latest。:::info 如果是全新安装请直接使用最新版本本升级指南不适用于新安装场景。 :::升级前的必备条件升级前务必对数据库做一次完整备份以防数据丢失低于 v2.23.0-ee2.10.2 的用户必须先升级到该版本然后才能继续升级到 LTS 版本。这一点在 upgrade-to-lts.md 中也有同样的要求见其第 17 行。升级操作本质上就是备份数据库 → 将 ECS 任务定义中的镜像标签更新为新的 LTS 标签如tooljet/tooljet:EE-LTS-latest→ 触发新的任务部署。由于容器启动时会自动执行数据库迁移升级后请观察/api/health健康检查与日志确认迁移成功。部署清单速查组件镜像容器端口关键配置ToolJettooljet/tooljet:EE-LTS-latest3000/TCP10 个必填环境变量 Redis 变量Command 填npm run start:prodRedisredis:6.x6379与 ToolJet 同集群启用公网 IPPostgRESTpostgrest/postgrest:v12.2.03001/TCPPGRST_JWT_SECRET、PGRST_DB_URI、PGRST_LOG_LEVEL健康检查GET /api/health服务端实现见 server/src/modules/app/controller.ts。启动命令npm run start:prod见 server/package.json。迁移命令npm run db:setup:prod建库 迁移见 server/package.json。安全组ToolJet 放行 3000PostgREST 放行 3001均需允许来自 ALB/同 VPC 的入站流量。弹性与高可用服务任务数建议设为 2结合 ALB 目标组实现负载均衡与故障转移。【免费下载链接】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),仅供参考
返回列表