跳转到内容

自部署 Server

outbrief-server 只做一件事:在你的电脑和设备之间转发密文。它没有密钥,看不到汇报、简报和回复;来电结束后会删除密文;它也不调用任何大模型。

需要 Node ≥ 22.18、pnpm 9 和 MySQL 8。

  1. 下载代码,安装依赖:

    终端窗口
    git clone https://github.com/outbriefapp/outbrief-server
    cd outbrief-server
    pnpm install
  2. 启动。连接串由部署环境注入,下面的用户名和口令只是占位符:

    终端窗口
    OUTBRIEF_DATABASE_URL='mysql://USER:PASSWORD@HOST:3306/outbrief' PORT=8787 pnpm start

    数据表会在启动时自动创建和迁移。

  3. 在日志里找到认领码,记下来:

    Claim code: XXXX-XXXX-XXXX
  4. 检查是否正常:GET /healthz

部署方式 设置 行为
私有化(默认) OUTBRIEF_OPEN_SIGNUP=false 第一台设备要填日志里的认领码,创建完账号后就关闭注册,其他设备只能用配对码加入
公共云端 OUTBRIEF_OPEN_SIGNUP=true 谁都能建账号,不用认领码,有限流

都不是必填,不需要 .env 文件。

变量 默认值 说明
OUTBRIEF_DATABASE_URL 本机 docker 的 outbrief 库 MySQL 连接串,由部署平台注入
PORT 8787 监听端口
OUTBRIEF_OPEN_SIGNUP false 是否开放注册,见上表
OUTBRIEF_FCM_SERVICE_ACCOUNT 不设 来电推送用的 Firebase 服务账号密钥,可以是整个 JSON 内容,也可以是文件路径。设了但读不出来时,server 会启动失败

不配推送也能用:App 开着时会通过事件流收到来电。想让 App 被划掉的 Android 手机也能响铃,就需要推送:

  1. 在 Firebase 控制台建一个项目,添加包名为 ai.outbrief.app 的 Android 应用。
  2. 把这个项目的服务账号密钥(整个 JSON)配给 server 的 OUTBRIEF_FCM_SERVICE_ACCOUNT。
  3. 用同一个项目的 google-services.json 打包 Android App,见 Android 安装包。

推送里不带任何内容,只有来电 id。手机收到后,再用自己的令牌去取密文,在本机解密、响铃。没收到回执时,每 10 秒重推一次,最多 3 次。设计见 ADR 0010。