跳转到内容
主页 / 平台 / 代理
Hoody 平台

每个服务都是一个 URL。代理就是实现方式。

一个容器为每项 Hoody 套件服务提供独立的 HTTPS URL,还有 http-PORT 格式供自定义绑定。端口、鉴权、TLS 和真实客户端 IP 均在 URL 层解析。

代理运行在裸金属服务器上。Hoody 仅接收管理 API 调用——容器流量不离开你的服务器。

2^192 密钥空间亚 1ms 开销套接字层真实 IP
https://PROJECT_ID-CONTAINER_ID-service-N.SERVER.containers.hoody.com
项目 ID
24 位十六进制项目标识符
容器 ID
24 位十六进制容器标识符
服务
套件服务 slug(terminal、display、files……)
实例
支持多实例的服务编号:1、2、3……
服务器名称
裸金属服务器标识

*.containers.hoody.com — wildcard TLS · no Certificate Transparency log exposure

主页 / 平台 / 代理 / 语法
URL 语法

统一语法,多种模式

每项套件服务都通过同一代理解析,但 URL slug 揭示其服务类型。语法统一,每项服务形态各异。

模式
https://PROJECT_ID-CONTAINER_ID-slug.SERVER.containers.hoody.com
服务URL slug备注
Workspacesworkspace-N其他服务 URL 的组合层
Terminalterminal-N每实例独立 shell;与 display-N 映射
Displaydisplay-N每实例 GUI / X11 桌面
Browserbrowser-N远程 Chrome 实例
Codecode-N每索引一个 VS Code 实例
Filesfiles单例——无实例编号
SQLitesqlite-N每数据库服务一个 slug
Execexec-N脚本即 API
Agentagent-N每智能体 LLM 实例
cURLcurl-N出站 HTTP 代理
Daemonhoody-daemon-N进程管理器
Cron—(当前通过 cURL)占位服务;调度通过 cURL 实现
Notificationsn-N · notification-server-N浏览器桥接 + API
Pipe—(通过其他服务)占位服务;流式传输分散在 Files/Terminal/Exec 中

项目 24 位十六进制 × 容器 24 位十六进制 = 2^192 组合。暴力枚举不可行。

主页 / 平台 / 代理 / 端口
端口 → URL

绑定任意端口,自动获得 URL。

http-PORT 前缀将代理路由到容器内部端口,无需 nginx server 块,无需 ingress YAML。

容器内部

# listening sockets

$ ss -ltnp

 

LISTEN0.0.0.0:4000node server.js(react-dev)
LISTEN0.0.0.0:5173vite(admin-ui)
LISTEN0.0.0.0:7070python api.py(payments)
公开 URL

https://PROJECT_ID-CONTAINER_ID-http-4000.SERVER.containers.hoody.com

https://PROJECT_ID-CONTAINER_ID-http-5173.SERVER.containers.hoody.com

https://PROJECT_ID-CONTAINER_ID-http-7070.SERVER.containers.hoody.com

Hoody-kit 端口由平台自身服务保留,其余任意。应用侧,绑定任意端口,通过 http-PORT 暴露。

应用必须绑定到 0.0.0.0 而非 localhost——套接字需要可从代理容器访问。

代理支持 HTTP/1.1、HTTP/2、HTTP/3 和 WebSocket 端到端传输。任意 UDP 流量不在路由范围内——如需原始 UDP,请使用专用 IPv4。

主页 / 平台 / 代理 / 鉴权
网关鉴权

鉴权是 JSON 策略,而非应用中间件。

代理在请求到达容器前验证 JWT 声明、密码哈希、IP CIDR 范围和 Bearer Token。应用本身保持简洁。

PATCH /api/v1/containers/ID/proxy-permissions
{
  "enable_proxy": true,
  "default": "deny",
  "groups": {
    "dashboard": {
      "type": "jwt",
      "algorithm": "HS256",
      "source": "header",
      "key": "Authorization",
      "secret": "<hmac-secret>",
      "claims": { "role": ["admin", "viewer"] }
    },
    "office-only": {
      "type": "ip",
      "cidrs": ["203.0.113.0/24"]
    }
  },
  "permissions": {
    "dashboard": { "http": [4000, 5173] },
    "office-only": { "ssh": true, "terminal": true }
  }
}
客户端代理(策略检查)容器(普通 HTTP)

