Ubuntu 25.04私有大模型部署实战:Ollama+DeepSeek+OpenWebUI完全指南

Ubuntu 25.04私有大模型部署实战:Ollama+DeepSeek+OpenWebUI完全指南

Ubuntu 25.04私有大模型部署实战:Ollama+DeepSeek+OpenWebUI完全指南

作为一名技术爱好者,我对本地部署大型语言模型充满热情。在Ubuntu 25.04上搭建完整的私有AI环境(Ollama + DeepSeek + OpenWebUI)让我收获颇丰,也踩过不少坑。本文将分享零基础搭建流程性能调优技巧实用问题解决方案,助你快速拥有专属AI助手。

前置环境准备

推荐使用Ubuntu 25.04 Server版(最小化安装),配置要求:

  • CPU:4核及以上(建议Intel i7+/Ryzen 5+)
  • 内存:32GB以上(运行32B模型需要)
  • 显卡:NVIDIA RTX 3060 12GB+(显存越大越好)
  • 存储:至少100GB SSD空间

系统优化建议:

# 禁用自动更新降低系统中断几率sudosed-i's/Update-Package-Lists "1"/Update-Package-Lists "0"/g' /etc/apt/apt.conf.d/10periodic # 调整Swappiness提升内存使用效率echo"vm.swappiness=10"|sudotee /etc/sysctl.d/99-swappiness.conf sudosysctl-p

一、核心组件安装

1. Ollama服务部署

Ollama是本地大模型运行引擎,支持多种开源模型:

# 添加Ollama官方源curl-fsSL https://ollama.com/install.sh |sh# 创建专用系统用户(提高安全性)sudouseradd-r-s /bin/false -m-d /opt/ollama ollama 

服务配置文件(/etc/systemd/system/ollama.service)是关键,下面是我优化后的版本:

[Unit] Description=Ollama Service After=network-online.target Requires=network-online.target [Service] ExecStart=/usr/bin/ollama serve User=ollama Group=ollama Restart=on-failure RestartSec=30s StartLimitIntervalSec=60 StartLimitBurst=5 # 环境变量配置 Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/cuda/bin" Environment="CUDA_VISIBLE_DEVICES=0,1" # 指定使用哪几张显卡 Environment="OLLAMA_SCHED_SPREAD=1" # 多卡负载均衡 Environment="OLLAMA_KEEP_ALIVE=-1" # 模型常驻内存不卸载 Environment="OLLAMA_HOST=0.0.0.0" # 开放远程访问 Environment="OLLAMA_ORIGINS=*" # 允许所有跨域请求 Environment="OLLAMA_MODELS=/data/ollama" # 自定义模型存放路径 # 资源限制(根据硬件调整) MemoryHigh=24G MemoryMax=26G CPUQuota=300% [Install] WantedBy=multi-user.target 

启动服务:

sudo systemctl daemon-reload sudo systemctl enable--now ollama 

2. DeepSeek模型加载

DeepSeek是一款优秀的中文大模型,本地部署步骤:

# 下载模型(约25GB) ollama pull deepseek-coder:33b # 测试模型运行 ollama run deepseek-coder "用Python写一个快速排序函数"

为提升加载速度,可创建本地模型缓存:

mkdir-p /data/ollama/.ollama/models/blobs ln-s /data/ollama/.ollama/models /usr/share/ollama 

3. OpenWebUI可视化界面

使用国内镜像源加速下载:

# 拉取镜像sudodocker pull ghcr.m.daocloud.io/open-webui/open-webui:main # 持久化存储目录准备mkdir-p /data/open-webui/{database,cache}chmod755 /data/open-webui 

运行容器(特别注意网络配置):

docker run -d\-p3000:8080 \--name open-webui \--restart always \ --add-host=host.docker.internal:host-gateway \-v /data/open-webui:/app/backend/data \-eOLLAMA_BASE_URL=http://172.17.0.1:11434 \ ghcr.m.daocloud.io/open-webui/open-webui:main 

验证容器连通性:

dockerexec open-webui curl-Is http://172.17.0.1:11434 |head-1# 应返回 "HTTP/1.1 200 OK"

二、性能调优实战

1.GPU资源共享配置

# 安装NVIDIA容器工具包curl-sL https://nvidia.github.io/libnvidia-container/gpgkey \|sudo gpg --dearmor-o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg echo"deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] \ https://nvidia.github.io/libnvidia-container/stable/ubuntu25.04/$(arch) /"\|sudotee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudoapt update &&sudoaptinstall-y nvidia-container-toolkit 

修改Docker配置(/etc/docker/daemon.json):

{"runtimes":{"nvidia":{"path":"/usr/bin/nvidia-container-runtime","runtimeArgs":[]}},"default-runtime":"nvidia"}

2.模型热加载优化

创建自动加载脚本(/usr/local/bin/ollama-autoload):

#!/bin/bashMODELS=("deepseek-coder:33b""llama3:70b")forMODELin${MODELS[@]};docurl-X POST http://localhost:11434/api/pull -d'{"name": "'$MODEL'"}'done

添加到crontab:

(crontab -l;echo"@reboot /usr/local/bin/ollama-autoload")|crontab - 

三、故障排查指南

1. OpenWebUI无法连接Ollama

# 容器内部测试dockerexec-it open-webui ping172.17.0.1 # 检查端口映射sudo ss -tulnp|grep11434# 临时关闭防火墙测试sudo ufw disable 

2. 模型加载异常

查看详细日志:

journalctl -u ollama -f-n100

