Ollama 共享服务操作文档(基于 ngrok 内网穿透)
一、服务端(部署 Ollama + ngrok)
1. 启动 Ollama 服务
ollama serve
确认服务监听默认端口 11434
,且状态为 “ollama is running”。
2. 安装并启动 ngrok 内网穿透
- 下载并安装 ngrok:https://ngrok.com/download
- 认证 ngrok 客户端:
ngrok authtoken <你的令牌>
- 启动 HTTP 隧道映射 Ollama 端口:
ngrok http 11434
- 记录生成的公网地址,如:
https://abc123.ngrok-free.app
二、客户端(使用 OpenWebUI 访问 Ollama)
方案 A:Docker 版本 OpenWebUI
1. 删除旧容器(如有)
docker rm -f openwebui
2. 运行 OpenWebUI Docker 容器,指定 Ollama ngrok 地址
docker run -d \
-e HF_ENDPOINT=https://hf-mirror.com \
-e OLLAMA_BASE_URL=https://abc123.ngrok-free.app \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v C:\ollama-web-ui:/app/backend/data \
--name openwebui \
--restart always \
ghcr.io/open-webui/open-webui:main
-e HF_ENDPOINT=https://hf-mirror.com \ 是open-webui的镜像网站,用于加速访问
-e OLLAMA_BASE_URL=https://abc123.ngrok-free.app \ 这里需要换成我给大家的地址,下面conda版本的同理
3. 访问 OpenWebUI
浏览器访问:
http://localhost:3000
这里的3000是openwebui使用的端口,要换成自己的
方案 B:Conda 虚拟环境版本 OpenWebUI
1. 激活虚拟环境并安装依赖
conda activate openwebui-env
pip install -r requirements.txt
(具体请参考 OpenWebUI 官方安装文档)
2. 设置环境变量并启动
Windows CMD 示例:
set HF_ENDPOINT=https://hf-mirror.com
set OLLAMA_BASE_URL=https://abc123.ngrok-free.app
python app.py
Linux / PowerShell 类似:
export HF_ENDPOINT=https://hf-mirror.com
export OLLAMA_BASE_URL=https://abc123.ngrok-free.app
python app.py
3. 浏览器访问
http://localhost:3000
三、客户端程序通过 API 调用 Ollama
假设 Ollama API 基地址为 ngrok 地址:
https://abc123.ngrok-free.app
示例:用 Python 发送请求
import requests
base_url = "服务端ngrok生成的公网地址"
# 查询可用模型示例
response = requests.get(f"{base_url}/v1/models")
print(response.json())
# 发送推理请求示例
data = {
"model": "your_model_name",
"prompt": "你好,Ollama!",
"max_tokens": 100
}
response = requests.post(f"{base_url}/v1/completions", json=data)
print(response.json())
- 根据 Ollama 文档调整请求路径和数据格式。
- 如果 OpenWebUI 已正确配置,API 也可以直接通过该地址访问。
四、注意事项
- ngrok 地址为动态地址,重启后可能变化,需更新客户端配置。
- 确保防火墙允许端口访问。
- 为避免滥用,建议在 OpenWebUI 或 Ollama 上启用认证功能。
- OpenWebUI 默认监听 8080 端口,客户端需访问映射后的宿主机端口(如 3000)。