如果你想在云服务器上拥有一个"不花钱、不审查、数据不出自己机器"的大模型,Ollama 是目前最简单的答案。这篇从安装、模型管理、API 对接到性能调优完整讲一遍,全部命令可以直接抄。选型逻辑见云服务器跑 AI 应用完全指南。
一、为什么是 Ollama
市面上的本地大模型方案不少,Ollama 胜在三点:
- 安装就是一条命令,不用管 CUDA、不用编译,模型自动下载量化版
- OpenAI 兼容 API,原有接 GPT 的代码改个 base_url 就能用
- 模型市场丰富,
ollama pull qwen2.5:7b一条命令拉到量化好的模型
它的定位是"本地大模型的 Docker"——把模型打包、拉取、运行、卸载的体验做到和容器一样简单。代价是灵活性不如裸 llama.cpp/vLLM,但对 90% 的用户来说绰绰有余。
适用边界:7B–70B 的对话/嵌入模型是它的主场;如果你要跑 SDXL 绘图,去看Stable Diffusion 绘图服务;要搭 RAG 知识库, Ollama 只负责其中的"模型层",见RAG 知识库搭建。
二、安装:三种方式按需选
方式 1:官方脚本(推荐,最省事)
curl -fsSL https://ollama.com/install.sh | sh
systemctl enable --now ollama脚本会自动装好二进制、注册 systemd 服务,监听 127.0.0.1:11434。
方式 2:Docker(想隔离运行环境时)
docker run -d --name ollama \
--restart unless-stopped \
-v /data/ollama:/root/.ollama \
-p 127.0.0.1:11434:11434 \
ollama/ollama注意 -p 127.0.0.1:11434 的写法:只绑定本地回环,公网直接访问不到,比绑定 0.0.0.0 安全得多。要对外服务必须走反代(见第五节)。Docker 部署的更多细节见Docker 安装与基础命令。
方式 3:手动装二进制(内网/离线机)
# 下载 amd64 版本,按实际架构选
curl -LO https://ollama.com/download/ollama-linux-amd64.tgz
tar -xzf ollama-linux-amd64.tgz -C /usr/local
ollama --version装完第一件事:把模型目录挪到数据盘
Ollama 默认把模型存在 /usr/share/ollama/.ollama/models,模型动辄几个 GB,很快会把系统盘塞满。修改服务配置:
mkdir -p /etc/systemd/system/ollama.service.d
cat > /etc/systemd/system/ollama.service.d/override.conf <<'EOF'
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"
EOF
systemctl daemon-reload && systemctl restart ollama数据盘挂载方案见Linux 磁盘挂载与扩容实战。这一步放在拉任何模型之前做,不然后面搬家很麻烦。
三、模型管理:常用命令速查
# 拉模型(标签省略时默认 latest)
ollama pull qwen2.5:7b-instruct-q4_K_M
# 跑一个临时对话(退出用 /bye 或 Ctrl+D)
ollama run qwen2.5:7b-instruct-q4_K_M
# 列出已下载模型
ollama list
# 看某个模型的详细信息(层数、参数量、量化)
ollama show qwen2.5:7b-instruct-q4_K_M --modelfile
# 复制/改名(方便做不同配置的变体)
ollama cp qwen2.5:7b-instruct-q4_K_M my-assistant
# 删除(注意拼写,rm 没有二次确认)
ollama rm qwen2.5:7b-instruct-q4_K_M国内拉模型慢的解法
Ollama 的模型源在海外,4G 的模型能拉半小时。三个提速手段:
- HF 镜像中转:先在国内镜像站下载 GGUF,再用 Modelfile 导入(见下节)
- 换 ModelScope 源:ModelScope 有 Ollama 兼容的模型库,配
OLLAMA_MIRROR环境变量可用(部分模型覆盖不全) - 一锤子买卖:找台能顺畅访问的机器拉好,把
/data/ollama/models整个目录 rsync 过来,模型文件跨机通用
量化标签怎么读
qwen2.5:7b-instruct-q4_K_M 里,冒号后是标签:7b 参数量、instruct 指令微调版(对话必须用这个,base 版是续写模型)、q4_K_M 量化级别。对话场景无脑选 instruct + q4_K_M,体积和质量的最优平衡,原理见AI 应用选型指南的量化表。
四、Modelfile:定制你的模型
Ollama 的杀手级特性:用几行文本定义一个"模型变体",不用重新下载权重。
# Modelfile
FROM qwen2.5:7b-instruct-q4_K_M
# 系统提示词:定义助手的角色和语气
SYSTEM """你是一名运维工程师助手,回答简洁、直接给命令,不废话。"""
# 采样参数
PARAMETER temperature 0.7
PARAMETER num_ctx 8192 # 上下文窗口,越大越吃内存
PARAMETER num_predict 512 # 单次最大生成 token 数
PARAMETER repeat_penalty 1.1 # 抑制复读# 创建变体
ollama create ops-assistant -f Modelfile
ollama run ops-assistant从本地 GGUF 导入(下载了 llama.cpp 格式的模型文件时):
FROM /data/models/qwen2.5-7b-instruct-q4_k_m.gguf
SYSTEM "你是一名中文助手"ollama create qwen-local -f Modelfile.gguf这套机制让你可以给同一个底座模型配无数个"人格":写代码的、查日志的、润色文案的各来一个,互不干扰,ollama list 一目了然。
五、API 对接:OpenAI 兼容是最大红利
Ollama 起服务后自带两套 API:
原生 API(/api/generate、/api/chat):
curl http://127.0.0.1:11434/api/chat -d '{
"model": "qwen2.5:7b-instruct-q4_K_M",
"messages": [{"role": "user", "content": "一句话解释什么是 NAT"}],
"stream": false
}'OpenAI 兼容 API(/v1/chat/completions)——这个才是重点:
curl http://127.0.0.1:11434/v1/chat/completions -d '{
"model": "qwen2.5:7b-instruct-q4_K_M",
"messages": [{"role": "user", "content": "你好"}]
}'Python 侧只需改两行,原有代码全部复用:
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:11434/v1", # 指向 Ollama
api_key="ollama" # 占位,Ollama 不校验
)
resp = client.chat.completions.create(
model="qwen2.5:7b-instruct-q4_K_M",
messages=[{"role": "user", "content": "帮我看这段 Nginx 配置有什么问题"}]
)
print(resp.choices[0].message.content)接对话界面(LobeChat 等)也是同理,把 base_url 填上就行,完整玩法见LobeChat 自托管。
六、对外服务:反代 + 鉴权(必做)
Ollama 默认没有任何鉴权,直接把 11434 映射到公网,等于把 GPU/CPU 和带宽白送给扫号脚本——公开暴露的 Ollama 实例被拖去跑任务是真实事故。安全红线详见AI 应用的安全与成本控制。
标准做法:Ollama 只听 127.0.0.1,外面套 Nginx 反代并加 Basic Auth:
server {
listen 443 ssl;
server_name ai.yourdomain.com;
ssl_certificate /etc/nginx/ssl/ai.yourdomain.com.pem;
ssl_certificate_key /etc/nginx/ssl/ai.yourdomain.com.key;
location / {
auth_basic "AI API";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:11434;
proxy_set_header Host $host;
proxy_buffering off; # 流式输出必须关 buffering
proxy_read_timeout 300s; # 生成长回答时别被超时切断
}
}# 生成密码文件
htpasswd -c /etc/nginx/.htpasswd aiuser客户端调用时把凭据带上:
curl -u aiuser:你的密码 https://ai.yourdomain.com/api/generate -d '{...}'NAT 型服务器用户注意:确认商家支持 443 映射(小程序场景同理,见小程序服务器选购),映射规则见NAT 端口映射完全指南。反代配置进阶见Nginx 反向代理实战,HTTPS 证书自动化见SSL 证书完全指南。
七、性能调优:让同一台机器快一倍
1. 内存带宽是天花板
CPU 推理的速度主要取决于内存带宽,不是核心数。同价位选较新代际的 CPU比堆核数更有效。4 核 8G 跑 7B Q4 大约 15–30 tokens/s,够日常对话,基准数据见AI 应用选型指南。
2. 环境变量调优
# /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"
Environment="OLLAMA_NUM_PARALLEL=4" # 并发请求槽位,多人用时调大
Environment="OLLAMA_MAX_LOADED_MODELS=2" # 常驻内存的模型数,切模型不重新加载
Environment="OLLAMA_KEEP_ALIVE=10m" # 模型空闲 10 分钟后卸载,内存紧张可调短3. 上下文与 KV Cache
num_ctx 越大越吃内存:7B 模型 8K 上下文的 KV Cache 约 1–2G,开到 32K 再加 2–4G。内存 8G 的机器别开 32K 上下文,会 OOM。新版 Ollama 支持 KV Cache 量化(OLLAMA_KV_CACHE_TYPE=q8_0),能省一半上下文占用,质量损失很小。
4. 并发与排队
默认 OLLAMA_NUM_PARALLEL=1,第二个请求会等第一个完成。给团队用就调到 4,但每个并发槽位都要复制一份上下文状态,内存跟着涨——8G 内存的机器开 4 并发再加载 7B 模型,OOM 是分分钟的事。调大并发前先 free -h 看看余量,内存不足的应急处理见Swap 分区与内存优化。
5. 模型常驻
频繁"加载模型→推理→卸载"会让每次请求都多等几秒加载时间。OLLAMA_KEEP_ALIVE=24h 让模型一直驻留内存,代价是内存长期占用。单模型使用场景强烈建议这么设。
八、常见问题排查
| 症状 | 原因 | 解决 |
|---|---|---|
ollama run 报 OOM / 进程被杀 | 内存不够模型全量加载 | 换更小量化(Q4→Q3)、加内存、加 swap 救急 |
| 出字速度个位数 tokens/s | 内存带宽低或 CPU 太老 | 换新代际 CPU;确认没跑在限制了的容器里 |
| 拉模型龟速 | 海外源 | 换国内镜像 / GGUF 导入 / 整目录拷贝 |
| 端口连不上 | 默认只听 127.0.0.1 | 设计如此,走反代;检查防火墙,见Linux 防火墙配置 |
| 切换模型后第一次请求很慢 | 模型重新加载 | 调大 OLLAMA_KEEP_ALIVE 或 MAX_LOADED_MODELS |
| 回答突然变复读机 | repeat_penalty 太低 | Modelfile 里调到 1.1 左右 |
诊断三板斧:ollama ps 看当前加载了啥、free -h 看内存、journalctl -u ollama -f 看日志。更系统的排查方法论见服务器故障排查完全手册。
九、和站内其他 AI 服务的配合
Ollama 只是"模型层",成熟的私有 AI 工作台是这么搭的:
LobeChat(对话界面) ──┐
├──> Ollama(模型 API,127.0.0.1:11434)
n8n(工作流自动化) ──┘ │
AnythingLLM(RAG) ───────────┘- 对话界面:LobeChat 自托管
- 知识库问答:RAG 知识库搭建
- 自动化流水线:n8n 自动化工作流
- 监控告警:Prometheus 监控入门
结语
Ollama 把"在服务器上跑大模型"的门槛降到了一条安装命令 + 一条拉模型命令。剩下的工程量都在工程化:模型目录挂数据盘、反代加鉴权、按内存调并发。把这些做好,你就拥有一个 7×24 在线、不泄密、不计费的私有模型服务。
需要跑模型的服务器,可以看看财富云计算:NAT 型云服务器内存档位全(4G 到 32G+),SSD 系统盘支持挂数据盘放模型,支持热升级不换机,价格比独立 IP 机型省一半以上——跑本地模型这种"吃内存不吃公网 IP"的场景,NAT 型刚好对症。
延伸阅读
- Homepage 个人仪表盘:把散落各处的服务收进一个首页
- SSL 证书完全指南:免费证书、自动续期与不过期监控
- 数据备份体系完全手册:从随手拷到 3-2-1,让数据永远丢不了
- 压测与容量规划:上线前就知道你的服务器能扛多少人
- AdGuard Home 内网 DNS:全家去广告、防劫持、内网解析一站解决
- Hugo 静态博客搭建:秒开的博客,部署只要一个目录
- 安全应急响应完全手册:服务器被入侵后,按这个流程走
- 游戏服运营完全手册:从开服到停服,把一台服务器运营成百年老店

