Ollama Tunnel - Entity Enricher 文档

Ollama Tunnel

只需一条命令即可将本机 Ollama 接入 Entity Enricher。使用你已有的 model,将特定输入保留在本机,并可即时撤销访问权限——全部通过单一出站 HTTPS 连接完成。

            Production (Hetzner)          Your Laptop / your server
        ┌─────────────────────────┐         ┌────────────────────┐
        │  Org enrichment         │         │  ee-tunnel CLI     │
        │     │                   │         │     │              │
        │     ▼                   │         │     ▼              │
        │  Ollama provider URL:   │         │  Ollama :11434     │
        │  http://ollama.<org>    │         │  ┌──────────────┐  │
        │       .tunnel/v1/chat   │         │  │ qwen3:36b    │  │
        │     │                   │         │  │ llama3:70b   │  │
        │     ▼                   │         │  │ ...          │  │
        │  WebSocket bridge       │◀───────▶│  └──────────────┘  │
        └─────────────────────────┘         └────────────────────┘
                                  one outbound :443/wss connection

合成主机名 ollama.<org-slug>.tunnel 从不通过 DNS 解析。Entity Enricher 进程中的自定义传输会拦截对 *.tunnel 的请求,并通过匹配的活动 WebSocket 进行路由。

为何使用隧道?

使用您已有的模型

针对已在您笔记本电脑上拉取的开放权重模型(Llama 3、Qwen、DeepSeek、Mistral、……)运行富化,无需在服务器上重新下载。

将某些输入保留在您的设备上

对于敏感的 prompt,可将特定的 enrichment 路由到你自己的 GPU 上。平台仍会记录成本、token 和元数据——只有推理本身保留在本地。

30 秒内试用新模型

在你的笔记本电脑上用 `ollama pull` 拉取一个模型,点击“发现模型”,它就会带着真实的上下文长度和能力出现在 Entity Enricher 的选择器中。

分流突发任务

当托管提供方对你进行限流时,在该批次的剩余部分故障转移到通过隧道连接的本地模型。

快速开始

