TR Panel Go 是一款专为泰拉瑞亚游戏服务器设计的 Web 管理面板,提供可视化界面和 Go 后端服务。
- 高性能:Go 原生并发,API 响应 ~100ms,页面加载 ~78ms
- 零依赖部署:前端静态资源内嵌进单一可执行文件,
wget即装即用 - 双模式支持:原版泰拉瑞亚房间管理 + TShock 插件服模式无缝切换
- 国际化:完整中英文双语界面
- 版本自检:面板与脚本均支持自动检测新版本并提示更新
系统要求: Ubuntu 24.04+(低版本可能出现 GLIBC 兼容性报错)
快速安装(wget)
wget -O tr.sh https://raw.githubusercontent.com/ShourGG/tr-panel-go/main/tr.sh && chmod +x tr.sh && ./tr.sh快速安装(curl)
curl -o tr.sh https://raw.githubusercontent.com/ShourGG/tr-panel-go/main/tr.sh && chmod +x tr.sh && ./tr.sh运行后选择 [0] 下载并启动,默认访问端口:8800
服务器非交互一键安装
发布后可以直接执行下面一条命令。它会下载指定版本、保留已有 data / 世界 / 备份、创建或更新 systemd 服务,并通过本机 HTTP 检查后再报告成功:
rm -f /tmp/tr.sh && (curl -fsSL --retry 3 --connect-timeout 10 --max-time 30 https://ghfast.top/https://raw.githubusercontent.com/ShourGG/tr-panel-go/main/tr.sh -o /tmp/tr.sh || curl -fsSL --retry 3 --connect-timeout 10 --max-time 30 https://raw.githubusercontent.com/ShourGG/tr-panel-go/main/tr.sh -o /tmp/tr.sh) && chmod +x /tmp/tr.sh && /tmp/tr.sh --install --port 8800 --version v1.5.1-dev.24如果使用 GitHub 直连较慢,把 --version 后的标签换成已发布的版本即可;不要把 80、443 或已被其他程序占用的 7500 当作面板端口。
仓库同时保存 Go 后端和可编辑的 frontend/ 源码。 web/dist 是 Go 二进制实际嵌入的目录,frontend/dist 是同一产物的镜像;两者都是生成文件,不能手工修改。 tools/build-release.ps1 会在临时目录构建前端,逐文件校验后以带回滚副本的方式同步两份 dist,再生成 Linux amd64 单文件、SHA256SUMS 和构建清单。
每个新版本必须先把 frontend/package.json 的 version 改成同一个版本号。不要复用已发布的 v1.5.1-dev.23 标签。完整的本地测试、构建、提交与 GitHub 发布顺序如下:
$version = '1.5.1-dev.24'
# 先将 frontend/package.json 中的 version 改为 $version
.\tools\build-release.ps1 -Version "v$version"
git add .
git commit -m "release: v$version"
git tag "v$version"
git push origin main --tags
.\tools\publish-release.ps1 -Version "v$version"构建脚本固定执行 go test -count=1 ./...、go vet ./...、git diff --check、npm ci、前端路由合同测试、完整 npm audit、Vite 生产构建、双 dist 哈希校验和 ELF 校验。 publish-release.ps1 只接受工作树干净、已推送且指向当前 HEAD 的新标签;它拒绝覆盖已有 GitHub Release,并上传 terraria-panel、SHA256SUMS 与 build-manifest.json。稳定版发布时加上 -Stable。
| 登录界面 | 仪表盘 |
![]() |
![]() |
| 插件服务器管理 | 安装脚本菜单 |
![]() |
![]() |
- 多房间实例创建、启停控制与状态监控
- WebSocket 实时日志推送,延迟 <50ms
- TShock 版本自动检测与适配
- 在线玩家列表与实时状态
- 会话记录、历史统计、活动审计
- 踢出、封禁等管理操作
- 插件安装、卸载、热重载
- 插件配置文件可视化编辑(Monaco Editor)
- TShock 数据库直连管理
- 在线文件管理器(上传 / 下载 / 编辑 / 删除)
- 自动备份与恢复
- 定时任务调度(cron 表达式)
- CPU / 内存 / 磁盘 / 网络实时监控图表
| 层级 | 技术 |
|---|---|
| 后端语言 | Go 1.21+ |
| Web 框架 | Gin |
| 实时通信 | gorilla/websocket |
| 数据库 | SQLite 3 |
| 认证 | JWT Token |
| 任务调度 | robfig/cron |
| 前端框架 | Vue 3 + TypeScript |
| UI 组件 | Tailwind CSS + shadcn/ui |
| 代码编辑器 | Monaco Editor |
| 图表 | ECharts |
如果面板部署在反向代理后面,只有代理的实际地址可以配置到 TRUSTED_PROXIES,例如
TRUSTED_PROXIES=127.0.0.1,::1。未配置时面板不信任客户端提交的
X-Forwarded-For,限流按 TCP 对端地址计算,避免伪造请求头绕过 IP 限流。
面板默认可以直接由 Go 进程完成备份下载、文件下载。
如果你前面还有 Nginx,也可以开启 X-Accel-Redirect,让备份 zip 和文件管理里的普通文件由 Nginx 直出,减轻 Go 进程压力。
.env 示例:
DOWNLOAD_TICKET_TTL=90
DOWNLOAD_ACCEL_ENABLED=true
DOWNLOAD_ACCEL_TYPE=nginx
DOWNLOAD_ACCEL_BACKUP_PREFIX=/__downloads/backups
DOWNLOAD_ACCEL_DATA_PREFIX=/__downloads/dataNginx 示例:
location /__downloads/backups/ {
internal;
alias /opt/tr-panel/data/backups/;
}
location /__downloads/data/ {
internal;
alias /opt/tr-panel/data/;
}说明:
- 不配 Nginx 也能正常下载,面板会自动回退到 Go 直出
- 目录打包下载、动态 zip 下载仍然走 Go 流式输出
- 下载链接改为短时票据,不再把长期登录 token 直接挂在 URL 上
| 指标 | 数值 |
|---|---|
| API 平均响应时间 | ~100ms |
| 页面首次加载 | ~78ms |
| LCP(最大内容渲染) | ~105ms |
| 数据库查询优化幅度 | 50–80% |
| 打包产物大小 | ~15MB(含完整前端) |
[0] 下载并启动服务 [1] 启动服务
[2] 停止服务 [3] 重启服务
[4] 更新面板 [5] 强制更新
[6] 更新脚本 [7] 查看状态
[8] 查看日志 [9] 修改端口
[10] 卸载面板 [11] 退出
脚本会在每次启动时自动检测自身是否有新版本,有更新时醒目提示。
本项目采用 CC BY-NC 4.0 协议。
- 允许个人学习、非商业使用与二次分发
- 禁止商业使用 — 不得用于盈利项目或商业产品
由 ShourGG 独立开发与维护。
如果这个项目对你有帮助,欢迎点个 Star 支持。




