通过 vlab 跳板机 + frp 隧道 + 透明代理,将仅限校内访问的 USTC LLM API
(api.llm.ustc.edu.cn)暴露到公网,让你在任何网络环境下都能使用。
访问地址:https://frp-six.com:50766/v1
⚠ 以下步骤仅需在首次配置时执行一次。
打开终端,用 curl 下载自签名证书:
curl -k -O https://frp-six.com:50766/crt成功后当前目录会出现 server.crt 文件。-k 参数跳过证书验证(因为此时证书还没安装,系统不信任它是正常的)。
也可以用浏览器直接访问 https://frp-six.com:50766/crt 下载。
sudo cp server.crt /etc/pki/ca-trust/source/anchors/sudo update-ca-trust# 用 curl 测试,不需要 -k 参数了
curl -s -o /dev/null -w "HTTP %{http_code}\n" https://frp-six.com:50766/返回 HTTP 200 即表示证书安装成功。
编辑 OpenCode 的配置文件(通常是 ~/.config/opencode/config.json 或项目根目录下的
opencode.json,具体路径请参考 OpenCode 文档),填入以下内容:
{
"base_url": "https://frp-six.com:50766/v1",
"api_key": "sk-你的USTC API密钥",
"model": "qwen-chat"
}| 字段 | 值 | 说明 |
|---|---|---|
base_url |
https://frp-six.com:50766/v1 |
代理公网地址,固定不变 |
api_key |
sk-xxx |
使用你在 llm.ustc.edu.cn 申请的原始 API key |
model |
按需选择 | 支持的模型以 USTC API 为准 |
API key 与直连校内 API 时使用的一致,无需修改。
如果想要直接让 AI 进行配置(配置的时候有能用的 API):
在~运行 OpenCode,
帮我给opencode添加一个模型提供商:ustc-vlab, 提供的模型名称全部和ustc一模一样, 但是 URL 全部都是https://frp-six.com:50766/, 后面加不加v1这类事情全部和ustc一模一样, API-key也照抄.
OpenCode就会帮助配置好。
# 非流式请求
curl -s -X POST "https://frp-six.com:50766/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的USTC API密钥" \
-d '{
"model": "qwen-chat",
"messages": [{"role": "user", "content": "你好"}],
"stream": false
}'
# 流式请求
curl -s -X POST "https://frp-six.com:50766/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的USTC API密钥" \
-d '{
"model": "qwen-chat",
"messages": [{"role": "user", "content": "你好"}],
"stream": true
}'成功时你会看到 JSON 格式的响应(非流式)或逐块输出的 SSE 事件(流式)。
配置好第四步后,正常启动 OpenCode 即可。所有 API 请求会自动通过代理转发到 USTC 内网。
curl -s "https://frp-six.com:50766/v1/models" \
-H "Authorization: Bearer sk-你的USTC API密钥"先确认第二步(安装证书 + update-ca-trust)已完成。临时应急可用 -k 参数跳过验证。
检查是否忘记安装根证书(第二步),curl -k 临时测试可以先确认代理本身是否正常。
如果已安装证书(update-ca-trust 执行过)但 OpenCode 仍报错,试试重新打开终端或重启 OpenCode。
确认你的请求体中包含 "stream": true。如果还不行,可能是 frp 隧道类型问题——
检查 frpc.ini 中 type 是否为 tcp(不要用 http,因为 HTTP 隧道会缓冲响应体)。
如果 vlab 虚拟机重启或代理进程退出,需要重新登录 vlab 启动服务:
# 在 vlab 上执行
cd ~/proxy && python3 main.py建议用 tmux 保持后台运行。
本地客户端 → frp-six.com:50766 → frp TCP 隧道 → vlab:6789 (HTTPS)
→ proxy (main.py) → api.llm.ustc.edu.cn
- 代理对请求透明转发,不修改 API key、不转换 header
- 支持流式(SSE)和非流式两种模式
- 证书 SAN 包含
frp-six.com,域名匹配 - SNI 固定为
api.llm.ustc.edu.cn,确保上游 TLS 握手正确