这篇是我折腾了好几轮之后总结出来的。Ollama 跑本地模型,Open WebUI 做聊天界面,两个都有 Docker 和原生两种装法。每种我都实际跑过,下面直接说结果。
先说结论:Linux 服务器直接上 Docker,Windows 个人电脑走原生安装包。别纠结,这两个是最省事的路。
为什么我最后选了 Docker(服务器端)
一开始我是原生装的 Ollama,一行命令的事儿,确实简单。但后来想加 Open WebUI,发现这玩意官方推荐也是 Docker。那还不如两个都扔 Docker 里,用 compose 一起管。
实际用下来 Docker 版的好处很明显:升级就是拉新镜像重建容器,数据存在 volume 里不丢。原生的话升级要重新跑安装脚本,虽然也不难,但总觉得不如一条命令干净。
GPU 方面 Docker 也没性能损失,装了 NVIDIA Container Toolkit 之后直通,跟原生一样快。
Docker 版部署
准备工作
装 Docker:
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker有 Nvidia GPU 的话装 Container Toolkit:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
apt update && apt install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
systemctl restart dockercompose 文件
建个目录 /opt/ollama-stack,里面放 docker-compose.yml:
version: "3.8"
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ollama-data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "3000:8080"
volumes:
- open-webui-data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
depends_on:
- ollama
volumes:
ollama-data:
open-webui-data:没 GPU 就把 deploy 那段整个删掉,其他不用改。
启动:
cd /opt/ollama-stack
docker compose up -d等镜像拉完,浏览器打开 http://你的IP:3000 就能看到 Open WebUI 了。拉个模型试试:
docker exec -it ollama ollama pull qwen2.5:7b原生版(适合 Windows 或不想装 Docker 的情况)
Linux 一行命令搞定:
curl -fsSL https://ollama.com/install.sh | sh装完自动注册了 systemd 服务,systemctl status ollama 看看在不在跑。默认监听 127.0.0.1:11434,局域网访问的话改一下环境变量:
sudo systemctl edit ollama
# 加上:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
sudo systemctl daemon-reload
sudo systemctl restart ollamaWindows 更简单,去 ollama.com/download 下载安装包,装完任务栏右下角就有图标。
Open WebUI 原生化比较麻烦,官方也推荐 Docker。如果实在不想装 Docker,可以直接用 Ollama 自带的 API 调着玩,或者装个第三方的轻量前端。
CPU 还是 GPU?差距确实大
同样跑 qwen2.5:7b:
RTX 3060(12G 显存)大概 15~20 token/s,聊起来基本没卡顿感。RTX 4090 能到 50~80 token/s,飞快。
纯 CPU 就不太好看了。i5-12400 大概 2~4 token/s,能聊,但等回复要有耐心。AMD 5800H 稍好一些,3~5 t/s。
如果你只有 CPU,建议先试 3B 以下的小模型。qwen2.5:3b 在 CPU 上能到 10~15 t/s,日常聊天够用了。7B 在 CPU 上勉强能聊,超过 13B 就别想了。
几点踩坑记录
Ollama 默认只监听 127.0.0.1。如果你部署在服务器上想让其他设备访问,别忘了改 OLLAMA_HOST。
Docker 版里 Open WebUI 连 Ollama 用的是容器间通信,地址是 http://ollama:11434(容器名),不是 127.0.0.1。这个踩过坑。
外网暴露要注意安全。Ollama 没认证,谁连上都能调。建议只绑内网 IP,或者用 Nginx 反代加 basic auth。