不需要 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 和記憶體配置、所用模型以及完整報錯資訊,方便工程師快速定位。