JWT

HS256 · RS256 · ES256 · header/cookie/query · 声明验证

密码

HTTP Basic · SHA-256 + 盐值 · 可嵌入 URL

IP

IPv4 CIDR 匹配 · 套接字层真实客户端 IP

Bearer Token

每组多个 Token · 适合 API 使用

容器级权限替换项目级权限——不合并。如需依赖继承,请明确设置两个作用域。

主页 / 平台 / 代理 / 别名
别名与域名

在加密 URL 之上添加易记 URL

一次 API 调用将加密 URL 转换为 api.mycompany.com。Let's Encrypt 在 30–60 秒内完成配置,每 90 天自动续签。

容器创建时自动生成

https://67e89abc…-890abcdef…-http-4000.node-us.containers.hoody.com

POST /api/v1/proxy-aliases
CNAME 到服务器 · Let's Encrypt 自动配置

https://api.mycompany.com

路径路由
target_path + allow_path_override
expires_at
限时访问
多服务别名
一个别名 → 多个程序
自定义域名
CNAME · Let's Encrypt 自动配置

别名命名规则:3–61 个字符,小写字母数字加连字符,首尾必须是字母或数字。自动生成的别名为 48 位十六进制。

主页 / 平台 / 代理 / 对比
自托管 vs Hoody 代理

否则你需要自行拼凑的东西

代理取代了大多数团队从头搭建的技术栈:反向代理 + 证书管理器 + VPN 或隧道 + 按应用鉴权 + 审计日志。自托管方案无法满足的核心假设——URL 即路由、URL 即鉴权范围、URL 即可嵌入——正是代理原生提供的能力。

场景Hoody 代理自托管等效方案
通配符 HTTPS原生支持原生支持certbot + 续签 cron + 证书轮换
路由到内部端口原生支持原生支持每个服务一个 nginx server 块
真实客户端 IP原生支持原生支持每应用解析 X-Forwarded-For
JWT · Basic · IP · Token 认证原生支持原生支持每应用中间件 + 会话库
自定义域名 + TLS原生支持原生支持Cloudflare / DNS-01 / nginx 重载
集中请求审计原生支持原生支持nginx 日志 + 日志采集器 + 索引
可嵌入 iframe 的 URL原生支持原生支持每应用手动配置 CORS/CSP/TLS
运行在自有硬件上原生支持原生支持无论如何都需要自己运行

如果已在 Kubernetes 上使用 ingress controller、通过 Cloudflare Tunnels 接入 Okta SSO,或使用 Tailscale 进行 L3 私有访问,这些工具在其特定场景下仍然更优。当首要抽象是「URL 可寻址的容器服务」时,代理才真正发挥价值。

主页 / 平台 / 代理 / 构建
能解锁什么

URL 优先模型让六种工作流变得轻而易举

来源于团队实际使用 Hoody 代理的场景模式。

无需反向代理即可发布 API

绑定到 0.0.0.0:4000,即可获得 http-4000.SERVER.containers.hoody.com。跳过 nginx、证书和 DNS 的繁琐配置。

自定义域名 + 自动 TLS

POST /api/v1/proxy-aliases,设置 CNAME,首次请求在 30–60 秒内完成 Let's Encrypt 配置。

通过别名切换实现蓝绿部署

将 api.company.com 指向容器 B,测试,再将别名切回。无需重载配置,无停机。

为 AI 智能体分配可驱动的容器

智能体获得 JWT,代理逐请求验证,智能体通过 HTTPS 写文件、运行命令、查询 SQLite。

多租户 SaaS 子域名

每个租户一个容器;别名为 TENANT.yourapp.com。租户隔离在 URL 层强制执行。

即时撤销

对 Control Plane 发起一次 DELETE 调用,URL 在一秒内失效,不存在缓存污染问题。

主页 / 平台 / 代理 / 开始
开始

一次 API 调用,获得第一个 URL。

创建项目,创建容器,每项服务即刻上线。无需提前搭建基础设施。

代理指南

另见——/platform/control-plane(代理别名、权限与日志 API)。