在 VPS 上跑 Ollama,搭一个私有大模型 API
为什么要自己跑模型
- 隐私:代码和数据不发给 OpenAI / Anthropic,不用担心数据泄露
- 费用:小模型几乎零边际成本,已有 VPS 白嫖算力
- 无限制:没有 rate limit,不担心账号被封
- 可控:选自己需要的模型,可以本地微调
但要说清楚:小模型(1B–7B 参数)能力远不如 GPT-4 / Claude 3.7。适合代码补全、文档摘要、简单问答等特定任务,不适合复杂推理和长文档写作。
→ 需要强模型能力?见《如何稳定访问 ChatGPT 和 Claude》
关键词(可以展开学习): 参数量(B = billion)、量化(quantization / GGUF)、推理速度(tokens/s)、上下文窗口(context window)
选什么机器
CPU Only(普通 VPS,2–4 GB RAM)
能跑,但慢。适合偶发性使用或测试:
| 模型 | 内存需求 | CPU 推理速度 | 适合场景 |
|---|---|---|---|
| qwen2.5:0.5b | ~800 MB | 20–40 tok/s | 测试连通性 |
| qwen2.5:1.5b | ~1.2 GB | 10–20 tok/s | 简单问答 |
| qwen2.5:3b | ~2 GB | 5–10 tok/s | 日常使用 |
| llama3.2:3b | ~2 GB | 5–10 tok/s | 英文任务 |
Vultr Tokyo 2 GB VPS 跑 qwen2.5:1.5b 约 8–12 tok/s,回答一个问题等几秒,勉强可用。
本地电脑(最推荐日常使用)
如果你有 Apple Silicon Mac 或独立显卡的 Windows,本地跑比便宜 VPS 快 5–10 倍:
| 设备 | 跑 qwen2.5:7b 速度 |
|---|---|
| M2 MacBook Air(16 GB) | 40–60 tok/s |
| RTX 4060(8 GB) | 60–80 tok/s |
| M3 Pro(36 GB) | 80+ tok/s |
GPU VPS(按需使用)
Lambda Labs / RunPod / Vast.ai 提供按小时租 GPU 的服务。跑 7B 模型约 $0.3–0.6/小时,做批量任务或测试大模型时合算,日常不划算。
安装 Ollama
Linux(VPS 或 Ubuntu 本地)
curl -fsSL https://ollama.com/install.sh | sh
验证:
ollama --version
# ollama version is 0.x.x
Mac
brew install ollama
ollama serve # 启动服务
或者直接下载 .dmg:ollama.com
Windows
下载安装包,安装后会在后台自动启动服务。
拉取并运行模型
# 先拉取模型文件(约 1–5 GB,取决于模型大小)
ollama pull qwen2.5:1.5b
# 启动交互式对话
ollama run qwen2.5:1.5b
对话示例:
>>> 解释一下 Linux 的文件权限,用新手能理解的方式
Linux 用三个字母组来表示权限:rwx(读/写/执行)...
>>> /bye
退出输入 /bye 或按 Ctrl+D。
其他值得尝试的模型:
ollama pull qwen2.5:7b # 更强,需要 4–5 GB 内存
ollama pull qwen2.5-coder:7b # 代码专项优化
ollama pull deepseek-r1:7b # 推理型,适合逻辑问题
ollama pull nomic-embed-text # 文本向量化,用于 RAG
完整模型列表:ollama.com/library
通过 API 调用
Ollama 在 localhost:11434 提供 HTTP API,不需要额外配置:
# 基础生成接口
curl http://localhost:11434/api/generate \
-d '{"model":"qwen2.5:1.5b","prompt":"什么是 Docker?","stream":false}'
# OpenAI 兼容接口(直接替换 OpenAI SDK 的 base_url)
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5:1.5b",
"messages": [{"role": "user", "content": "什么是 Docker?"}]
}'
Python 调用(直接复用 OpenAI 库):
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama", # 随便填,不校验
)
response = client.chat.completions.create(
model="qwen2.5:1.5b",
messages=[{"role": "user", "content": "用 Python 写一个冒泡排序"}],
)
print(response.choices[0].message.content)
从外网访问 Ollama API
默认 Ollama 只监听 localhost,有两种方式安全暴露:
方法一:Cloudflare Tunnel(推荐,不开防火墙端口)
在 Cloudflare Zero Trust 控制台配置一个 Tunnel,把 localhost:11434 映射到 ollama.yourdomain.com,再加 Cloudflare Access 限制只有你能访问。
→ 详细配置见《Cloudflare Tunnel:免费内网穿透》
方法二:Tailscale(私有网络内访问)
在 VPS 上装 Tailscale 后,所有 Tailscale 设备都能通过 VPS 的 100.x.x.x 地址访问 Ollama,不经过公网。
# 把 Ollama 监听地址改为 Tailscale IP
sudo systemctl edit ollama
加入:
[Service]
Environment="OLLAMA_HOST=100.x.x.x" # 你的 Tailscale IP
→ 见《Tailscale:五分钟组建私有局域网》
方法三:直接开放(简单但风险高)
sudo systemctl edit ollama
加入:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
sudo systemctl daemon-reload && sudo systemctl restart ollama
然后开放 11434 端口:sudo ufw allow 11434
⚠️ 这样任何人都能调用你的 API,会白嫖你的 VPS 算力。至少加一个 Nginx + Basic Auth 做保护。
接 GUI 客户端
不想每次都用命令行,接个图形界面:
Open WebUI(类 ChatGPT 界面)
docker run -d \
--network=host \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
访问 http://localhost:3000,支持多模型切换、对话历史、文件上传。
ChatBox / Cherry Studio
在软件设置里:
- API Provider 选 Ollama 或 OpenAI-compatible
- Base URL 填
http://localhost:11434 - 模型名填
qwen2.5:1.5b
管理模型
ollama list # 查看已下载的模型
ollama ps # 查看正在加载的模型
ollama rm qwen2.5:1.5b # 删除模型(释放磁盘)
df -h ~/.ollama # 查看模型占用磁盘
模型文件默认存在 ~/.ollama/models,每个模型 1–10 GB,VPS 磁盘注意别用满。
和 API 付费服务对比
| 自托管 Ollama(小模型) | Claude / GPT API | |
|---|---|---|
| 成本 | VPS 已有则近乎免费 | 按 token 计费 |
| 能力 | 适合简单任务 | 适合复杂推理 |
| 隐私 | 完全本地 | 数据发给第三方 |
| 速度(CPU VPS) | 慢,5–15 tok/s | 快,50+ tok/s |
| 稳定性 | 你的机器 | 云服务 SLA |
实际用法:Ollama 处理批量简单任务(数据提取、格式转换、代码补全),Claude / GPT 处理需要高质量输出的任务(写作、复杂分析)。