19 10 月 2026
如果你想在云服务器上拥有一个"不花钱、不审查、数据不出自己机器"的大模型,Ollama 是目前最简单的答案。这篇从安装、模型管理、API 对接到性能调优完整讲一遍,全部命令可以直接抄。选型逻辑见云服务器跑 AI 应用完全指南。

一、为什么是 Ollama

市面上的本地大模型方案不少,Ollama 胜在三点:

  1. 安装就是一条命令,不用管 CUDA、不用编译,模型自动下载量化版
  2. OpenAI 兼容 API,原有接 GPT 的代码改个 base_url 就能用
  3. 模型市场丰富,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 的模型能拉半小时。三个提速手段:

  1. HF 镜像中转:先在国内镜像站下载 GGUF,再用 Modelfile 导入(见下节)
  2. 换 ModelScope 源:ModelScope 有 Ollama 兼容的模型库,配 OLLAMA_MIRROR 环境变量可用(部分模型覆盖不全)
  3. 一锤子买卖:找台能顺畅访问的机器拉好,把 /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)    ───────────┘

结语

Ollama 把"在服务器上跑大模型"的门槛降到了一条安装命令 + 一条拉模型命令。剩下的工程量都在工程化:模型目录挂数据盘、反代加鉴权、按内存调并发。把这些做好,你就拥有一个 7×24 在线、不泄密、不计费的私有模型服务。

需要跑模型的服务器,可以看看财富云计算:NAT 型云服务器内存档位全(4G 到 32G+),SSD 系统盘支持挂数据盘放模型,支持热升级不换机,价格比独立 IP 机型省一半以上——跑本地模型这种"吃内存不吃公网 IP"的场景,NAT 型刚好对症。

延伸阅读
  1. Homepage 个人仪表盘:把散落各处的服务收进一个首页
  2. SSL 证书完全指南:免费证书、自动续期与不过期监控
  3. 数据备份体系完全手册:从随手拷到 3-2-1,让数据永远丢不了
  4. 压测与容量规划:上线前就知道你的服务器能扛多少人
  5. AdGuard Home 内网 DNS:全家去广告、防劫持、内网解析一站解决
  6. Hugo 静态博客搭建:秒开的博客,部署只要一个目录
  7. 安全应急响应完全手册:服务器被入侵后,按这个流程走
  8. 游戏服运营完全手册:从开服到停服,把一台服务器运营成百年老店
更多阅读
  1. 上一篇:云服务器跑 AI 应用完全指南:配置怎么选、模型怎么挑、NAT 型能不能跑
  2. 下一篇:Stable Diffusion 绘图服务搭建:从选型到出图,把 AI 画图搬上云服务器
发表评论 4

取消回复