
ToolJet 環境變量完全指南Server、Client 與 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/ToolJetToolJet 是一個開源的低代碼應用構建平臺其服務端server與前端客戶端client在啟動時都依賴一組環境變量來獲得正確的運行參數。本文以 docs/docs/setup/env-vars.md 為骨架系統梳理 ToolJet 全部環境變量的含義、默認值與配置要點并結合倉庫中的 .env.example、deploy/docker/.env.internal.example 以及服務端源碼server/src解釋這些變量在底層是如何被消費的。讀完本文你將能獨立完成一次自托管 ToolJet 的完整環境配置并理解每個必填變量缺失時會產生的影響。環境變量文件從哪來倉庫根目錄提供了 .env.example其頭部注釋明確說明Create .env from this example file and replace values for the environment.即把.env.example復制為.env后再逐項填寫真實值即可。該示例文件同時提示測試環境需要單獨的.env.test。此外Docker 部署場景還提供了兩份精簡示例deploy/docker/.env.internal.example內部部署internal模式PG 主機等指向 docker-compose 內部服務名deploy/docker/.env.external.example外部數據庫接入模式。在 docker-compose 場景下還需注意.env.example中的說明如需 Enterprise Edition應在執行docker-compose up前設置TOOLJET_EDITIONee默認ce。ToolJet Server 必填環境變量服務端要能正常啟動并對外提供服務以下四組變量缺一不可。TOOLJET_HOST必填變量描述TOOLJET_HOSTToolJet 客戶端的公網地址例如https://app.tooljet.com該變量被廣泛用于服務端生成跳轉鏈接、郵件鏈接與 API 響應。從源碼可以看到它在多個關鍵位置被讀取server/src/helpers/utils.helper.ts 中的getTooljetHost()會回退到process.env.TOOLJET_HOST并據此判斷當前部署是否使用 HTTPSTOOLJET_HOST.startsWith(https)用于 Cookie 的 secure 標記判定server/src/modules/email/service.ts 則用它拼接郵件中的 ToolJet 地址會先剝離末尾斜杠。LOCKBOX_MASTER_KEY必填ToolJet 服務端使用 Lockbox 機制加密數據源datasource憑據需要設置一個32 字節的十六進制字符串作為LOCKBOX_MASTER_KEY。底層實現在 server/src/modules/encryption/service.ts加密使用aes-256-gcmnonce 12 字節、附帶 16 字節 GCM 認證標簽而實際的列級密鑰通過 HKDF 從LOCKBOX_MASTER_KEY派生#computeAttributeKey哈希算法 sha384每個表/列使用獨立的派生密鑰——這是從 Ruby on Rails 時代的 Lockbox gem 遷移到 NestJS 時保留的行為。文件頭部的注釋還特別提醒不要修改該函數的簽名因為它被大量數據遷移腳本如 server/data-migrations/1709618105785-EncryptValuesForExistingOrganizationConstants.ts依賴。生成命令openssl rand -hex 32SECRET_KEY_BASE必填服務端使用一個64 字節的十六進制字符串加密會話 Cookie。在 server/src/modules/session/module.ts 中JwtModule.registerAsync將SECRET_KEY_BASE直接作為 JWT 簽名密鑰secret: config.getstring(SECRET_KEY_BASE)即所有會話 JWT 的簽發與校驗都依賴該值。更換或丟失它會導致所有已登錄用戶的會話失效因此應妥善保管且避免在運行期變更。生成命令openssl rand -hex 64PostgreSQL 數據庫配置必填ToolJet 服務端使用 PostgreSQL 作為主數據庫變量描述PG_HOSTPostgreSQL 主機PG_DB數據庫名PG_USER用戶名PG_PASS密碼PG_PORT端口這些變量在 server/ormconfig.ts 的buildConnectionOptions()中被消費port取data.PG_PORT || 5432默認 5432連接池上限PG_POOL_MAX默認 25并支持ORM_LOGGING控制 TypeORM 日志。兩點實用說明docker-compose 場景PG_HOST可直接填postgres服務名由 Docker 內部 DNS 解析連接串方式如果使用連接 URL 且數據庫不支持 SSL可用DATABASE_URL并寫成postgres://username:passwordhostname:port/database_name?sslmodedisable。源碼中dbSslConfig()會在存在DATABASE_URL時自動附加ssl: { rejectUnauthorized: false }。ToolJet Server 可選環境變量禁用數據庫與擴展自動創建可選默認情況下 ToolJet 會根據PG_DB自動創建數據庫并可能嘗試創建 PostgreSQL 擴展如pgcrypto見 server/ormconfig.ts 中的uuidExtension: pgcrypto這要求 PG 用戶具備CREATEDB權限。若無法授予該權限可將PG_DB_OWNER設為false關閉自動創建改為手動建庫。檢查更新與遙測可選變量默認說明CHECK_FOR_UPDATES啟用每 24 小時向 ToolJet 服務器請求最新產品更新設為0可關閉DISABLE_TOOLJET_TELEMETRY啟用每 24 小時上報用戶計數設為true可關閉對應實現位于 server/src/modules/meta/service.ts更新檢查與實例設置常量定義 server/src/modules/instance-settings/constants/index.ts。評論功能開關可選| 變量 | 值 | | ---- | -- | | COMMENT_FEATURE_ENABLE |true或false|控制畫布上是否允許添加評論。配置前提是先在設置中啟用多人實時編輯multiplayer editing對應 .env.example 中的ENABLE_MULTIPLAYER_EDITINGtrue。Marketplace 插件開發模式可選| 變量 | 值 | | ---- | -- | | ENABLE_MARKETPLACE_DEV_MODE |true或false|開啟后允許開發者構建開發調試Marketplace 插件。用戶會話過期時間可選變量描述USER_SESSION_EXPIRY會話過期時間單位為分鐘默認 10 天。例如設為120即 2 小時server/src/modules/session/util.service.ts 中通過configService.get(USER_SESSION_EXPIRY)讀取該值并換算成過期時刻乘以60 * 1000毫秒寫入會話。示例 deploy/docker/.env.internal.example 中給出參考值28802 天。ToolJet 數據庫必填ToolJet Database 是內置的數據存儲能力通過 PostgREST 對外提供 REST API其連接參數如下變量說明TOOLJET_DB數據庫名默認值tooljet_dbTOOLJET_DB_HOST數據庫主機TOOLJET_DB_USER數據庫用戶名TOOLJET_DB_PASS數據庫密碼TOOLJET_DB_PORT數據庫端口PGRST_JWT_SECRETPostgREST 用于校驗 JWT 的密鑰PGRST_HOSTPostgREST 主機PGRST_DB_PRE_CONFIG對應postgrest.pre_config默認值見 .env.example要點在所有生產部署方案中TOOLJET_DB指定的庫名會在服務端啟動時被用來創建新數據庫也可手動執行npm run db:create在 ToolJet server 目錄下與主庫類似支持連接串變量TOOLJET_DB_URL格式postgres://username:passwordhostname:port/database_name?sslmodedisable底層連接同樣定義于 server/ormconfig.ts 的buildToolJetDbConnectionOptions()其中TOOLJET_DB_PORT默認 5432連接池TOOLJET_DB_PG_POOL_MAX默認 25并可通過TOOLJET_DB_STATEMENT_TIMEOUT默認 60000ms控制語句超時。SERVER_HOST可選當后端API 服務部署在獨立服務器時可在此指定主機名作為反向代理目標不設置時默認值為server。HIDE_ACCOUNT_SETUP_LINK可選設為true時管理員在用戶管理頁面將看不到“賬戶設置”鏈接。前提是已配置 SMTP以便新用戶能收到歡迎郵件。DISABLE_SIGNUPS可選設為true可關閉公開注冊僅允許通過邀請加入新用戶。注意注冊頁面仍會展示只是無法成功提交表單。該開關僅在多工作區Multi-Workspace特性啟用時生效見 .env.example 注釋。服務端由 server/src/modules/onboarding/guards/signup-disable.guard.ts 在注冊流程中強制執行。SERVE_CLIENT 與 SUB_PATH可選SERVE_CLIENT默認未設置服務端會在/端點托管前端客戶端設為false可關閉該行為此時前端需單獨構建部署SUB_PATH當 ToolJet 部署在域名子路徑時設置必須帶尾部/且僅在服務端托管前端時生效。服務端對SERVE_CLIENT的消費可見于 server/src/helpers/utils.helper.ts生產環境下TOOLJET_SERVER_URL缺省時按SERVE_CLIENT ! false回退前端構建側則見 frontend/src/index.ejs 中對SERVE_CLIENT ! false的判斷。SMTP 郵件配置可選ToolJet 使用 SMTP 發送郵件例如向工作區添加新用戶時的邀請郵件。Enterprise Editionv2.62.0 起必須在 UI 中配置 SMTP見 docs/docs/setup/env-vars.md 說明.env中的 SMTP 變量不再被讀取從 v2.62.0 之前升級時舊變量會自動映射到 UI 配置中確認無誤后可從.env移除Community Edition繼續使用以下環境變量變量描述DEFAULT_FROM_EMAIL發件郵箱示例默認hellotooljet.ioSMTP_USERNAME用戶名SMTP_PASSWORD密碼SMTP_DOMAIN域名或主機SMTP_PORT端口Slack 與 Google OAuth可選若需以 Slack 作為數據源需創建 Slack App 并配置變量描述SLACK_CLIENT_IDSlack App 的 client idSLACK_CLIENT_SECRETSlack App 的 client secret若需訪問 Google Sheets 等數據源需在 Google Cloud Console 創建 OAuth 憑據變量描述GOOGLE_CLIENT_IDclient idGOOGLE_CLIENT_SECRETclient secretGoogle Maps可選若需要使用Maps組件需創建 Google Maps API key變量描述GOOGLE_MAPS_API_KEYGoogle Maps API key可觀測性APM 與 Sentry可選變量描述APM_VENDOR應用性能監控廠商目前支持sentrySENTRY_DNSSentry DSN用于將事件上報到對應項目SENTRY_DEBUG是否打印 Sentry 日志true/false默認falseRELEASE_VERSION設置后支持按 release 分組的 APM 提供商會跟蹤該版本TOOLJET_SERVER_URL服務端 URL如https://server.tooljet.com用于 CSP 頭與 APM trace 信息NODE_EXTRA_CA_CERTS可選當需要信任自定義 CA 以建立 HTTPS 連接時配置該變量指向 PEM 格式的 CA 證書文件絕對路徑如/ToolJet/ca/cert.pem。文件需為 PEM 格式可包含多個證書。密碼重試限制可選默認密碼最大重試次數為 5超過后賬戶將被鎖定變量描述DISABLE_PASSWORD_RETRY_LIMITtrue時關閉重試次數檢查無限制PASSWORD_RETRY_LIMIT自定義重試上限默認 5實例級 SSO可選變量描述SSO_GOOGLE_OAUTH2_CLIENT_IDGoogle OAuth client idSSO_GIT_OAUTH2_CLIENT_IDGitHub OAuth client idSSO_GIT_OAUTH2_CLIENT_SECRETGitHub OAuth client secretSSO_GIT_OAUTH2_HOST自托管 GitHub 時的 OAuth 主機名SSO_ACCEPTED_DOMAINS支持 SSO 認證的郵箱域名逗號分隔SSO_DISABLE_SIGNUPS認證用戶不存在時禁止其注冊FORWARD_RESTAPI_COOKIES可選默認服務端不會在 REST API 請求中轉發 Cookie設為true可開啟。該選項僅自托管版本可用。ToolJet Client 環境變量當前端客戶端單獨構建部署時需要以下變量TOOLJET_SERVER_URL按需必填變量描述TOOLJET_SERVER_URLToolJet 服務端 URL如https://server.tooljet.comfrontend/src/index.jsx 中會讀取運行時注入的window.public_config.TOOLJET_SERVER_URL來確定后端地址因此前端單獨部署時必須正確注入該值。TOOLJET_SERVER_PORT可選用于本地開發設置后服務端地址將變為http://localhost:TOOLJET_SERVER_PORT例如3000。ASSET_PATH按需必填當客戶端靜態資源需要從其他位置如 CDN加載時設置。可以是絕對路徑也可以是相對主 HTML 文件的相對路徑例如https://app.tooljet.ai/。SERVE_CLIENT可選默認構建產物設計為隨 ToolJet 服務端一同托管若客戶端單獨使用需將SERVE_CLIENT設為false。PostgREST Server必填PostgREST 是 ToolJet Database 的 REST API 網關其必填變量變量描述PGRST_JWT_SECRET用于校驗客戶端 JWT 的密鑰PGRST_DB_URIToolJet 數據庫連接串PGRST_LOG_LEVEL日志級別通常為info兩點硬性要求PGRST_JWT_SECRET可用openssl rand -hex 32生成若未指定PostgREST 將拒絕所有認證請求PGRST_DB_URI必須使用格式postgres://[USERNAME]:[PASSWORD][HOST]:[PORT]/[DATABASE]。如需調整 PostgREST 的其他行為可參考其官方配置文檔PostgREST configuration。審計日志文件路徑可選變量描述LOG_FILE_PATH審計日志落盤路徑例如tooljet/log/tooljet-audit.log設置后每次產生新的審計日志都會追加寫入該文件對應后端審計日志模塊的落盤能力。ToolJet Apps 相關變量ENABLE_PRIVATE_APP_EMBED可選默認只允許嵌入公開應用設為true后允許嵌入私有 ToolJet 應用。注意該選項僅從 ToolJet Enterprise Edition 2.8.0 起、Community/云版本 2.10.0 起可用。相關的還有 .env.example 中列出的DISABLE_APP_EMBED設為true時公開與私有應用的嵌入均被禁止與ENABLE_CORS前端與后端分離部署時設為true。配置默認語言可選通過LANGUAGE變量可設置 ToolJet 的默認語言變量描述LANGUAGE語言代碼例如fr支持的語言及代碼Englishen、Fran?aisfr、Espa?oles、Italianoit、Bahasa Indonesiaid、Укра?нськаuk、Русскийru、Deutschde。云版本不支持該設置。其他值得關注的變量來自 .env.example除文檔主線外倉庫根目錄 .env.example 還沉淀了一批生產常用變量補充說明如下Workflow/WorkerWORKERtrue啟用 BullMQ 任務處理與調度加載TOOLJET_QUEUE_DASH_PASSWORD為工作流面板密碼TOOLJET_WORKFLOW_SANDBOX_BYPASStrue可繞過 Python 執行的 nsjail 沙箱僅限 AWS Fargate、Render 等不支持 SYS_ADMIN 能力的平臺且會失去代碼隔離RedisREDIS_HOST、REDIS_PORT默認 6379、REDIS_USERNAME、REDIS_PASSWORD、REDIS_DB、REDIS_TLSdocker-compose 下REDIS_HOST填服務名redisSCIMSCIM_ENABLED、SCIM_BASIC_AUTH_USER、SCIM_BASIC_AUTH_PASS、SCIM_HEADER_AUTH_TOKEN用于身份供給Git 對象緩存DISABLE_GIT_OBJECT_CACHE、GIT_OBJECT_CACHE_TTL_DAYS默認 14 天、GIT_OBJECT_CACHE_MAX_GB默認 2GB、GIT_OBJECT_CACHE_DIR默認系統臨時目錄K8s 中建議指向持久卷日志調優TRANSACTION_LOGGING_LEVELdevelopmenttrace / productioninfo / testerror、CUSTOM_QUERY_LOGGING_LEVEL、SLOW_QUERY_LOGGING_THRESHOLD默認 1ms可觀測性ENABLE_METRICStrue暴露 Prometheus/metrics端點PATPAT_SESSION_EXPIRY分鐘、PAT_EXPIRY天控制個人訪問令牌有效期。小結ToolJet 的部署配置可以概括為一句話先滿足必填項TOOLJET_HOST、LOCKBOX_MASTER_KEY、SECRET_KEY_BASE、PG 連接、ToolJet DB 與 PostgREST再按需開啟可選能力SSO、SMTP、OAuth、可觀測性、嵌入與本地化。以倉庫 .env.example 為起點復制并逐項填寫對照本文的默認值與格式說明即可避免啟動期常見問題。若需驗證服務端對這些變量的實際消費方式可直接查閱 server/src/modules/encryption/service.ts、server/src/modules/session/module.ts 與 server/ormconfig.ts。【免費下載鏈接】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),僅供參考