Apache SeaTunnel 数据集成平台的运维管理工具
SeatunnelX: SeaTunnel 一站式运维管理平台是为 Apache SeaTunnel 数据集成引擎打造的运维管理工具,提供主机管理、集群与节点管理、Agent 运维、安装包与插件管理等功能。
本项目基于 linux-do/cdk 项目改造,原项目采用 MIT 协议开源。
- 多种认证方式 - 支持用户名密码登录和 OAuth(GitHub、Google)登录
- 主机与 Agent 管理 - 主机注册、Agent 安装与心跳、在线状态与资源监控
- 集群与节点管理 - SeaTunnel 集群创建、节点部署、启停与状态展示
- 安装包与插件 - 安装包管理、插件安装/卸载、多版本 SeaTunnel 支持
- 多数据库支持 - 支持 SQLite(默认)、MySQL、PostgreSQL
- 国际化支持 - 内置中英文切换
- 轻量化部署 - 默认使用内存会话,无需 Redis
- 现代化界面 - 基于 Next.js 15 和 React 19 的响应式设计
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │ │ Database │
│ (Next.js) │◄──►│ (Go) │◄──►│ (SQLite/MySQL) │
│ │ │ │ │ │
│ • React 19 │ │ • Gin Framework │ │ • SQLite 默认 │
│ • TypeScript │ │ • GORM │ │ • MySQL 可选 │
│ • Tailwind CSS │ │ • OpenTelemetry │ │ • PostgreSQL │
│ • Shadcn UI │ │ • Swagger API │ │ • SQLite 默认 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Go 1.24 - 主要开发语言
- Gin - Web 框架
- GORM - ORM 框架
- SQLite/MySQL/PostgreSQL - 数据库
- 内存会话 - 默认内置会话存储,无需额外缓存中间件
- Next.js 15 - React 框架
- React 19 - UI 库
- TypeScript - 类型安全
- Tailwind CSS 4 - 样式框架
- Shadcn UI - 组件库
- Go >= 1.24
- Node.js >= 18.0
- pnpm >= 8.0 (推荐)
git clone https://github.com/LeonYoah/SeaTunnelX.git
cd SeaTunnelXcp config.example.yaml config.yaml默认配置使用 SQLite 数据库,无需额外配置即可启动。
go mod tidy
go run main.go apicd frontend
pnpm install
pnpm dev- 前端界面: http://localhost:3000
- 默认账号: admin / admin123
scripts/package-release.sh \
--arch amd64 \
--bundle-observability without \
--node-major 18 \
--node-variant glibc217tar -xzf seatunnelx-<version>-linux-amd64-node18-glibc217-without-observability.tar.gz
cd seatunnelx-<version>-linux-amd64-node18-glibc217-without-observability
sudo ./install.sh安装包只会携带 config.example.yaml,安装时会自动生成 config.yaml。
- 后端 HTTP / gRPC 端口:修改
config.yamlapp.addrgrpc.port
- 前端端口 / 监听地址:启动时通过环境变量覆盖
FRONTEND_PORTFRONTEND_HOSTNEXT_PUBLIC_BACKEND_BASE_URL
示例:
CONFIG_PATH=/opt/seatunnelx/config.yaml \
FRONTEND_PORT=8080 \
FRONTEND_HOST=0.0.0.0 \
NEXT_PUBLIC_BACKEND_BASE_URL=http://127.0.0.1:8000 \
/opt/seatunnelx/bin/start.sh| 配置项 | 说明 | 默认值 |
|---|---|---|
auth.default_admin_username |
默认管理员用户名 | admin |
auth.default_admin_password |
默认管理员密码 | admin123 |
database.type |
数据库类型 | sqlite |
平台支持 GitHub 和 Google OAuth 登录作为备选登录方式。
- 登录 GitHub,访问 Developer Settings
- 点击 "New OAuth App"
- 填写应用信息:
- Application name:
SeaTunnel Platform - Homepage URL:
http://localhost:3000 - Authorization callback URL:
http://localhost:3000/callback
- Application name:
- 创建后获取 Client ID 和 Client Secret
详细教程:GitHub OAuth2 配置指南
- 访问 Google Cloud Console
- APIs & Services → Credentials → Create Credentials → OAuth client ID
- 添加 Authorized redirect URIs:
http://localhost:3000/callback
详细教程:Google OAuth2 配置指南
oauth_providers:
github:
enabled: true
client_id: "你的 GitHub Client ID"
client_secret: "你的 GitHub Client Secret"
redirect_uri: "http://localhost:3000/callback"
google:
enabled: true
client_id: "你的 Google Client ID"
client_secret: "你的 Google Client Secret"
redirect_uri: "http://localhost:3000/callback"# 后端测试
go test ./...
# 前端测试
cd frontend && pnpm test本项目使用 gRPC 进行 Agent 与 Control Plane 之间的通信。如果修改了 .proto 文件,需要重新生成 Go 代码。
- 安装 Go protoc 插件(Linux/macOS/Windows 通用)
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest- 安装 protoc 编译器
# macOS
brew install protobuf
# Ubuntu/Debian
sudo apt-get install protobuf-compiler
# CentOS/RHEL
sudo yum install protobuf-compiler- 生成代码
# 或手动执行
protoc --proto_path=. \
--go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
internal/proto/agent/agent.proto- 下载并安装 protoc 编译器
# 一键下载并配置 protoc(安装到 D:\protoc 目录)
$protocVersion = "28.3"
$protocZip = "protoc-$protocVersion-win64.zip"
$protocUrl = "https://github.com/protocolbuffers/protobuf/releases/download/v$protocVersion/$protocZip"
$protocDir = "D:\protoc"
if (!(Test-Path $protocDir)) {
New-Item -ItemType Directory -Path $protocDir -Force
}
Invoke-WebRequest -Uri $protocUrl -OutFile "$protocDir\$protocZip"
Expand-Archive -Path "$protocDir\$protocZip" -DestinationPath $protocDir -Force
$env:PATH = "$protocDir\bin;$env:PATH"
# 验证安装
protoc --version- 生成代码
# 设置环境变量(每次新开 PowerShell 需要执行)
$protocDir = "D:\protoc"
$env:PATH = "$protocDir\bin;$env:USERPROFILE\go\bin;$env:PATH"
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
# 生成 protobuf 代码
protoc --proto_path=. `
--go_out=. --go_opt=paths=source_relative `
--go-grpc_out=. --go-grpc_opt=paths=source_relative `
internal/proto/agent/agent.proto提示:为了避免每次都设置环境变量,建议将
D:\protoc\bin添加到系统 PATH 环境变量:
- 右键 "此电脑" → "属性" → "高级系统设置" → "环境变量"
- 在 "系统变量" 中找到
Path,点击 "编辑"- 添加新条目:
D:\protoc\bin- 点击 "确定" 保存,重启 PowerShell 即可全局使用
生成成功后,以下文件会被更新:
internal/proto/agent/agent.pb.go- Protobuf 消息定义internal/proto/agent/agent_grpc.pb.go- gRPC 服务定义
# 运行测试验证生成的代码
go test ./internal/proto/agent/...Agent 是部署在目标主机上的守护进程,需要交叉编译为 Linux 二进制文件。
cd agent
# 打包 Linux amd64
GOOS=linux GOARCH=amd64 go build -o seatunnelx-agent ./cmd
# 打包 Linux arm64
GOOS=linux GOARCH=arm64 go build -o seatunnelx-agent-arm64 ./cmdcd agent
# 打包 Linux amd64
$env:GOOS="linux"; $env:GOARCH="amd64"; go build -o seatunnelx-agent ./cmd
# 打包 Linux arm64
$env:GOOS="linux"; $env:GOARCH="arm64"; go build -o seatunnelx-agent-arm64 ./cmd
# 恢复环境变量(可选)
Remove-Item Env:GOOS; Remove-Item Env:GOARCH打包完成后,将 seatunnelx-agent 复制到 lib/agent/ 目录:
# Linux/macOS
cp agent/seatunnelx-agent lib/agent/seatunnelx-agent-linux-amd64
cp agent/seatunnelx-agent-arm64 lib/agent/seatunnelx-agent-linux-arm64
# Windows PowerShell
Copy-Item agent/seatunnelx-agent lib/agent/seatunnelx-agent-linux-amd64
Copy-Item agent/seatunnelx-agent-arm64 lib/agent/seatunnelx-agent-linux-arm64
# Windows PowerShell 一键操作
cd agent; $env:GOOS="linux"; $env:GOARCH="amd64"; go build -o seatunnelx-agent ./cmd; cd ..; Copy-Item agent/seatunnelx-agent lib/agent/seatunnelx-agent-linux-amd64 -Force
本项目使用 gRPC 进行 Control Plane 与 Agent 之间的通信。修改 .proto 文件后需要重新生成 Go 代码。
# Windows PowerShell
protoc --proto_path=. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative internal/proto/agent/agent.proto; `
Copy-Item -Path "internal\proto\agent\agent.pb.go" -Destination "agent\agent.pb.go" -Force# Linux/macOS
protoc --proto_path=. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative internal/proto/agent/agent.proto && \
cp internal/proto/agent/agent.pb.go agent/agent.pb.go| 参数 | 说明 |
|---|---|
--proto_path=. |
指定 proto 文件搜索路径为当前目录 |
--go_out=. |
生成 Go 代码到当前目录 |
--go_opt=paths=source_relative |
生成到 proto 文件同级目录(关键!) |
--go-grpc_out=. |
生成 gRPC 代码 |
Copy-Item |
同步到 agent 模块(agent 独立编译需要) |
go build ./... # 编译主项目
cd agent && go build ./... # 编译 Agentdocker build -t seatunnel-platform .
docker run -d -p 8000:8000 seatunnel-platform本项目基于 Apache License 2.0 开源。







