aixautobotaixautobot
写新云 aixautobot 文档

打包与自托管

buildsdk / package-sdk 与部署

打包与分发

两个脚本,用途不同:

# ── buildsdk.sh:多平台分发,每平台一个带版本号的二进制 ──
./buildsdk.sh                     # 仅当前 host triple
./buildsdk.sh all                 # 默认桌面平台矩阵(mac x64/arm64、windows、linux…)
./buildsdk.sh <triple> [<triple>] # 指定目标
#   产物:dist/sdk/aixautobot-<version>-<triple>[.exe]
#   默认把 AIXAUTOSDK_BACKEND_WS_DEFAULT=wss://aixautobot.com 烘焙进二进制
SKIP_SCRCPY=1 ./buildsdk.sh       # 跳过 scrcpy-server 拉取

# ── package-sdk.sh:host 单平台 + 顺带生成桌面 sidecar ──
./build.sh sdk                    # = scripts/package-sdk.sh all
scripts/package-sdk.sh            # aixautobot → dist/sdk/<triple>/ + 桌面 sidecar

产物(单一 aixautobot 二进制,子命令切换 node/mcp/hid-bridge):

dist/sdk/<target-triple>/
  aixautobot                  # 统一 CLI(aixautobot node / mcp serve / hid-bridge)
tauri/binaries/
  aixautobot-<target-triple>  # 桌面端 sidecar(运行时 `aixautobot node`)
  • screencast 嵌入screencast feature 下,scripts/fetch-scrcpy-server.sh 把 server 放入资源目录,构建脚本 include_bytes! 进二进制;未拉取则相关路径在运行时返回配置错误(仍可编译)。
  • 桌面瘦客户端:桌面端不链接 aixautosdk,而是打包 aixautobot sidecar。应用启动时自动 POST /api/nodes 签发并持久化 node token,再以 aixautobot node 拉起。节点注册需身份:sidecar 从环境读 AIXAUTOSDK_PROJECT_KEY + AIXAUTOSDK_PROJECT_SECRETAIXAUTOSDK_USER_TOKEN,缺失则注册被拒(401)。

自托管部署

服务端(backend 网关 + 这个站点)以容器部署,nginx 反向代理统一域名。

https://your-domain/                 → 站点 (Next.js standalone 容器)
https://your-domain/wiki · /download → 站点
https://your-domain/api · /ws        → backend 网关 (单服务 API+WS)
  • backend 是单一 Rust 服务,自带 Postgres 容器;expose 3000 接入共享网络,由 nginx 反代。
  • 站点是 Next.js standalone 容器,同样接入共享网络。
  • nginx 按 location 分流:/api/ws → backend,其余 → 站点。

关键要点

  • WebSocket/ws/ 的 location 必须带 proxy_http_version 1.1 + Upgrade/Connection "upgrade" + 长 proxy_read_timeout,否则节点/镜像连不上。
  • HTTPS 必须有 listen 443 server:缺了它 HTTPS 会落到默认 443 server。证书签发后在 443 server 引用 fullchain.cer + private.key,并把 :80 改为 301→https(保留 acme 放行)。
  • 构建顺序:先 docker compose up(容器起来、服务名可解析),再 reload nginx,否则 upstream 解析失败。

节点接入生产

AIXAUTOSDK_BACKEND_WS=wss://your-domain \
AIXAUTOSDK_NODE_TOKEN=<token> \
  aixautobot node

仓库内 scripts/deploy-gcloud-tk.sh 提供一键部署(远端原生构建 + 装 vhost + 冒烟),细节见仓库 docs/