在笔记本电脑上运行两条命令,在浏览器中点击一次。整个流程大约一分钟。

  1. 1

    在 UI 中创建隧道

    打开 API Keys → Ollama Tunnels,然后点击 New Ollama Tunnel。输入一个标签,以便日后识别此设备(例如 “Anthony's MacBook”)。

    [截图占位符 — 高亮显示“新建 Ollama tunnel”按钮的 Tunnels 选项卡]
  2. 2

    在您的笔记本电脑上安装 CLI

    在终端中粘贴此内容。脚本会在安装前验证 cosign 签名。

    curl -fsSL https://entityenricher.ai/install.sh | sh

    安装程序会打印即将执行的操作(下载 URL、签名、安装路径),并暂停 5 秒,让你有机会按 Ctrl+C 中止。源代码位于 TOT-Concept/ee-tunnel(MIT 许可)。Windows 用户请改用 install.ps1

  3. 3

    通过浏览器配对

    运行 ee-tunnel pair。浏览器会打开一个标签页 /tunnel/connect,并显示一个 6 位字符的代码。确认设备标签后点击 Connect

    ee-tunnel pair --server https://entityenricher.ai
    
    Open this URL in your browser to confirm pairing:
       https://entityenricher.ai/tunnel/connect?code=9KV-DU6
    
      Code: 9KV-DU6
    
    Waiting for confirmation...
    [截图占位符 — 带设备代码的 /tunnel/connect 确认页面]

    您无需复制粘贴 token。浏览器只会看到 tunnel 元数据;CLI 通过自己的轮询通道接收其凭据。

  4. 4

    连接并发现模型

    运行 ee-tunnel。隧道标签页中的状态标记会在几秒内切换为 Connected。然后在 Models & Pricing 中的 Ollama 提供商上点击 Discover Models,即可自动导入所有本地安装的聊天模型。

    [视频占位符 — Discover Models 将 4 个本地 Ollama 模型拉取到平台中]

配对的工作原理

配对采用 OAuth 式设备码流程(RFC 8628 形式)。用户在浏览器中输入短码,而非复制粘贴令牌。浏览器只能看到隧道元数据;CLI 则通过自身的轮询通道直接接收其刷新令牌——一次性兑换。

 laptop                  entity-enricher                  browser
   │                          │                              │
   │── ee-tunnel pair ──────▶ │                              │
   │   --server URL           │                              │
   │                          │                              │
   │  POST /api/tunnel/       │                              │
   │       device-code        │                              │
   │ ───────────────────────▶ │                              │
   │ ◀── { device_code,       │                              │
   │     user_code='9KV-DU6', │                              │
   │     verification_uri }   │                              │
   │                          │                              │
   │  prints URL, opens       │                              │
   │  browser at /tunnel/     │                              │
   │  connect?code=… ──────────────────────────────────────▶│
   │                          │                              │
   │                          │  POST /api/tunnel/confirm/   │
   │                          │       {user_code}            │
   │                          │  body: { label }             │
   │                          │  Authorization: Bearer       │
   │                          │   <user JWT, role=owner>     │
   │                          │ ◀──────────────────────────── │
   │                          │  • create tunnel_credentials │
   │                          │  • mark device_code complete │
   │                          │    with refresh_token        │
   │                          │ ────────────────────────────▶│
   │                          │  200 { tunnel metadata }     │
   │                          │                              │
   │  POST /api/tunnel/poll   │                              │
   │ ───────────────────────▶ │                              │
   │ ◀── { status:'ok',       │                              │
   │     refresh_token,       │                              │
   │     server_url,          │                              │
   │     tunnel_id }          │                              │
   │                          │                              │
   │  persist token mode 0600 │                              │
   │  ✓ Paired                │                              │

请求如何流经隧道

连接之后,对平台的其余部分而言,通过隧道接入的 Ollama 就只是又一个 LLM 提供商。多专业领域、融合、批量——一切都照常运作。

  enrichment job
       │
       ▼
  agent_factory  →  Ollama provider, base_url=http://ollama.acme.tunnel
       │
       ▼
  custom httpx transport  ← intercepts *.tunnel hosts
       │
       ▼
  TunnelSession (one per laptop)
       │ frames request: { id, method, path, headers, body_b64 }
       ▼
  WebSocket  ──────────────────────▶  ee-tunnel CLI
                                          │
                                          ▼
                                     localhost:11434
                                     (your local Ollama)
                                          │
                          response_start, response_chunk, ...
       ◀──────────────────────────────────┘
       │
       ▼
  pydantic_ai consumes streaming body  →  enrichment record

多路复用

多个进行中的丰富任务共用一个 tunnel WebSocket。每个请求都会获得一个 UUID;两端按 id 对帧进行解复用,因此并发调用(例如多专业领域)能自然工作。

流式响应(Ollama 的 stream=true)以一系列 response_chunk 帧的形式传输,因此即使通过 tunnel,逐 token 的 UI 更新也能保持增量更新。

生命周期

01

创建

组织所有者点击“新建 Ollama 隧道”,输入标签并确认。平台随即分配凭证。

02

配对

在您的笔记本电脑上,运行一行式安装程序并执行 `ee-tunnel pair`。浏览器会打开一个标签页——请使用同一个 Entity Enricher 账户进行确认。

03

连接

运行 `ee-tunnel`。CLI 会打开一个出站 HTTPS WebSocket 连接。新的提供商会在几秒内出现在您的模型列表中。

04

使用

点击“Discover Models”——本地 Ollama 中的每个 model 都会以真实的上下文长度和能力自动导入。像往常一样进行 enrichment。

05

撤销

在界面中点击一下即可断开 WebSocket 并立即使凭据失效。

安全

该 tunnel 的设计旨在尽量减少攻击面。该功能的早期草案在一个新端口上使用了公共 SSH 服务器;我们用进程内的 WebSocket 多路复用器取代了它,从而彻底消除了 SSH 攻击面。

无新的公共端口

所有流量都通过现有的 :443 入口——与 Web 应用相同的 TLS 端点。无需 SSH 服务器,也不暴露 Ollama 端口。

仅出站

CLI 会发起 WebSocket 连接。你的笔记本电脑从不接受入站连接——你的家庭网络防火墙无需更改。

组织范围

隧道绑定到单个组织。平台上的其他租户无法看到、选择或调用它。系统管理员按设计拥有跨组织的可见性。

可即时撤销

撤销会从数据库中移除凭据。下一个请求将返回 401 失败。活动的 WebSocket 将在约 1 秒内被移除。

无需复制粘贴密钥

浏览器 OAuth 流程端到端地处理凭据。浏览器永远不会看到你的刷新令牌;CLI 通过其轮询通道直接接收它。

配额与帧数上限

默认每个组织 5 条活动隧道;入站 WebSocket 帧上限 16 MB;超出配额时返回结构化 402 错误。

SSRF 防护。tunnel 功能还弥补了一处已有的缺口:Ollama provider 上的 specific_endpoint 字段现在会依据允许列表正则进行校验,因此私有 IP、回环地址以及 Docker compose 服务名都无法再用作 provider URL。

CLI 参考

命令它的功能
ee-tunnel pair --server URL浏览器 OAuth 配对。自动打开验证 URL。
ee-tunnel pair --server URL <token>使用从界面复制的刷新令牌手动配对(无界面环境的备用方案)。
ee-tunnel连接并提供服务。在瞬时断开时以指数退避(1 秒 → 30 秒)重新连接。
ee-tunnel status显示配对状态、服务器 URL、已配置的 Ollama URL 和标签。
ee-tunnel disconnect清除本地凭据。不会在服务器端撤销;如需撤销请使用 UI。
ee-tunnel version打印版本。

自定义 Ollama URL

如果您的 Ollama 监听在不同的端口上,请设置 EE_TUNNEL_OLLAMA_URL,或在配对时传入 --ollama URL

文件的存放位置

macOS · ~/Library/Application Support/ee-tunnel/
Linux · ~/.config/ee-tunnel/
Windows · %APPDATA%\ee-tunnel\

限制与时间

每个组织的活跃 tunnel5(默认)
刷新令牌 TTL365 天
访问令牌 TTL15 分钟
配对 TTL10 分钟
入站 WebSocket 帧上限16 MB
出站分块大小 (CLI)16 KB
心跳间隔30 秒

常见问题

我的 Ollama 是否暴露在互联网上?

不会。CLI 发起的是对外的 WebSocket 连接。您的笔记本电脑从不接受入站连接,且您的 Ollama 端口始终绑定在 localhost 上。

当我的笔记本电脑进入睡眠状态时会发生什么?

CLI 会在断开连接时正常退出。唤醒笔记本电脑并重新运行 ee-tunnel 即可使用现有凭据重新连接。在隧道断开期间运行的丰富化任务会以一个明确的 ConnectError 失败。

其他组织能使用我的隧道吗?

不能。每个 tunnel 都绑定到单个 organization。平台上的其他租户无法查看、选择或调用它。按设计,系统管理员可以查看所有 tunnel(与全局 API 密钥相同)。

它能在企业防火墙后使用吗?

几乎总是如此——只需要出站 :443 端口。与 Web 应用使用的路径相同。

如何轮换凭据?

在 Tunnels 选项卡上点击“轮换令牌”。旧令牌会立即失效;弹窗会显示一条用于你笔记本电脑的全新配对命令。

不使用 Ollama 也能用吗?

是——CLI 会转发任意 HTTP。将 EE_TUNNEL_OLLAMA_URL 设置为任意本地 OpenAI 兼容端点。任何支持 Ollama 的 /v1/chat/completions 或 /api/tags 的服务都可以使用。

开源

CLI 和安装程序采用 MIT 许可,托管在公开仓库中,任何人都可以审查在自己机器上运行的内容。

来源: github.com/TOT-Concept/ee-tunnel

发行版: github.com/TOT-Concept/ee-tunnel/releases — 每个二进制文件在发布前都用 cosign 签名。

审查安装程序: curl -fsSL https://entityenricher.ai/install.sh | less