[...]大模型最大的短板是"不知道你的事":公司制度、产品文档、技术笔记,它一概没学过。RAG(检索增强生成)就是标准解法——把你的文档变成可检索的知识,回答时先查再答。这篇从原理到部署完整讲透。模型层部署见Ollama 本地大模型部署。一、RAG 是什么:一句话原理不用微调,让大模型"开卷考试"。普通问答:你问「报销流程是什么」→ 模型凭训练记忆瞎猜 → 一本正经地胡说(幻觉)。RAG 问答:你问「报销[...]
2026-10-19 回复
[...]}));节点 4:发通知(SMTP / 企业微信 Webhook / Telegram,按你有啥用啥)点右上角 Execute Workflow 手动跑一次,每个节点点开都能看到输入输出数据——调试极其直观。跑通了点 Active 激活,以后每天自动执行。四、核心概念:四类节点走天下类型作用常用节点触发器什么条件下启动Schedule(定时)、Webhook(HTTP 触发)、App 事件(邮件到[...]
2026-10-19 回复
[...]-H "Authorization: Bearer $TOKEN"有了这个,玩法就多了:浏览器书签小工具:看到好网页,点书签 = 一键存标题+链接到 MemosiOS 快捷指令:分享菜单 → 直接存 Memos,比打开 App 快三步服务器告警入笔记:监控告警时自动记一条,形成"运维日志"五、自动化:接 n8n 玩出花单有 API 是被动存取,接上 n8n 工作流就是主动流转:[...]
2026-10-19 回复
[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-19 回复