不需要 GPU,也能在自己的服务器上运行类似 ChatGPT 的私有 AI 助手。Ollama 可以下载并运行 Qwen、Llama、Gemma 等开放权重语言模型,并提供简洁的 API;Open WebUI 则在此基础上提供聊天界面,支持多用户、对话历史和文档上传。由于一切都在你的服务器上运行,提示词和文档不会离开服务器。本文介绍如何选择服务器配置、安装 Ollama、挑选适合在 CPU 上运行的模型、配置 Open WebUI 与 HTTPS,以及在自己的应用中调用 API。
使用 CPU 推理时,内存大小决定能加载哪些模型,CPU 核心数量和速度决定回答的生成速度。量化模型(Ollama 默认的 Q4 版本)大致需要以下内存:
| 模型规模 | 模型所需内存 | 推荐服务器配置 | 典型用途 |
|---|---|---|---|
| 1–4B 参数 | 约 1–3 GB | 4 核、8 GB 内存 | 分类、简短回答、测试 |
| 7–8B 参数 | 约 5–6 GB | 8 核以上、16 GB 内存 | 聊天助手、内容摘要、内部知识库 |
| 14B 参数 | 约 9–10 GB | 16 核以上、32 GB 内存 | 推理和写作能力更强,但在 CPU 上较慢 |
在现代多核 CPU 上,7–8B 模型每秒大约只能输出几个词:供小团队或后台任务使用没有问题,但无法支撑数百名用户同时使用。如果使用量较大,请选择核心数和内存更多的独立服务器,而不是小型 VPS,并避免在同一台机器上运行其他占用大量内存的服务。
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama --version
ss -lntp | grep 11434 # should show 127.0.0.1:11434
安装程序会创建 ollama 系统用户,以及一个监听 127.0.0.1:11434 的 systemd 服务。模型保存在 /usr/share/ollama/.ollama/models,请确保该磁盘有足够空间(一个 7B 模型约 4–5 GB)。
# Strong multilingual model, good at Chinese and English
ollama pull qwen2.5:7b
# Smaller and faster alternative
ollama pull llama3.2:3b
ollama run qwen2.5:7b "Explain in three sentences what a reverse proxy is."
ollama list # downloaded models
ollama ps # loaded models and how much memory they use
可以在 ollama.com 的模型库中浏览其他模型和规格。建议先从 3B 或 7B 模型开始,确认速度后,只有在回答质量不够时再换更大的模型。
Open WebUI 运行在 Docker 中(参见 Docker 安装教程)。容器需要访问宿主机上的 Ollama,因此要让 Ollama 监听所有网卡,同时确保防火墙阻止外部访问 11434 端口。
# Let Ollama accept connections from Docker containers
mkdir -p /etc/systemd/system/ollama.service.d
cat > /etc/systemd/system/ollama.service.d/override.conf <<'EOF2'
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
EOF2
systemctl daemon-reload && systemctl restart ollama
# Allow Docker networks to reach Ollama, block everyone else (ufw: rules are matched in order)
ufw allow from 172.16.0.0/12 to any port 11434 proto tcp
ufw deny 11434/tcp
# firewalld: simply do not open 11434; Docker's own zone already lets containers reach the host
# Start Open WebUI, reachable only from the server itself until Nginx is in front
docker run -d --name open-webui --restart always \
-p 127.0.0.1:3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
从另一台机器确认 http://YOUR_SERVER_IP:11434 无法访问。如果能够访问,请先修复防火墙再继续。
将 ai.example.com 这样的子域名解析到服务器,申请证书(参见使用 Certbot 或 acme.sh 申请免费 SSL 证书),然后反向代理到容器。Open WebUI 通过 WebSocket 流式输出回答,因此需要保留 Upgrade 请求头,并设置较长的读取超时时间。
server {
listen 443 ssl;
http2 on;
server_name ai.example.com;
ssl_certificate /etc/letsencrypt/live/ai.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ai.example.com/privkey.pem;
client_max_body_size 50m; # document uploads
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 600s;
}
}
打开网站并立即注册第一个账号,该账号会成为管理员。然后在管理员设置中关闭新用户注册,或者设为需要管理员审核,并由你亲自为团队成员创建账号。
Ollama 既提供原生 API,也提供 OpenAI 兼容接口,因此很多工具和 SDK 只需修改 base URL 即可使用。可以在同一台服务器上调用,也可以从你的其他服务器通过内网或 SSH 隧道调用。
# Native API
curl http://127.0.0.1:11434/api/generate -d '{
"model": "qwen2.5:7b",
"prompt": "Write a short product description for a Tokyo VPS.",
"stream": false
}'
# OpenAI-compatible API (base URL http://127.0.0.1:11434/v1, any API key)
curl http://127.0.0.1:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"qwen2.5:7b","messages":[{"role":"user","content":"Hello"}]}'
Dify、n8n 等工作流工具可以将 Ollama 作为模型提供方接入,参见 Dify、n8n 与 AI Agent 服务器配置要求。
Environment="OLLAMA_KEEP_ALIVE=1h",可以避免首次回答过慢。OLLAMA_NUM_PARALLEL=2 允许两个请求共用一个已加载的模型;每增加一个并行槽位,都需要更多内存。ollama ps 和 free -h 检查。能用。使用 3B–8B 模型做内部工具、文档问答、写稿、翻译和批量任务都没有问题。如果有大量并发用户或要运行更大的模型,则需要更多的 CPU 核心和内存,或者使用 GPU 硬件。
Qwen(通义千问)系列使用了大量中英文语料训练,是很好的默认选择。建议先试用 qwen2.5:7b,再用你自己的实际问题与其他模型进行对比。
不会。Ollama 和 Open WebUI 在本地处理提示词和文档,只有下载模型和更新时才会访问互联网。
如果按以上步骤操作后问题仍未解决,请提交工单联系 IMIDC 7×24 技术支持,并附上服务器 IP、系统版本、CPU 和内存配置、所用模型以及完整报错信息,方便工程师快速定位。