118 lines
3.9 KiB
Markdown
118 lines
3.9 KiB
Markdown
# AgentDock 网页控制台部署说明
|
||
|
||
## 访问范围
|
||
|
||
控制台固定绑定服务器地址 `192.168.200.36`,默认端口为 `8443`:
|
||
|
||
```text
|
||
https://192.168.200.36:8443
|
||
```
|
||
|
||
Caddy 同时检查来源 IP,只接受 `192.168.200.0/24`。Compose 不映射
|
||
Runner 和 Console 的内部端口,局域网只能接触 HTTPS 代理。
|
||
|
||
## 准备 `.env`
|
||
|
||
在服务器执行:
|
||
|
||
```bash
|
||
cd /vol1/1000/docker/ai-toools
|
||
cp -n .env.example .env
|
||
chmod 600 .env
|
||
```
|
||
|
||
必须设置三个独立的机密值:
|
||
|
||
```dotenv
|
||
ADMIN_PASSWORD=一个至少12位的管理员密码
|
||
RUNNER_TOKEN=至少32位随机字符串
|
||
CONFIG_ENCRYPTION_KEY=至少32位随机字符串
|
||
```
|
||
|
||
可以用 OpenSSL 生成随机值:
|
||
|
||
```bash
|
||
openssl rand -base64 36
|
||
```
|
||
|
||
不要把三个值写进 `compose.yaml`、Dockerfile 或 Git。`CONFIG_ENCRYPTION_KEY`
|
||
丢失后,设置页中保存的 API Key 将无法解密。
|
||
|
||
## 构建和启动
|
||
|
||
```bash
|
||
cd /vol1/1000/docker/ai-toools
|
||
mkdir -p workspace data console-data
|
||
chmod +x scripts/generate-console-certificate.sh
|
||
./scripts/generate-console-certificate.sh /vol1/1000/docker/ai-toools
|
||
docker compose build
|
||
docker compose up -d
|
||
docker compose ps
|
||
docker compose logs --tail=100 ai-tools ai-console ai-proxy
|
||
```
|
||
|
||
健康状态应为 `healthy`。检查内部服务:
|
||
|
||
```bash
|
||
docker compose exec ai-tools curl -fsS http://127.0.0.1:4174/health
|
||
docker compose exec ai-console wget -qO- http://127.0.0.1:4173/health
|
||
```
|
||
|
||
## 信任局域网证书
|
||
|
||
Caddy 使用部署目录中为服务器 IP 生成的自签名证书。把证书复制到 Windows:
|
||
|
||
```bash
|
||
cd /vol1/1000/docker/ai-toools
|
||
scp nas:/vol1/1000/docker/ai-toools/proxy/certs/agentdock.crt .
|
||
```
|
||
|
||
复制到 Windows 后,在当前用户的受信任根证书存储中安装:
|
||
|
||
```powershell
|
||
certutil -user -addstore Root .\agentdock.crt
|
||
```
|
||
|
||
只应信任从自己的 `192.168.200.36` 服务器导出的证书。安装后重新打开浏览器,
|
||
访问 `https://192.168.200.36:8443`。
|
||
|
||
## 第一次使用
|
||
|
||
1. 使用 `.env` 中的 `ADMIN_PASSWORD` 登录。
|
||
2. 在顶部选择 `/workspace` 下的项目。
|
||
3. 在设置页填写需要的 API Key,或点击“打开终端”进入独立授权终端完成设备授权。
|
||
4. 回到工作台,选择 CLI 后直接发送消息。
|
||
5. DeepSeek Harness 必须先填写任务再发送,使用 `headless` 执行一次后自动退出。
|
||
|
||
工作台的“会话”页使用非交互 CLI 输出和单一多行输入框。每条消息对应一次任务,
|
||
回复按时间连续显示。按 Enter 发送,按 Shift+Enter 换行。初始化授权使用独立的
|
||
可交互终端;“原始输出”页只用于查看本次非交互任务的底层输出,不接收键盘输入。
|
||
|
||
当前 `@deepseek-ai/dsh@0.1.1-rc.2` 没有发布可直接安装的 TUI profile bundle。
|
||
CLI 帮助中的 `tui` 只是自定义 profile 示例,不能直接执行。AgentDock 因此只开放
|
||
官方内置并适合本控制台的 `headless` profile,不开放 Harness 自带 Web 服务。
|
||
DeepSeek Harness 不使用其他 CLI 的网页登录状态,必须在设置页配置
|
||
`DEEPSEEK_API_KEY` 才能运行。
|
||
|
||
API Key 使用 AES-256-GCM 加密后存放于 `console-data/settings.enc.json`,接口只返回
|
||
掩码。原有 CLI 自己的登录状态仍保存在 `data` 目录。
|
||
|
||
## 会话生命周期
|
||
|
||
- 浏览器关闭:CLI 进程继续运行,重新登录后可继续连接。
|
||
- `ai-console` 重启:CLI 进程不受影响,但管理员需要重新登录。
|
||
- `ai-tools` 重启:其中的所有 CLI 进程会停止;历史输出仍保留。
|
||
- `docker compose down`:所有 CLI 进程停止,`data` 和 `console-data` 不删除。
|
||
|
||
## 安全检查
|
||
|
||
```bash
|
||
# 不应出现 docker.sock
|
||
docker inspect ai-tools --format '{{json .Mounts}}' | grep docker.sock
|
||
|
||
# 主机只应监听 HTTPS 端口,不应监听 4173/4174
|
||
ss -lnt | grep -E '(:8443|:4173|:4174)'
|
||
```
|
||
|
||
第一条命令没有输出是正确结果。第二条只应看到 `192.168.200.36:8443`。
|