# 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`。