部署

把可运行服务交给安装器

普通部署不需要自己去 Release 页面挑文件。一键脚本完成平台检测、完整包下载、SHA-256 校验、数据备份、服务安装与健康检查。

推荐

一条命令安装或升级

curl -fsSL https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.sh | sudo sh

支持 Linux amd64/arm64、macOS Intel/Apple Silicon。Linux 优先安装为 systemd --user 服务,macOS 安装为 LaunchAgent;环境不支持服务管理器时退回后台进程。

  1. 1

    识别平台

    根据 OS 和 CPU 选择正确的完整归档,拒绝不受支持的平台。

  2. 2

    下载并校验

    同时下载 Release 的 SHA256SUMS,校验成功后才解压。

  3. 3

    备份再切换

    备份数据库、WAL/SHM、前端、旧二进制和启动脚本;保留已有 config.yaml

  4. 4

    启动并探活

    最多等待 45 秒访问 /api/health。Unix 更新失败时恢复上一套运行文件。

参数

通过环境变量控制安装

变量默认值用途
DIANA_INSTALL_SCOPEautoUnix 默认推荐使用 sudo 安装到 /opt/diana;设为 user 时安装到当前用户目录。
DIANA_INSTALL_DIR系统安装:/opt/diana
用户安装:~/.local/share/diana
Windows:%LOCALAPPDATA%\Diana
显式指定程序、数据、日志和备份目录。
DIANA_VERSIONlatest指定 v0.4.2 形式的版本;默认解析最新稳定版。
DIANA_PORT18080首次安装写入 config.yaml 的 WebUI 端口。
DIANA_ADMIN_USERNAMEdiana#admin首次安装的管理员用户名。
DIANA_ADMIN_PASSWORD随机 32 位十六进制首次安装的管理员密码。
DIANA_START_AFTER_INSTALLtrue设为 false 时只安装和校验,不启动。
# 安装固定版本到自定义目录
curl -fsSL https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.sh | \
  sudo env \
  DIANA_VERSION=v0.4.2 \
  DIANA_INSTALL_DIR=/opt/diana-user \
  DIANA_PORT=18081 \
  sh
关于管道变量

使用 sudo 时,变量要通过 sudo env 传给安装脚本。没有 sudo 权限时可显式使用 DIANA_INSTALL_SCOPE=user sh 安装给当前用户。

备用方式

手工安装完整 Release 包

离线环境或需要人工变更审批时,可手动下载匹配平台的完整包 .tar.gz/.zip 和同一 Release 的 SHA256SUMS。完整包包含后端、编译好的 WebUI 和启动脚本,无需单独部署 WebUI 或安装 Node.js。Release 不再单独提供裸二进制;自定义部署可从完整包提取程序和前端资源。

# macOS Apple Silicon 示例
shasum -a 256 diana-webui-darwin-arm64.tar.gz
tar -xzf diana-webui-darwin-arm64.tar.gz
cd diana-webui-darwin-arm64
./run.sh

Docker

容器部署

持久化

必须挂载 /app/data/app/logs,否则重建容器会丢失 SQLite 配置与凭据。

镜像随每个版本发布,不必克隆仓库再本地构建:

docker run -d --name diana --restart unless-stopped \
  -p 18080:18080 \
  -v "$PWD/data:/app/data" \
  -v "$PWD/logs:/app/logs" \
  ghcr.io/suink/diana:latest

管理员账号密码用 docker logs diana 查看。想预置配置做无人值守部署,把改好的 config.yaml 以只读方式挂到 /app/config.yaml。升级拉新镜像重建容器即可,数据都在挂出来的 data/ 里。

需要本地构建,或者要和 NapCat 一起编排时,用仓库里的 compose:

git clone https://github.com/SuInk/Diana.git
cd Diana
docker compose up -d --build
docker compose logs -f diana

NapCat 与 Diana 分容器时,反向 WebSocket 使用容器服务名,例如 ws://diana:18080/onebot/v11/ws,不能写只指向 NapCat 容器自身的 127.0.0.1

开发部署

从源码构建

Go 1.26.5Node.js 22npmGit
git clone https://github.com/SuInk/Diana.git
cd Diana
go mod download
cd frontend-next && npm ci && npm run build && cd ..
mkdir -p dist
go build -trimpath -o dist/diana-webui ./cmd/webui
FRONTEND_DIST=frontend-next/dist ./dist/diana-webui

首次登录

先验证模型,再连接通道

  1. 1

    登录控制台

    打开 http://127.0.0.1:18080,一键安装凭据位于终端输出和权限为 600 的 config.yaml

  2. 2

    配置模型

    先同步模型列表,再填写默认模型;对话、视觉、意图识别和生图分别测试。

  3. 3

    连接机器人

    在「机器人」页按平台填写凭据,六个平台可同时启用,会话上下文固定按机器人隔离。

  4. 4

    检查事件

    发送测试消息,在事件明细确认决策原因、调用结果与 token 统计。