通过代理安装远程主机

在需要通过 HTTP/HTTPS 代理访问 Knodo 的环境中安装远程主机

通过代理安装远程主机

适用场景

远程主机不能直接访问 Knodo 平台,需要通过 HTTP/HTTPS 代理出站访问。

该场景请选择 反向连接(Inbound) 模式。平台不需要访问内网主机,专属主机所在网络也不需要开放入站端口。

部署前准备

请先确认以下信息:

项目说明
平台访问地址Knodo 平台域名:https://knodo.vip
代理地址HTTP/HTTPS 代理地址,例如 http://proxy.example.com:8080
NO_PROXY内网域名、内网 IP 段、localhost127.0.0.1::1
镜像仓库前缀内网可访问的镜像仓库前缀,例如 registry.customer.local/knodo
主机权限安装需要 root 或具备 sudo 权限的管理员账号

如果使用内网镜像仓库,请确保专属主机可以通过 docker pull 从该仓库拉取 Agent Service 和 Sandbox 的新版本镜像。

代理服务器需要满足以下要求:

  1. 放行 https://knodo.vip 及其子域名。
  2. 支持 WebSocket 长连接。
  3. 支持 SSE 流式响应。

第一步:获取安装命令

先参考 远程主机一键安装 创建反向连接(Inbound)模式的远程主机,并生成安装命令。

如果平台管理员已经提供安装命令,可以直接进入下一步。

第二步:在主机上设置临时环境变量

登录专属主机,进入 root shell 或具备 sudo 权限的管理员账号后执行:

export HTTP_PROXY="http://<proxy-host>:<proxy-port>" export HTTPS_PROXY="http://<proxy-host>:<proxy-port>" export http_proxy="$HTTP_PROXY" export https_proxy="$HTTPS_PROXY" export NO_PROXY="localhost,127.0.0.1,::1,.internal,<内网域名>,<内网IP段>" export no_proxy="$NO_PROXY"

如果使用内网镜像仓库,继续设置镜像前缀:

export SANDBOX_IMAGE_PREFIX_EXTERNAL="registry.customer.local/knodo"

验证当前 shell 能通过代理访问平台:

curl -I https://knodo.vip

安装需要管理员权限,是因为脚本会写入 /opt/knodo、拉取和启动 Docker 容器、创建 Docker 网络;如果启用 Docker daemon 代理,还会写入 Docker 的 systemd 代理配置并重启 Docker。

如果使用 sudo 执行安装命令,请使用能保留环境变量的方式,例如 sudo -E

第三步:执行安装命令

在同一个 shell 中执行平台生成的安装命令:

curl -fsSL https://knodo.vip/api/v1/public/install/<token> | bash

安装脚本会自动完成:

  1. 检测当前 shell 中的代理变量。
  2. 激活专属主机。
  3. 将代理配置写入 /opt/knodo/.env
  4. SANDBOX_IMAGE_PREFIX_EXTERNAL、最终 Agent Service 镜像和 Sandbox 镜像写入 /opt/knodo/.env
  5. 拉取镜像并启动 Agent Service。

安装完成后检查容器状态:

docker ps --filter name=knodo-agent-service-inbound docker logs --tail 100 knodo-agent-service-inbound

可选:启用 Docker daemon 代理

默认不需要配置 Docker daemon 代理。推荐通过内网镜像仓库和 SANDBOX_IMAGE_PREFIX_EXTERNAL 解决镜像拉取。

只有在 Docker 必须通过代理服务器访问镜像仓库时,才在执行安装命令前增加:

export KNODO_CONFIGURE_DOCKER_PROXY=true

安装脚本检测到该变量后,会写入 Docker systemd 代理配置并重启 Docker。

第四步:检查安装配置

安装完成后,检查 /opt/knodo/.env

grep -E 'HTTP_PROXY|HTTPS_PROXY|NO_PROXY|UPSTREAM_PROXY|SANDBOX_IMAGE_PREFIX_EXTERNAL|AGENT_SERVICE_FULL_IMAGE|SANDBOX_IMAGE' /opt/knodo/.env

应能看到:

HTTP_PROXY=http://<proxy-host>:<proxy-port> HTTPS_PROXY=http://<proxy-host>:<proxy-port> NO_PROXY=... UPSTREAM_PROXY=http://<proxy-host>:<proxy-port> SANDBOX_IMAGE_PREFIX_EXTERNAL=registry.customer.local/knodo AGENT_SERVICE_FULL_IMAGE=registry.customer.local/knodo/knodo-agent-service:<tag> SANDBOX_IMAGE=registry.customer.local/knodo/knodo-sandbox:<tag>

如果未设置镜像前缀,SANDBOX_IMAGE_PREFIX_EXTERNAL 可以为空。

第五步:向平台管理员提供 Sandbox 隔离代理配置

安装成功后,Sandbox 网络隔离代理需要由平台管理员在后台配置。请将本次安装使用的代理信息和访问范围提供给平台管理员。

需要提供:

  1. HTTP_PROXY / HTTPS_PROXY:代理地址,例如 http://proxy.example.com:8080
  2. NO_PROXY:需要直连、不经过 HTTP/HTTPS 代理的内网域名或 IP 段。
  3. allow 规则:允许 Sandbox 访问的公网域名、内网域名、IP 或网段;allow 为空时表示允许访问所有目标。

平台管理员保存配置后,新建或重启工作空间 Sandbox,新的网络隔离代理配置才会生效。

NO_PROXY 和访问 allow 规则不是同一个配置:

  • NO_PROXY 用于决定哪些地址不走 HTTP/HTTPS 代理。
  • allow 规则用于决定 Sandbox 允许访问哪些目标;为空时表示不限制访问目标。

两者需要按专属主机所在网络要求分别配置。

第六步:验证

回到 Knodo 平台确认:

  1. 宿主机状态为 在线
  2. 最近心跳时间持续更新。
  3. 组织已绑定该专属主机。
  4. 新建工作空间后,Sandbox 能正常启动。
  5. 对话、文件读写、Git 操作和流式输出正常。

可让 Agent 执行只读连通性检查:

curl -I https://knodo.vip curl -I http://<内网Git或API地址>

常见问题

安装命令下载失败

检查:

  • 当前 shell 是否已 export 代理变量。
  • curl -I https://knodo.vip 是否成功。
  • 代理服务器是否放行 https://knodo.vip 及其子域名。
  • 代理是否需要账号密码。

镜像拉取失败

优先检查:

  • 是否已设置 SANDBOX_IMAGE_PREFIX_EXTERNAL
  • 内网镜像仓库是否支持通过 docker pull 拉取 Agent Service 和 Sandbox 的新版本镜像。
  • 专属主机是否能访问内网镜像仓库。

如果必须通过代理拉取镜像,再使用 KNODO_CONFIGURE_DOCKER_PROXY=true 重新安装或手动配置 Docker daemon 代理。

宿主机一直离线

检查 Agent Service 日志:

docker logs -f knodo-agent-service-inbound

常见原因:

  • 代理服务器不支持 WebSocket、SSE 或 HTTPS CONNECT
  • https://knodo.vip 及其子域名未放行。
  • 安装 Token 过期或已重置。
  • /opt/knodo/.env 中代理配置不正确。

Sandbox 不能访问内网

检查:

  • 平台管理员是否已为当前组织保存 Sandbox 隔离代理配置。
  • NO_PROXY 是否包含内网域名或 IP 段。
  • allow 规则是否允许访问目标地址;如果 allow 为空,则表示允许访问所有目标。
  • 内网服务是否对专属主机网段放行。

交付检查清单

  • 宿主机使用反向连接(Inbound)模式。
  • 安装前已在 shell 中设置 HTTP_PROXYHTTPS_PROXYNO_PROXY
  • 如使用内网镜像仓库,已设置 SANDBOX_IMAGE_PREFIX_EXTERNAL
  • 安装命令已在同一个 shell 中执行成功。
  • /opt/knodo/.env 中已写入代理和镜像配置。
  • 平台宿主机状态为在线。
  • 平台管理员已为当前组织配置 Sandbox 隔离代理;如需限制访问范围,已配置 allow 规则。
  • Sandbox 可启动,AI 对话流式输出正常。
  • Sandbox 能访问内网 Git / API / 数据库。