最近在折腾本地大语言模型部署时,发现Open WebUI+Ollama这套组合拳在Ubuntu24.04上跑得特别顺畅。作为一个长期在Linux环境下工作的开发者,我花了三天时间完整走通了整个部署流程,过程中踩了不少坑也积累了些实用技巧。这套方案最大的优势是能让你在本地机器上零成本搭建一个功能完善的AI对话界面,完全离线运行各种开源大模型。
Open WebUI本质上是个基于浏览器的聊天界面,而Ollama则是负责在后台管理和运行AI模型的引擎。两者结合后,你就能像使用ChatGPT一样在本地和开源大模型对话,而且所有数据都留在自己机器上。Ubuntu24.04作为最新的LTS版本,提供了更稳定的基础环境支持,特别适合长期运行的AI服务。
首先确认你的Ubuntu24.04系统满足以下最低配置:
重要提示:如果使用NVIDIA显卡,务必先通过
nvidia-smi命令验证驱动和CUDA是否正常。我在RTX 3060上测试时发现,未正确安装CUDA会导致Ollama无法调用GPU加速。
更新系统并安装必要工具:
bash复制sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git python3-pip docker.io
特别要注意docker的权限配置:
bash复制sudo usermod -aG docker $USER
newgrp docker
这一步经常被忽略,会导致后续docker命令需要sudo权限。
官方提供了一键安装脚本:
bash复制curl -fsSL https://ollama.com/install.sh | sh
安装完成后验证服务状态:
bash复制systemctl status ollama
如果服务未自动启动,需要手动启用:
bash复制sudo systemctl enable --now ollama
Ollama支持的主流开源模型包括:
下载7B参数的mistral模型:
bash复制ollama pull mistral
模型会存储在~/.ollama/models目录,下载进度可能较慢(7B模型约4GB)。我建议在半夜带宽充足时进行下载,同时可以使用screen会话防止中断。
编辑Ollama配置文件/etc/ollama/env:
bash复制OLLAMA_NUM_PARALLEL=4 # 根据CPU核心数调整
OLLAMA_GPU_LAYERS=32 # 显卡显存足够时可增大此值
重启服务使配置生效:
bash复制sudo systemctl restart ollama
官方推荐使用docker-compose部署:
bash复制git clone https://github.com/open-webui/open-webui.git
cd open-webui
docker compose up -d
这个命令会拉取两个容器:
第一次启动可能需要5-10分钟下载镜像。我在部署时遇到端口冲突问题,解决方法是在docker-compose.yml中修改端口映射:
yaml复制ports:
- "8081:8080" # 将主机端口改为8081
重要环境变量配置(编辑.env文件):
ini复制OLLAMA_API_BASE_URL=http://host.docker.internal:11434
ENABLE_SIGNUP=false # 生产环境建议关闭注册
配置完成后需要重建容器:
bash复制docker compose up -d --build
默认情况下Open WebUI允许匿名访问,建议启用基础认证:
bash复制docker exec -it open-webui bash
python3 ./scripts/add_user.py -e admin@localhost -p yourpassword
如果你希望通过域名访问服务,建议配置Nginx:
nginx复制server {
listen 80;
server_name ai.yourdomain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
}
}
配置完成后申请SSL证书:
bash复制sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d ai.yourdomain.com
创建systemd服务单元/etc/systemd/system/webui.service:
ini复制[Unit]
Description=Open WebUI Service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/path/to/open-webui
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
[Install]
WantedBy=multi-user.target
启用服务:
bash复制sudo systemctl enable --now webui
典型错误:"failed to load model"
ollama list确认模型已下载完整journalctl -u ollama -follama pull --insecure mistral错误提示:"Connection refused"
systemctl status ollamasudo ufw statustelnet localhost 11434验证方法:
bash复制ollama run mistral
>>> /info
输出中应包含"gpu_layers"参数。如果没有:
nvcc --versionOLLAMA_CUDA=1 ollama serve在WebUI界面左下角点击模型名称,可以:
在/opt/open-webui/data/prompts目录下创建模板:
json复制{
"name": "技术文档助手",
"prompt": "你是一个资深技术文档工程师,请用专业但易懂的语言回答以下问题..."
}
刷新页面后即可在聊天界面选择预设角色。
重要数据目录:
~/.ollama/models/opt/open-webui/data建议定期备份这些目录。迁移到新机器时,只需复制这些目录并重新安装基础服务即可快速恢复环境。
这套方案在我团队内部已经稳定运行了两个月,期间处理过近千次查询请求。最大的收获是发现mistral-7b模型在技术问答场景下的表现远超预期,响应速度在RTX3060上能达到15-20 tokens/秒。对于不想依赖第三方API的开发者来说,这绝对是目前最具性价比的本地AI解决方案。