跳到主要内容

交付包安装

安装脚本与离线安装、交付包的获取与内容、deploy.sh 各步骤与提问、自带 Elasticsearch 与 Kibana、多用户账号表、手动安装,以及安装后的验证。

用安装脚本安装

安装脚本 install.sh 随每个版本的 Release 发布。脚本下载交付包与 .sha256 文件,校验后解压到安装目录,再执行 deploy.sh。主机需要已安装 Docker Engine 24 及以上与 Docker Compose v2,并在交互式终端中以 root 执行。

curl -fsSL https://github.com/Reallysec/RST-AI-Copilot-for-Elastic/releases/latest/download/install.sh | sudo bash

所有版本使用同一个交付包:未激活许可时以社区版运行,在 系统设置 的 产品激活 中激活许可后,原地解锁对应版本的功能,不需要重装。

选项默认值说明
--version最新版安装指定版本
--dir/opt/rst-ai-copilot-for-elastic安装目录。已有 /opt/rst-elastic-ai-copilot(1.2.20 及更早版本的安装)时沿用
--download-only关只下载并校验交付包,保存到当前目录,不安装

再次执行安装脚本时,交付包解压到同一目录,目录中的 .env 与 state/ 保留,许可指纹不变。

在离线主机上安装

步骤

  1. 在能访问 GitHub 的主机上执行:

    curl -fsSL https://github.com/Reallysec/RST-AI-Copilot-for-Elastic/releases/latest/download/install.sh | bash -s -- --download-only
  2. 把当前目录下的 RST-AI-Copilot-for-Elastic-<版本>.tar.gz 拷到离线主机。

  3. 在离线主机上按下文 执行 deploy.sh 安装。

使用自带 Elasticsearch 与 Kibana 时,把 Release 页的 RST-AI-Copilot-for-Elastic-elk-images-<版本>.tar.gz 一并拷到解压后的目录,见 自带 Elasticsearch 与 Kibana。

获取交付包

交付包在 GitHub Releases 页面发布,文件为 RST-AI-Copilot-for-Elastic-<版本>.tar.gz 与校验文件 RST-AI-Copilot-for-Elastic-<版本>.tar.gz.sha256。所有版本使用同一个交付包,功能范围由激活的许可决定。

解开后的目录:

RST-AI-Copilot-for-Elastic-<版本>/
├── RST-AI-Copilot-for-Elastic-images-<版本>.tar   # 网关与 Caddy 镜像,deploy.sh 自动加载
├── deploy.sh                                  # 交互式安装脚本
├── docker-compose.prod.yml                    # 标准形态:Caddy、网关、userdb
├── docker-compose.sso.yml                     # SSO 形态
├── Caddyfile / Caddyfile.sso
├── .env.example                               # 全部配置项及说明
├── deploy/rst-update.sh                       # 在线更新安装器
├── scripts/backup.sh / restore.sh
└── docs/                                      # 部署、备份手册与发版说明

安装不访问镜像仓库。解包前执行 sha256sum -c RST-AI-Copilot-for-Elastic-<版本>.tar.gz.sha256 校验完整性。

执行 deploy.sh

tar xzf RST-AI-Copilot-for-Elastic-<版本>.tar.gz
cd RST-AI-Copilot-for-Elastic-<版本>
sudo ./deploy.sh

脚本分七步执行。

步骤内容
1 预检检查 Docker、Compose 与必需文件,生成 state/machine-id 与 state/server_guid,已存在时复用
2 镜像用 docker load 加载目录中的镜像包,包括交付包自带的镜像和 RST-AI-Copilot-for-Elastic-elk-images-<版本>.tar.gz,记录网关 tag
3 现状已有 .env 时询问是否保留并直接启动。升级时选 Y
4 部署选项认证方式:1 为网关自带登录,2 为 SSO(见 SSO)。Elasticsearch 来源:1 为已有集群,2 为自带 Elasticsearch 与 Kibana,见下文
5 配置逐项提示,见下表
6 写入 .env生成 RST_GATEWAY_SHARED_SECRET、RST_ADMIN_TOKEN、RST_USER_DB_PASSWORD、RST_ADMIN_PASSWORD_HASH,写入 .env(权限 600)
7 启动写入 GATEWAY_IMAGE_TAG,执行 docker compose -f docker-compose.prod.yml up -d,最多等待 90 秒至全部容器 healthy,打印访问地址

第 5 步的提示与取值:

提示取值
LLM endpoint URL默认为火山方舟 https://ark.cn-beijing.volces.com/api/v3。coding 计划使用 /api/coding/v3
LLM model id火山方舟 coding 计划为 ark-code-latest,自建 endpoint 为 ep-xxx
时区偏移默认 +08:00。模型据此解释「今天」「昨天」
Elasticsearch URL例如 https://es.corp.local:9200。选择自带 Elasticsearch 时不提示
ES 用户名Elasticsearch 未启用安全认证时留空。选择自带 Elasticsearch 时不提示
Kibana URL例如 https://kibana.corp.local:5601。选择自带 Elasticsearch 时不提示
Caddy 访问域名分析师访问 https://<域名>/v2/,必须是域名
管理员口令至少 8 位

