Skip to content

LeonYoah/SeaTunnelX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

248 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

SeaTunnel 一站式运维管理平台

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 (推荐)

快速开始

1. 克隆项目

git clone https://github.com/LeonYoah/SeaTunnelX.git
cd SeaTunnelX

2. 配置环境

cp config.example.yaml config.yaml

默认配置使用 SQLite 数据库,无需额外配置即可启动。

3. 启动后端

go mod tidy
go run main.go api

4. 启动前端

cd frontend
pnpm install
pnpm dev

5. 访问应用

离线部署 SeaTunnelX

1. 打包 CentOS 7 兼容离线包

scripts/package-release.sh \
  --arch amd64 \
  --bundle-observability without \
  --node-major 18 \
  --node-variant glibc217

2. 解压并安装

tar -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

3. 端口配置

  • 后端 HTTP / gRPC 端口:修改 config.yaml
    • app.addr
    • grpc.port
  • 前端端口 / 监听地址:启动时通过环境变量覆盖
    • FRONTEND_PORT
    • FRONTEND_HOST
    • NEXT_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

OAuth 登录配置(可选)

平台支持 GitHub 和 Google OAuth 登录作为备选登录方式。

获取 GitHub OAuth 凭证

  1. 登录 GitHub,访问 Developer Settings
  2. 点击 "New OAuth App"
  3. 填写应用信息:
    • Application name: SeaTunnel Platform
    • Homepage URL: http://localhost:3000
    • Authorization callback URL: http://localhost:3000/callback
  4. 创建后获取 Client IDClient Secret

详细教程:GitHub OAuth2 配置指南

获取 Google OAuth 凭证

  1. 访问 Google Cloud Console
  2. APIs & Services → Credentials → Create Credentials → OAuth client ID
  3. 添加 Authorized redirect URIs: http://localhost:3000/callback

详细教程:Google OAuth2 配置指南

配置 OAuth 凭证

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

二次开发指南

Protocol Buffers 代码生成

本项目使用 gRPC 进行 Agent 与 Control Plane 之间的通信。如果修改了 .proto 文件,需要重新生成 Go 代码。

前置条件

  1. 安装 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

Linux / macOS

  1. 安装 protoc 编译器
# macOS
brew install protobuf

# Ubuntu/Debian
sudo apt-get install protobuf-compiler

# CentOS/RHEL
sudo yum install protobuf-compiler
  1. 生成代码
# 或手动执行
protoc --proto_path=. \
    --go_out=. --go_opt=paths=source_relative \
    --go-grpc_out=. --go-grpc_opt=paths=source_relative \
    internal/proto/agent/agent.proto

Windows (PowerShell)

  1. 下载并安装 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
  1. 生成代码
# 设置环境变量(每次新开 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 打包

Agent 是部署在目标主机上的守护进程,需要交叉编译为 Linux 二进制文件。

Linux / macOS

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 ./cmd

Windows (PowerShell)

cd 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

部署 Agent 二进制

打包完成后,将 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 Proto 代码生成

本项目使用 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 ./... # 编译 Agent

部署

Docker 部署

docker build -t seatunnel-platform .
docker run -d -p 8000:8000 seatunnel-platform

📄 许可证

本项目基于 Apache License 2.0 开源。

🔗 相关链接

About

Seatunnel一站式运维管理平台,包含自动化部署、提交任务、巡检、插件市场等功能

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors