express233

module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 12, 2026 License: MIT

README

express233

CI Lint CodeQL

游戏逻辑服 拉模式 部署:中央上传一次,SSH 集群 express233-cli deploy 拉齐;按 server_id 预览配置 diff。

功能概览

能力 说明
多版本管理 草稿 / 审批 / 发布;语义化版本;列表搜索与批量操作
文件标签 为版本内文件打平台/架构标签,拉取时按标签过滤
配置替换预览 server_id 查看替换前后全文 diff(YAML / JSON / properties)
版本 diff 对比任意两发布版本在同一 server_id 下的有效配置
存储空间 磁盘占用总览、目录树、索引搜索、关联删除(草稿文件 / 版本 / 项目)
安全部署 CLI deploy = 拉取到 .tmp → stop → swap → start(见 SAFE_DEPLOY
多租户与 RBAC 租户隔离、viewer / operator / admin、项目邀请链接
Blob 去重 内容寻址存储,多版本共享相同文件块,删除时按引用计数回收
界面截图

多版本列表与搜索:

多版本管理

版本文件标签(上传时或批量打标):

文件标签

版本间配置 diff(双栏 + 文件树):

版本 diff

server_id 模板替换后的拉取预览:

模板替换预览

存储空间:磁盘分类、目录树、索引搜索:

存储空间

截图由 test/visual/tests/readme-assets.spec.ts 在本地控制台生成,存放于 .assets/(非 .github/)。

工作流

步骤 说明
中央上传 项目 → 版本(草稿)→ 上传 / zip → 发布
配置约束 配置文件 basename 全局唯一server.yaml文件名 替换(无视路径)
预览 Web 或 express233-cli preview 查看每个键 before → after
节点部署 express233-cli deploy = 拉取 + 替换 + post_hook

安装

CLI(节点)

curl -fsSL https://raw.githubusercontent.com/neko233-com/express233/main/scripts/install.sh | bash
iwr -useb https://raw.githubusercontent.com/neko233-com/express233/main/scripts/install.ps1 | iex

Server(中央)

curl -fsSL https://raw.githubusercontent.com/neko233-com/express233/main/scripts/install-server.sh | bash
iwr -useb https://raw.githubusercontent.com/neko233-com/express233/main/scripts/install-server.ps1 | iex

安装指定版本:

curl -fsSL https://raw.githubusercontent.com/neko233-com/express233/main/scripts/install-server.sh | bash -s -- v0.1.0
iwr -useb https://raw.githubusercontent.com/neko233-com/express233/main/scripts/install-server.ps1 | iex; Install-Express233Server -Ver v0.1.0

go install ./cmd/express233-cli ./cmd/express233-server

Release 资产(tag v* 触发 release.yml):

  • express233-cli-{linux,darwin,windows}-{amd64,arm64}[.exe]
  • express233-server-{...}(同上)
  • 各文件 .sha256 校验

中央服运维命令

默认监听 127.0.0.1:23380,数据目录优先读取 EXPRESS233_DATA,否则使用 ~/.express233-server

首次安装后推荐顺序:

express233-server start
express233-server status
express233-server reset-root-password --password 'change-me-now'

常用命令:

express233-server port
express233-server set-port 32380
express233-server restart
express233-server enable-autostart
express233-server autostart-status
express233-server update
express233-server backup-config
express233-server reload-config
express233-server disable-autostart
express233-server restore-config
express233-server stop

说明:

  • start:后台启动并写入 run/server.pidrun/server-state.jsonrun/server.log
  • enable-autostart / disable-autostart:安装或移除原生开机自启动。Linux 使用 systemd,macOS 使用 launchd,Windows 使用 schtasks /SC ONSTART
  • autostart-status:查看当前是否已安装原生开机自启动,以及当前是否 active
  • status:查看当前 PID、访问地址、数据目录、默认端口
  • port:查看默认端口 23380 与当前持久化监听地址
  • set-port:修改中央服监听端口,默认会自动重启正在运行的中央服
  • update:更新到最新 Release(或 --version vX.Y.Z 指定版本),自动替换二进制并重启中央服
  • reload-config:校验并热重载租户 server.yaml,无需重启进程
  • backup-config / restore-config:备份并恢复中央 server.yamlrestore-config --default 可恢复为示例模板
  • reset-root-password:仅命令行强制重置 root 密码,适合忘记密码时救援
  • 运行日志:默认 info 级别,写入 run/server.log,按大小滚动,避免单文件无限增长;高频 2xx 请求默认不记日志

PowerShell 示例:

express233-server start
express233-server enable-autostart
express233-server set-port 32380
express233-server reset-root-password --password "change-me-now"

生产落地建议:

  • Linux(Ubuntu / Debian / CentOS 7+):优先用 express233-server enable-autostart 落到 systemd
  • macOS:落到 launchd
  • Windows:落到计划任务 ONSTART
  • 开启原生自启动后,后续 start / stop / restart 会优先走原生服务控制面

一行部署

export EXPRESS233_SERVER=http://10.0.0.1:23380
export EXPRESS233_TOKEN=<token>
express233-cli deploy --project mygame --server-id game-logic-042 --dest /opt/game/042

也可不用 pull token,改用账号密码:

export EXPRESS233_SERVER=http://10.0.0.1:23380
export EXPRESS233_USERNAME=root
export EXPRESS233_PASSWORD=root
express233-cli deploy --project mygame --server-id game-logic-042 --version 1.0.0 --dest /opt/game/042

批量:examples/deploy-batch.csv + express233-cli pull-batch --file ...

列出中央已配置的 server_id:express233-cli servers --server URL --token TOKEN

环境自检:express233-cli doctor(检查 healthz、token、server_id、已发布版本)

版本回滚:express233-cli rollback --server-id ID(部署上一发布版;--to 1.0.0 指定版本)

版本 diff:express233-cli diff --from 1.0.0 --to 1.1.0 --server-id ID(对比两版本在 server_id 下的有效配置键)

项目拉取日志:GET /api/projects/{id}/logs?server_id=game-logic-042&version=1.0.0(默认保留最近 30 天)

审批流:operator 上传并「提交审批」→ admin「正式发布」或「驳回」

多租户:默认租户 defaultroot 登录后可 POST /api/tenants 创建新租户。每租户独立 server.yaml 与项目空间。

配置覆盖(server.yaml)示例——只覆盖必要字段:

replacements:
  application.yaml:
    mysql:
      url: jdbc:mysql://db-a:3306/game
      password: secret

同名配置文件须为同一格式(.yaml 用嵌套对象,.properties 用扁平或嵌套展平为 dotted 键)。

本地脚本

仓库根目录(Windows 双击 / 命令行):

脚本 说明
run-server.cmd / run-server.sh 启动中央服 :23380(若本机已有 express233-server 会先自动停止)
install-unicli.cmd 安装 neko233-com/unicli(端口/进程工具,推荐)
install-gh.cmd 安装 GitHub CLI(CI 日志、发布门禁)
test-server.cmd / test-server.sh go test ./...
build-all.cmd / build-all.sh 构建 CLI + Server 到 bin/
git-deploy.cmd / git-deploy.sh 本地模拟 CI(vet/测试/构建/冒烟);git-deploy.cmd --push 再推送
visual-e2e.cmd / visual-e2e.sh 浏览器全流程(Playwright);不参与发布/ git-deploy

可视化验收技能:.cursor/skills/express233-visual-verify/SKILL.md

子目录(同上逻辑):

目录 说明
run/run.sh / run/run.cmd 启动 express233-server:23380,数据目录 EXPRESS233_DATA.data
test/test.sh / test/test.cmd 运行 go test ./...
deploy-github/deploy-github.sh / .cmd 本地模拟 CI:vet、测试、构建、冒烟(需 Git Bash 跑 smoke)

项目协作与邀请

  • 创建项目后,创建者自动成为 项目管理员(读写)。
  • 项目管理员在 Web「团队与邀请」生成链接,形如:https://中央服务/#invite?token=...
  • 被邀请人登录同一租户账号后打开链接 → 接受邀请
  • 只读成员viewer):预览、列表、拉取已发布版本;不能上传/发布。
  • 项目管理员admin):在该项目内可上传、审批、发布。
  • 租户级 root 可查看租户内全部项目;普通用户仅能看到已加入的项目。

运维:GET /metrics(Prometheus)、GET /api/audit-logs(管理员)、scripts/backup-data.sh

Docker 本地中央服

docker compose up --build
# http://localhost:23380  root/root

Cloudflare

Cloudflare Workers / Pages 不能直接运行 express233-server Go 二进制;推荐用 Worker 作为现有中央服的 HTTPS 反向代理,或 Pages 托管静态控制台并把 /api/* 代理到中央服。示例见 docs/CLOUDFLARE.mdexamples/cloudflare/worker-proxy

HTTP 自动化 Demo

管理端受保护 API 现在支持两种方式:

  • POST /api/login 获取 Cookie / JWT
  • 直接用 HTTP Basic Auth,例如 root/root

多版本、整包上传、server_id 注册与替换预览、diff、发布、拉取的完整 curl 演示见 docs/HTTP_AUTOMATION_DEMO.md

Ansible 批量

examples/ansible/inventory.ini 中为每台逻辑服设置 express233_server_idexpress233_dest

开发

make test
make build
make smoke      # 本地冒烟(同 CI)
make lint       # golangci-lint v2(.golangci.yml version: "2")
make run-server # :23380 root/root

run-server 会设置 EXPRESS233_WEB_DIR=internal/api/web:开发时修改 html/css/js 后刷新浏览器即可,无需重启 Go 进程。

重复启动时脚本会探测 http://127.0.0.1:23380/healthz,仅停止进程名或命令行含 express233-server 的实例(不会误杀 proxysss 等)。跳过:set EXPRESS233_NO_KILL=1

GitHub Actions

Workflow 触发 作用
ci.yml push/PR 三平台测试、vet、构建、冒烟、ShellCheck
lint.yml push/PR golangci-lint
codeql.yml push/PR/每周 安全扫描
release.yml tag v* / 手动 多平台 CLI + Server 发布
docker.yml push/PR/tag 构建并推送 express233-server 镜像
helm.yml Helm 变更 helm lint + template

详见 docs/GITHUB_ACTIONS.md

存储空间(Web)

左侧导航 存储空间 提供中央服数据目录的可视化运维:

功能 API 说明
占用总览 GET /api/storage/overview 分类统计(userdata / blobs / SQLite / run)、Blob 去重、可用磁盘
目录树 GET /api/storage/tree?path= 租户 userdata/{slug}/...blobs/ 结构
索引搜索 GET /api/storage/search?q= SQLite storage_index 表,重建:POST /api/storage/reindex
关联删除 GET /api/storage/delete-plan + DELETE /api/storage/items 草稿文件、版本、项目;孤立 blob 需 admin

数据布局:{dataDir}/userdata/{slug}/projects/{name}/{version}/;去重块在 {dataDir}/blobs/

文档

Go 1.26 · MIT

Directories

Path Synopsis
cmd
express233-cli command
internal
api
cli

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL