部署
把可运行服务交给安装器
普通部署不需要自己去 Release 页面挑文件。一键脚本完成平台检测、完整包下载、SHA-256 校验、数据备份、服务安装与健康检查。
推荐
一条命令安装或升级
curl -fsSL https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.sh | 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、备份旧版本并在后台启动。
curl -fsSL https://raw.githubusercontent.com/SuInk/Diana/main/scripts/docker.sh | sh
在想放数据的目录里运行。脚本会拉取预构建镜像、生成 Compose 配置并启动;升级也是在同一目录重跑这条命令。镜像版本选择、更新助手和数据挂载见下方容器部署。
- 1
识别平台
根据 OS 和 CPU 选择正确的完整归档,拒绝不受支持的平台。
- 2
下载并校验
同时下载 Release 的
SHA256SUMS,校验成功后才解压。 - 3
备份再切换
备份数据库、WAL/SHM、前端、旧二进制和启动脚本;保留已有
config.yaml。 - 4
启动并探活
最多等待 45 秒访问
/api/health。Unix 更新失败时恢复上一套运行文件。
安装选项
交互选择安装方式,也可传命令行参数用于无人值守安装。应用设置统一通过 config.yaml 和 WebUI 管理,不使用配置环境变量。
| Unix / Windows | 用途 |
|---|---|
--dir PATH / -InstallDir PATH | 安装目录,默认当前用户目录;受保护目录才需要管理员权限。 |
--scope user|system | Unix 安装范围;默认 user,system 需要 sudo。 |
--version VERSION / -Version VERSION | Release 版本,默认 latest。 |
--host HOST / -BindHost HOST | 写入 YAML 的监听地址,默认 127.0.0.1。 |
--port PORT / -Port PORT | 监听端口,默认 18080。 |
--config-file PATH / -ConfigFile PATH | 新安装的初始 YAML 文件;已有配置不覆盖。 |
--no-start / -NoStart | 仅安装,不启动。 |
--yes / -Yes | 跳过交互,使用默认值。 |
curl -fsSL https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.sh | sh -s -- --dir "$HOME/Applications/Diana" --port 18081 --yes
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/SuInk/Diana/main/scripts/install.ps1))) -InstallDir "$env:LOCALAPPDATA\Diana" -Port 18081 -Yes
自动配置用户 PATH。旧系统安装保留原作用域,仍可能需要 sudo;迁移到其他目录前先停服务并保留配置和数据。
备用方式
手工安装完整 Release 包
离线环境或需要人工变更审批时,可手动下载匹配平台的完整包 .tar.gz/.zip 和同一 Release 的 SHA256SUMS。完整包包含后端、编译好的 WebUI 和启动脚本,无需单独部署 WebUI 或安装 Node.js。Release 不再单独提供裸二进制;自定义部署可从完整包提取程序和前端资源。
# macOS Apple Silicon 示例
shasum -a 256 diana-macos-arm64.tar.gz
tar -xzf diana-macos-arm64.tar.gz
cd diana-macos-arm64
./run.sh
完整包现统一使用 diana-<系统>-<架构> 命名。仍只识别 diana-webui-… 包名的旧版控制台不能直接自更新,首次请重跑上方一键安装命令或手工安装完整包。
Docker
容器部署
只需挂载 /app/data 一个目录,否则重建容器会丢失 SQLite 配置与凭据。
镜像随每个版本发布,不必克隆仓库再本地构建:
curl -fsSL https://raw.githubusercontent.com/SuInk/Diana/main/scripts/docker.sh | sh
以后在同一部署目录更新:
docker compose pull && docker compose up -d
管理员账号密码用 docker logs diana 查看。想预置配置做无人值守部署,把改好的 config.yaml 放到 data/config.yaml。升级拉新镜像重建容器即可,控制台只提示新版本、不在容器里替换程序。数据库、运行日志(data/logs/diana.log)、插件、技能、MCP 配置、各类登录态和升级备份都在挂出来的 data/ 里;容器启动时自动把它交给容器内的运行用户(UID 10001)。换了镜像版本后第一次启动,会在迁移数据库之前把它备份到 data/.diana-updates/backups/(3 天内最多 3 份)。旧部署挂在 /app/config.yaml 的配置仍然优先生效;想改放 data/config.yaml,要同时删掉旧 Compose 里的 DIANA_CONFIG 一行。旧配置里的 log_path: logs/diana.log 改成 data/logs/diana.log(或删掉这行)后,旧的 logs/ 挂载就可以去掉。
安装脚本可选择完整版或 slim 轻量镜像,并将选择写入部署目录的 .env;更新通道、滚动标签和更新助手边界见更新通道说明,浏览器与中文字体差异见浏览器依赖与容器配置。
需要本地构建,或者要和 QQ 接入端(推荐 SnowLuma)一起编排时,用仓库里的 compose:
git clone https://github.com/SuInk/Diana.git
cd Diana
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
docker compose logs -f diana
SnowLuma 等接入端与 Diana 分容器时,反向 WebSocket 使用容器服务名,例如 ws://diana:18080/onebot/v11/ws,不能写只指向接入端容器自身的 127.0.0.1。
开发部署
从源码构建
git clone https://github.com/SuInk/Diana.git
cd Diana
go mod download
cd frontend && npm ci && npm run build && cd ..
mkdir -p dist
go build -trimpath -o dist/diana-webui ./cmd/webui
FRONTEND_DIST=frontend/dist ./dist/diana-webui
首次登录
先验证模型,再连接通道
- 1
登录控制台
打开
http://127.0.0.1:18080,一键安装凭据位于终端输出和权限为 600 的config.yaml。 - 2
配置模型
先同步模型列表,再填写默认模型;对话、视觉、意图识别和生图分别测试。
- 3
连接机器人
在「机器人」页按平台填写凭据,八个平台可同时启用,会话上下文固定按机器人隔离。
- 4
检查事件
发送测试消息,在事件明细确认决策原因、调用结果与 token 统计。