常见解决方案:

  1. 检查磁盘空间 df -h /data
  2. 验证模型完整性 ollama ls
  3. 调整显存分配(在小型卡上使用较小模型)

3. CUDA内存溢出

编辑~/.ollama/config.json

{"num_gpu":1,"num_thread":6,"max_vram":10000// MB为单位}

四、安全加固建议

  1. 添加访问认证:
docker run ... -eOPENWEBUI_SECRET_KEY=YourStrongKey ... 
  1. 配置HTTPS:
# 使用Let's Encrypt证书docker run -d\-p443:8080 \-v /etc/letsencrypt:/etc/letsencrypt \-eOPENWEBUI_SECURE_COOKIES=true \...其他参数... 

五、实际效果展示

完成部署后,浏览器访问 http://your-server-ip:3000 即可使用:

  1. 支持多会话管理
  2. 提供模型切换面板
  3. 中文问答响应速度约5-8 tokens/秒(RTX 4090)
  4. 本地运行API支持:
curl http://localhost:11434/api/generate -d'{ "model": "deepseek-coder:33b", "prompt": "解释量子纠缠现象", "stream": false }'

六、总结与建议

通过本方案部署的私有AI环境具有:

  • 高性价比:完全本地运行,无API调用费用
  • 隐私安全:敏感数据不出内网
  • 灵活扩展:支持200+ HuggingFace模型

系统监控建议:

  • 使用nvtop监控GPU状态
  • 配置Prometheus+Granfa监控服务健康度
  • 设置日志轮转防止磁盘写满
经过一周的稳定运行测试,这套环境成功应对了日常开发辅助、技术文档撰写和编程问题解决等场景,是值得投入的生产力工具。期待你也成功部署属于自己的AI助手!

Read more

Spring Boot 实战:MyBatis 操作数据库(上)

Spring Boot 实战:MyBatis 操作数据库(上)

—JavaEE专栏— Spring Boot 实战:MyBatis 操作数据库(上) 摘要 本文深度解析了 Spring Boot 环境下 MyBatis 的集成与应用。通过回顾传统 JDBC 的局限性,详细展示了 MyBatis 在日志配置、CRUD 操作、自增主键返回及多表查询中的实战用法。同时,文章深入探讨了 #{} 与 ${} 的底层预编译差异及安全风险,并分享了企业级开发中的数据库命名规范与 Druid 连接池配置,助力开发者构建稳健的持久层架构。 文章目录 * Spring Boot 实战:MyBatis 操作数据库(上) * 摘要 * @[toc] * 1. 为什么持久层开发需要 MyBatis? * 1.1 传统 JDBC 的局限性 * 1.2

By Ne0inhk

OpenClaw gateway start 报 401 Invalid API key?一个环境变量的坑

今天折腾了半小时,终于搞明白为什么 openclaw gateway start 一直报 HTTP 401: Invalid API key,而 openclaw gateway run 却能正常工作。 记录一下,免得以后又踩。 问题现象 用 openclaw gateway run 前台运行,一切正常,能正常对话。 但换成 openclaw gateway start(systemd 后台服务),就报错: HTTP 401: Invalid API key 明明配置文件里 API key 写得好好的,为什么会这样? 原因分析 run 和 start 的区别: * run — 前台运行,

By Ne0inhk
SpringBoot + Vue 前后端分离项目实战:权限 + 工作流 + 报表

SpringBoot + Vue 前后端分离项目实战:权限 + 工作流 + 报表

✨道路是曲折的,前途是光明的! 📝 专注C/C++、Linux编程与人工智能领域,分享学习笔记! 🌟 感谢各位小伙伴的长期陪伴与支持,欢迎文末添加好友一起交流! 📚 目录 * 前言 * 一、项目背景与技术选型 * 二、系统架构设计 * 三、权限管理模块 * 四、工作流引擎集成 * 五、报表系统实现 * 六、核心代码实现 * 七、部署与运维 * 八、总结 前言 前后端分离架构已成为企业级应用开发的主流选择。本文将通过一个完整的企业管理系统实战项目,详细介绍如何使用 SpringBoot + Vue 技术栈,实现权限管理、工作流引擎和报表系统三大核心功能。 项目特色 * 前后端分离:RESTful API 设计,便于扩展和维护 * RBAC权限模型:细粒度的权限控制体系 * Flowable工作流:可视化流程设计与执行 * 动态报表:灵活配置的数据可视化方案 一、项目背景与技术选型 1.

By Ne0inhk
【Java Web学习 | 第五篇】CSS(4) -盒子模型

【Java Web学习 | 第五篇】CSS(4) -盒子模型

🌈个人主页: Hygge_Code🔥热门专栏:从0开始学习Java | Linux学习| 计算机网络💫个人格言: “既然选择了远方,便不顾风雨兼程” 文章目录 * CSS盒子模型🥝 * 1. 什么是CSS盒子模型? * 2. 边框(border):盒子的"外衣"🍋‍🟩 * 边框的基本属性 * 单边边框设置 * 边框对盒子大小的影响 * 表格细线边框 * 3. 内边距(padding):内容与边框的缓冲带🍋‍🟩 * 内边距的基本用法 * 内边距对盒子大小的影响 * 内边距的实用技巧 * 内边距不影响盒子大小的特殊情况 * 4. 外边距(margin):盒子之间的距离🍋‍🟩 * 外边距的基本用法 * 外边距的典型应用:水平居中 * 外边距合并问题 * 清除默认内外边距🐦‍🔥 * 综合代码演示 * CSS美化三剑客:圆角边框、盒子阴影与文字阴影🥝 * 1. 圆角边框(border-radius):告别生

By Ne0inhk