state/machine-id 与 state/server_guid 是许可的硬件指纹,生成后不可重建。

自带 Elasticsearch 与 Kibana

第 4 步 Elasticsearch 来源选 2 时,deploy.sh 在 .env 中写入 ES_URL=http://elasticsearch:9200 与 KIBANA_URL=http://kibana:5601,并以 --profile bundled-elk 启动 docker-compose.prod.yml 中的 elasticsearch 与 kibana 两个容器。这一形态用于 PoC 和没有 ELK 的主机,生产环境连接已有集群。

项目取值
镜像elasticsearch:9.5.3、kibana:9.5.3(docker.elastic.co),版本由 .env 的 RST_ELK_VERSION 决定
Elasticsearch单节点,未启用安全认证,堆内存 1 GB(ES_JAVA_OPTS=-Xms1g -Xmx1g)
数据es_data 卷
端口两个容器不向主机映射端口,只在 compose 内部网络访问

交付包不含这两个镜像。主机能访问 docker.elastic.co 时,deploy.sh 发现缺少镜像后询问是否在线拉取。离线主机把 Release 页的可选附件 RST-AI-Copilot-for-Elastic-elk-images-<版本>.tar.gz 放到安装目录(与 deploy.sh 同一目录),deploy.sh 在第 2 步加载。缺少镜像且不在线拉取时,脚本中止。

deploy.sh 按以下顺序决定写入 .env 的 RST_ELK_VERSION:

  1. .env 中已有该值时沿用。
  2. 没有该值、但主机上已有自带 Elasticsearch 的数据卷(es_data 或 sso_es_data)时,写入 8.12.2。1.2.4 之前的安装属于这种情况。
  3. 其他情况(新装)写入 9.5.3。离线附件 elk-images 中也是 9.5.3。

Elasticsearch 9.x 不能直接打开 8.x 的数据。已有自带 Elasticsearch 数据的主机不要只把 RST_ELK_VERSION 改成 9.5.3,否则 Elasticsearch 无法启动。

多用户账号表

多用户与三档角色(admin、analyst、viewer)的账号保存在网关自有的 Postgres 中,不写入 Elasticsearch。deploy.sh 启动 userdb 容器并设置 RST_USER_DB_URL,安装完成后即可在 用户 页添加账号。

手动安装时,在 .env 中设置:

RST_USER_DB_PASSWORD=<32 位随机串>
RST_USER_DB_URL=postgresql://rst:<同上>@userdb:5432/rst_users

然后执行 docker compose -f docker-compose.prod.yml up -d userdb gateway caddy。首次启动时网关建表,并把 RST_ADMIN_USERNAME 与 RST_ADMIN_PASSWORD_HASH 写为第一个管理员。使用自有 Postgres 时,把 RST_USER_DB_URL 指向该实例,不启动 userdb。

启用 SSO 后账号由 IdP 管理,RST_USER_DB_URL 不生效。

验证安装

curl -k https://<域名>/healthz     # {"status":"ok"}
curl -k https://<域名>/readyz      # {"status":"ready","es":"ok","es_write":"ok","timezone":"+08:00",...}
docker compose -f docker-compose.prod.yml ps
readyz 字段期望值不符时
esok核对 Elasticsearch 地址、账号、证书,查看 docker compose logs gateway
es_writeokdenied 表示账号缺少 .rst_copilot_* 的建索引与写权限,见 Elasticsearch 权限
timezone部署时区修改 .env 中的 RST_TIMEZONE
sso未启用 SSO 时为 disabled

打开 https://<域名>/v2/,以 admin 和安装时设置的口令登录。默认证书为自签证书,生产环境修改 Caddyfile 换成自有证书。

手动安装

不使用 deploy.sh 时:

docker load < RST-AI-Copilot-for-Elastic-images-*.tar
cp .env.example .env            # 填写 LLM_*、ES_*、CADDY_SITE_ADDRESS、RST_GATEWAY_SHARED_SECRET、RST_ADMIN_TOKEN、RST_USER_DB_PASSWORD、GATEWAY_IMAGE_TAG
mkdir -p state
openssl rand -hex 16 > state/machine-id
cat /proc/sys/kernel/random/uuid > state/server_guid
chmod 644 state/*               # 网关以 uid 10001 运行,600 无法读取
docker compose -f docker-compose.prod.yml up -d

state/machine-id 与 state/server_guid 必须同时存在。缺少任一文件时,Docker 在该路径挂载一个目录,网关启动失败,或激活时报 no hardware identifier available。这不是许可问题。

管理员口令哈希由 docker exec rst-ai-copilot-for-elastic-gateway python -m backend.session_auth '<口令>' 生成,写入 .env 的 RST_ADMIN_PASSWORD_HASH。哈希中的每个 $ 写为 $$,否则 compose 会把它当作变量。

后续操作

  1. 使用付费引擎时,激活许可。
  2. 在系统设置中配置索引白名单、脱敏档位和审计。
  3. 在 AI 配置中配置知识库向量模型。
  4. 把 ./state/、gateway_state 卷和 userdb_data 卷纳入备份,见升级与备份。

本页内容