打包与自托管
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 嵌入:
screencastfeature 下,scripts/fetch-scrcpy-server.sh把 server 放入资源目录,构建脚本include_bytes!进二进制;未拉取则相关路径在运行时返回配置错误(仍可编译)。 - 桌面瘦客户端:桌面端不链接
aixautosdk,而是打包aixautobotsidecar。应用启动时自动POST /api/nodes签发并持久化 node token,再以aixautobot node拉起。节点注册需身份:sidecar 从环境读AIXAUTOSDK_PROJECT_KEY+AIXAUTOSDK_PROJECT_SECRET或AIXAUTOSDK_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 443server:缺了它 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/。