部署
把可运行服务交给安装器
普通部署不需要自己去 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;环境不支持服务管理器时退回后台进程。
irm https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.ps1 | iex
支持 Windows amd64。脚本用 PowerShell 下载 zip、校验 SHA-256、备份旧版本并在后台启动。
- 1
识别平台
根据 OS 和 CPU 选择正确的完整归档,拒绝不受支持的平台。
- 2
下载并校验
同时下载 Release 的
SHA256SUMS,校验成功后才解压。 - 3
备份再切换
备份数据库、WAL/SHM、前端、旧二进制和启动脚本;保留已有
config.yaml。 - 4
启动并探活
最多等待 45 秒访问
/api/health。Unix 更新失败时恢复上一套运行文件。
参数
通过环境变量控制安装
| 变量 | 默认值 | 用途 |
|---|---|---|
DIANA_INSTALL_SCOPE | auto | Unix 默认推荐使用 sudo 安装到 /opt/diana;设为 user 时安装到当前用户目录。 |
DIANA_INSTALL_DIR | 系统安装:/opt/diana用户安装: ~/.local/share/dianaWindows: %LOCALAPPDATA%\Diana | 显式指定程序、数据、日志和备份目录。 |
DIANA_VERSION | latest | 指定 v0.4.2 形式的版本;默认解析最新稳定版。 |
DIANA_PORT | 18080 | 首次安装写入 config.yaml 的 WebUI 端口。 |
DIANA_ADMIN_USERNAME | diana#admin | 首次安装的管理员用户名。 |
DIANA_ADMIN_PASSWORD | 随机 32 位十六进制 | 首次安装的管理员密码。 |
DIANA_START_AFTER_INSTALL | true | 设为 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。
开发部署
从源码构建
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
登录控制台
打开
http://127.0.0.1:18080,一键安装凭据位于终端输出和权限为 600 的config.yaml。 - 2
配置模型
先同步模型列表,再填写默认模型;对话、视觉、意图识别和生图分别测试。
- 3
连接机器人
在「机器人」页按平台填写凭据,六个平台可同时启用,会话上下文固定按机器人隔离。
- 4
检查事件
发送测试消息,在事件明细确认决策原因、调用结果与 token 统计。