From 41ae90f88c576e913635bd87ac0b4fd281a0a4c0 Mon Sep 17 00:00:00 2001 From: Codex Date: Mon, 7 Sep 2026 22:59:47 -0700 Subject: [PATCH] route LiteLLM through shared Caddy network --- servers/bwh-hk-cmi/litellm/README.md | 8 +++++--- servers/bwh-hk-cmi/litellm/compose.yaml | 12 ++++++++++-- servers/bwh-hk-cmi/web/Caddyfile | 2 +- servers/bwh-hk-cmi/web/README.md | 1 + 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/servers/bwh-hk-cmi/litellm/README.md b/servers/bwh-hk-cmi/litellm/README.md index 5dce8cc..62ecd17 100644 --- a/servers/bwh-hk-cmi/litellm/README.md +++ b/servers/bwh-hk-cmi/litellm/README.md @@ -1,8 +1,10 @@ # Hong Kong CMI LiteLLM Vertex AI Relay -- 仅通过 Hong Kong CMI 节点的 Tailscale IPv4 地址监听;`LISTEN_IP` 不要填写公网地址或 `0.0.0.0`。 -- ADC、LiteLLM key 仅存放于 Arcane `.env`,不得提交 Git。 -- 默认监听端口为 `1049`;需要修改时设置 `LITELLM_PORT`。 +- 公网 OpenAI-compatible 入口为 `https://api.opfo.xyz/v1`,由 Caddy 终止 TLS 后通过外部 Docker 网络 `hk-web` 反向代理到 `litellm-api:1049`。 +- LiteLLM 不使用 host network,也不向宿主机发布端口;容器内监听 `0.0.0.0:1049` 仅供 `hk-web` 上的 Caddy 访问。 +- 默认监听端口为 `1049`;需要修改时必须同时更新 Arcane 的 `LITELLM_PORT` 和 Caddy 的上游端口。 +- 客户端使用 `Authorization: Bearer `;认证由 LiteLLM 执行,Caddy 仅负责 TLS 和反向代理并保留该请求头。 +- ADC 与 `LITELLM_MASTER_KEY` 仅存放于 Arcane `.env`,不得写入 Git、文档或日志。 - 对外模型别名包括 `gemini-3.6-flash`、`gemini-3.5-flash-lite`、 `google/gemini-embedding-2` 和 `google/gemini-3.8-flash`;后两者仍通过 Vertex AI ADC 路由。 diff --git a/servers/bwh-hk-cmi/litellm/compose.yaml b/servers/bwh-hk-cmi/litellm/compose.yaml index 1962089..454d4e3 100644 --- a/servers/bwh-hk-cmi/litellm/compose.yaml +++ b/servers/bwh-hk-cmi/litellm/compose.yaml @@ -19,7 +19,10 @@ services: depends_on: adc-init: condition: service_completed_successfully - network_mode: host + networks: + hk-web: + aliases: + - litellm-api environment: GOOGLE_APPLICATION_CREDENTIALS: /credentials/application_default_credentials.json VERTEXAI_PROJECT: ${VERTEXAI_PROJECT} @@ -28,7 +31,7 @@ services: volumes: - ./config.yaml:/app/config.yaml:ro - google-adc:/credentials:ro - command: ["--config", "/app/config.yaml", "--host", "${LISTEN_IP:-127.0.0.1}", "--port", "${LITELLM_PORT:-1049}"] + command: ["--config", "/app/config.yaml", "--host", "0.0.0.0", "--port", "${LITELLM_PORT:-1049}"] logging: driver: json-file options: @@ -37,3 +40,8 @@ services: volumes: google-adc: + +networks: + hk-web: + external: true + name: hk-web diff --git a/servers/bwh-hk-cmi/web/Caddyfile b/servers/bwh-hk-cmi/web/Caddyfile index adce292..d66b262 100644 --- a/servers/bwh-hk-cmi/web/Caddyfile +++ b/servers/bwh-hk-cmi/web/Caddyfile @@ -22,7 +22,7 @@ share.kais.cloud { } api.opfo.xyz { - reverse_proxy 100.100.130.66:1049 + reverse_proxy litellm-api:1049 } gitea.kais.cloud { diff --git a/servers/bwh-hk-cmi/web/README.md b/servers/bwh-hk-cmi/web/README.md index d567189..a9dc577 100644 --- a/servers/bwh-hk-cmi/web/README.md +++ b/servers/bwh-hk-cmi/web/README.md @@ -5,5 +5,6 @@ - Secret 仅存 Arcane `.env`:`WEBDAV_PASSWORD`。 - HAProxy 使用 SNI passthrough 接管 TCP 443:`cmi-tls-a7f29c.opfo.xyz` 转发至 AnyTLS,`conn.opfo.xyz` 转发至 Trojan,其余连接转发至 Caddy。 - Caddy HTTPS 只在 Docker 网络内由 HAProxy 转发,宿主机另发布 HTTP 80;HTTP/3 已关闭,将 UDP 443 留给 Hysteria2。 +- `api.opfo.xyz` 由 Caddy 通过共享外部网络 `hk-web` 反向代理到 `litellm-api:1049`;LiteLLM 自身使用 `LITELLM_MASTER_KEY` 校验 Bearer token,Caddy 不重复保存或校验该密钥。 - `gitea.kais.cloud` 由 Caddy 转发到共享外部网络 `hk-web` 上的 `gitea-hk:3000`;Gitea 本体属于独立 Git Sync 项目。 - `metacubexd` 与 `metube` 不迁移。