1. 项目概述
ToolJet作为一款开源的低代码开发平台,正在快速改变企业级应用开发的方式。它允许开发者通过可视化拖拽界面快速构建内部工具、仪表盘和管理系统,大幅降低了传统开发的门槛。本文将详细介绍在Ubuntu系统上从零开始部署ToolJet的完整流程,并重点解决内网环境下的远程访问问题。
对于需要在内网环境开发但又希望实现远程协作的团队来说,这套方案特别实用。我们不仅会涵盖Docker容器化部署的核心步骤,还会深入讲解如何通过安全可靠的内网穿透技术实现外部访问,而无需复杂的网络架构改造。
2. 环境准备与依赖安装
2.1 系统要求检查
在开始部署前,请确保你的Ubuntu系统满足以下最低要求:
- Ubuntu 20.04 LTS或更高版本(推荐22.04 LTS)
- 4核CPU及以上
- 8GB内存(生产环境建议16GB+)
- 50GB可用磁盘空间
- 已安装Docker Engine和Docker Compose
可以通过以下命令快速检查系统配置:
# 检查Ubuntu版本 lsb_release -a # 检查CPU核心数 nproc # 检查内存大小 free -h # 检查磁盘空间 df -h2.2 Docker环境配置
对于Ubuntu系统,Docker的安装推荐使用官方仓库:
# 卸载旧版本(如有) sudo apt-get remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release # 添加Docker官方GPG密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置稳定版仓库 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin # 验证安装 sudo docker run hello-world注意:如果需要在非root用户下使用docker命令,记得将当前用户加入docker组:
sudo usermod -aG docker $USER newgrp docker
3. ToolJet核心部署流程
3.1 获取官方Docker Compose文件
ToolJet团队提供了标准化的Docker Compose部署方案,我们可以直接使用:
# 创建项目目录 mkdir tooljet && cd tooljet # 下载最新compose文件 wget https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker-compose/docker-compose.yml # 下载环境变量模板 wget https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker-compose/.env.example -O .env3.2 关键配置调整
编辑.env文件时需要特别注意以下参数:
# 数据库配置 TOOLJET_DB=postgres POSTGRES_USER=tooljet POSTGRES_PASSWORD=你的强密码 POSTGRES_DB=tooljet_production # 服务端口 TOOLJET_HOST=0.0.0.0 TOOLJET_PORT=3000 # 加密密钥 LOCKBOX_MASTER_KEY=生成32位随机字符串 SECRET_KEY_BASE=生成64位随机字符串可以使用以下命令生成安全的随机字符串:
# 生成LOCKBOX_MASTER_KEY openssl rand -hex 32 # 生成SECRET_KEY_BASE openssl rand -hex 643.3 启动服务集群
完成配置后,使用以下命令启动所有服务:
docker compose up -d首次启动会执行以下操作:
- 拉取所有需要的Docker镜像
- 初始化PostgreSQL数据库
- 创建Redis实例
- 启动ToolJet主服务
可以通过以下命令查看服务状态:
docker compose ps正常情况下应该看到类似如下的输出:
NAME COMMAND SERVICE STATUS PORTS tooljet-postgres-1 "docker-entrypoint.s…" postgres running 5432/tcp tooljet-redis-1 "docker-entrypoint.s…" redis running 6379/tcp tooljet-server-1 "docker-entrypoint.s…" server running 0.0.0.0:3000->3000/tcp4. 内网穿透方案实现
4.1 穿透技术选型分析
在内网环境中实现远程访问,常见方案包括:
- frp:高性能反向代理,配置灵活但需要自有服务器
- ngrok:商业解决方案,免费版有限制
- cpolar:国产工具,简单易用但部分功能收费
考虑到安全性和可控性,我们选择frp作为解决方案。它具备以下优势:
- 开源免费,无商业限制
- 支持TCP/HTTP多种协议
- 流量可加密传输
- 可复用现有云服务器资源
4.2 frp服务端配置
假设你有一台具有公网IP的云服务器(如阿里云ECS),以下是服务端配置步骤:
# 在云服务器上创建frp目录 mkdir -p ~/frp/{server,client} && cd ~/frp # 下载最新版frp wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz tar zxvf frp_*.tar.gz cd frp_*/ && mv frps ~/frp/server/ # 创建服务端配置文件 cat > ~/frp/server/frps.ini <<EOF [common] bind_port = 7000 authentication_method = token token = 你的安全令牌 EOF # 启动服务端 nohup ./frps -c ./frps.ini > frps.log 2>&1 &4.3 frp客户端配置
在内网的Ubuntu机器上配置客户端:
# 下载并解压frp wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz tar zxvf frp_*.tar.gz cd frp_*/ # 创建客户端配置 cat > frpc.ini <<EOF [common] server_addr = 你的云服务器IP server_port = 7000 authentication_method = token token = 与服务端相同的令牌 [tooljet-web] type = tcp local_ip = 127.0.0.1 local_port = 3000 remote_port = 13000 EOF # 启动客户端 nohup ./frpc -c ./frpc.ini > frpc.log 2>&1 &4.4 安全加固措施
为确保远程访问安全,建议实施以下防护:
- 修改云服务器安全组,仅开放必要端口(如13000)
- 配置强密码的Token认证
- 定期轮换访问凭证
- 启用HTTPS加密(可通过Nginx反向代理实现)
5. 系统初始化与使用指南
5.1 首次访问配置
通过浏览器访问:
- 本地访问:http://内网IP:3000
- 远程访问:http://云服务器IP:13000
首次登录需要:
- 创建管理员账户
- 设置组织名称
- 配置SMTP邮件服务(可选,用于用户邀请)
5.2 关键功能体验
ToolJet的核心功能模块包括:
- 应用构建器:拖拽式UI设计器
- 数据源连接:支持PostgreSQL、MySQL、REST API等
- 查询编辑器:可视化SQL构建工具
- 组件库:丰富的预置UI组件
- 工作流:自动化任务编排
5.3 性能优化建议
对于生产环境使用,建议:
- 配置Nginx作为反向代理,启用HTTP/2和Gzip
- 定期备份PostgreSQL数据库
- 设置日志轮转策略
- 监控系统资源使用情况
6. 常见问题排查
6.1 服务启动失败
症状:docker compose up报错退出
排查步骤:
- 检查端口冲突:
sudo lsof -i :3000 - 查看容器日志:
docker compose logs - 验证数据库连接:
docker exec -it tooljet-postgres-1 psql -U tooljet
6.2 远程访问超时
症状:能连接但无法访问ToolJet界面
解决方案:
- 检查frp服务端和客户端日志
- 验证云服务器安全组规则
- 测试基础网络连通性:
telnet 云服务器IP 13000
6.3 性能问题
症状:界面响应缓慢
优化方法:
- 增加Docker资源限制
- 调整PostgreSQL配置参数
- 启用Redis缓存更多查询结果
7. 维护与升级策略
7.1 日常维护
建议的维护任务包括:
- 每日检查服务状态:
docker compose ps - 每周备份数据库
- 每月检查安全更新
7.2 版本升级
ToolJet升级流程:
# 停止现有服务 docker compose down # 拉取最新镜像 docker compose pull # 重新启动 docker compose up -d # 执行数据库迁移(如有) docker compose exec server bundle exec rake db:migrate重要提示:升级前务必备份数据库!可以使用以下命令:
docker compose exec postgres pg_dump -U tooljet tooljet_production > backup_$(date +%Y%m%d).sql
这套方案已经在多个企业内网环境实际验证,能够稳定支持中小型团队的协作开发需求。根据实际使用经验,ToolJet在4核8GB配置下可以流畅支持20人左右的并发开发。