Mac 部署Ollama + OpenWebUI完全指南
文章目录
- 💻 环境说明
- 🛠️ Ollama安装配置
- 1. 安装[Ollama](https://github.com/ollama/ollama)
- 2. 启动Ollama
- 3. 模型存储位置
- 4. 配置 Ollama
- 🌐 OpenWebUI部署
- 1. 安装Docker
- 2. 部署[OpenWebUI](https://www.openwebui.com/)(可视化大模型对话界面)
- 🔒 离线部署方案
- ⚡ 性能优化建议
- ❓ 常见问题
- 🎉 结语
想拥有一个完全属于自己的AI助手,还不依赖互联网?本教程带你从零开始搭建本地AI环境!(Apple Silicon架构)
💻 环境说明
| 配置项 | Mac | Windows |
|---|---|---|
| 操作系统 | macOS Sonoma | Windows 10/11 |
| CPU | M4 | 12核或以上 |
| 内存 | 16GB | 32GB或以上 |
| 硬盘空间 | 20GB | 20GB或以上 |
🛠️ Ollama安装配置
1. 安装Ollama
# 使用Homebrew安装
brew install ollama# 或直接下载安装包
curl https://ollama.ai/download/Ollama-darwin.zip -o Ollama.zip
unzip Ollama.zip# 输入`ollama`或 `ollama -v`验证安装
ollama

2. 启动Ollama
# 启动Ollama服务
ollama serve

# 或点击浏览器访问:http://localhost:11434

显示Ollama is running代表已经运行起来了!
# 下载Llama3 8B模型
ollama run llama3:8b # 建议先尝试小模型

💡 小贴士:你应该至少有 8 GB 的 RAM 来运行 7B 模型,16 GB 的 RAM 来运行 13B 模型,以及 32 GB 的 RAM 来运行 33B 模型。
3. 模型存储位置
Mac下,Ollama的默认存储位置:
- 模型文件:
~/.ollama/models - 配置文件:
~/Library/Application Support/Ollama
Windows下,Ollama的默认存储位置:
- 程序目录:
C:\Users\<用户名>\AppData\Local\Programs\Ollama - 模型目录:
C:\Users\<用户名>\.ollamamodels - 配置文件:
C:\Users\<用户名>\AppData\Local\Ollama
💡 小贴士:建议通过环境变量OLLAMA_MODELS自定义模型存储路径,避免占用系统盘空间。
4. 配置 Ollama
Ollama 提供了多种环境变量以供配置:
- OLLAMA_DEBUG:是否开启调试模式,默认为 false。
- OLLAMA_FLASH_ATTENTION:是否闪烁注意力,默认为 true。
- OLLAMA_HOST:Ollama 服务器的主机地址,默认为空。
- OLLAMA_KEEP_ALIVE:保持连接的时间,默认为 5m。
- OLLAMA_LLM_LIBRARY:LLM 库,默认为空。
- OLLAMA_MAX_LOADED_MODELS:最大加载模型数,默认为 1。
- OLLAMA_MAX_QUEUE:最大队列数,默认为空。
- OLLAMA_MAX_VRAM:最大虚拟内存,默认为空。
- OLLAMA_MODELS:模型目录,默认为空。
- OLLAMA_NOHISTORY:是否保存历史记录,默认为 false。
- OLLAMA_NOPRUNE:是否启用剪枝,默认为 false。
- OLLAMA_NUM_PARALLEL:并行数,默认为 1。
- OLLAMA_ORIGINS:允许的来源,默认为空。
- OLLAMA_RUNNERS_DIR:运行器目录,默认为空。
- OLLAMA_SCHED_SPREAD:调度分布,默认为空。
- OLLAMA_TMPDIR:临时文件目录,默认为空。
- OLLAMA_DEBUG:是否开启调试模式,默认为 false。
- OLLAMA_FLASH_ATTENTION:是否闪烁注意力,默认为 true。
- OLLAMA_HOST:Ollama 服务器的主机地址,默认为空。
- OLLAMA_KEEP_ALIVE:保持连接的时间,默认为 5m。
- OLLAMA_LLM_LIBRARY:LLM 库,默认为空。
- OLLAMA_MAX_LOADED_MODELS:最大加载模型数,默认为 1。
- OLLAMA_MAX_QUEUE:最大队列数,默认为空。
- OLLAMA_MAX_VRAM:最大虚拟内存,默认为空。
- OLLAMA_MODELS:模型目录,默认为空。
- OLLAMA_NOHISTORY:是否保存历史记录,默认为 false。
- OLLAMA_NOPRUNE:是否启用剪枝,默认为 false。
- OLLAMA_NUM_PARALLEL:并行数,默认为 1。
- OLLAMA_ORIGINS:允许的来源,默认为空。
- OLLAMA_RUNNERS_DIR:运行器目录,默认为空。
- OLLAMA_SCHED_SPREAD:调度分布,默认为空。
- OLLAMA_TMPDIR:临时文件目录,默认为空。
🌐 OpenWebUI部署
1. 安装Docker
- 访问 Docker官网 下载Mac版本(Apple Silicon)
- 安装并启动Docker Desktop
- 配置国内镜像源加速下载(我这里
科学上网不需要)

💡 小贴士:Windows 安装 Docker 需要开启 Hyper-V(Windows专业版必需)
2. 部署OpenWebUI(可视化大模型对话界面)
# 拉取镜像 (直接run默认会拉取 latest 标签的镜像)
docker pull ghcr.io/open-webui/open-webui:main#(官方文档)以上是从 GitHub Container Registry (GHCR) 上拉取镜像,而不是从 Docker Hub。
# 也可以docker hub 拉取 open-webui镜像
docker pull dyrnq/open-webui:main

# 启动容器
docker run -d -p 3000:8080 \--add-host=host.docker.internal:host-gateway \-v open-webui:/app/backend/data \--name open-webui \--restart always \ghcr.io/open-webui/open-webui:main
访问 http://localhost:3000 即可使用Web界面。
创建账号,这个是本地账号,随便添加账号信息即可

选择ollama中的模型,聊天测试

也可以在这里直接拉取模型

与下载的新模型进行对话

💡 小贴士:
- 注册时邮箱可以随便填写,设置密码后注意保存!
- ollama后台一定要运行着模型,如:ollama run phi-4
🔒 离线部署方案
如果需要在无网环境下部署,可以按照以下步骤操作:
-
在有网环境下准备资源:
- 下载Ollama安装包
- 导出模型文件
- 导出Docker镜像
-
离线环境部署:
- 安装Ollama
- 复制模型文件到指定目录
- 导入Docker镜像
- 启动OpenWebUI
⚡ 性能优化建议
-
内存管理
- 关闭不必要的后台应用
- 使用Activity Monitor监控内存使用
-
模型选择
- 建议从小模型开始测试
- 推荐模型大小顺序:
- qwen2:0.5b (最轻量)
- llama2:7b (平衡型)
- codellama:7b (代码专用)
-
温度控制
- 保持Mac Mini通风良好
- 可使用监控工具观察CPU温度
❓ 常见问题
-
Q: M4芯片能跑多大的模型?
A: 16GB内存的M4可以流畅运行8B参数的模型,更大的模型可能会影响性能。 -
Q: Llama中文支持不好怎么办?
A: 可以使用Llama-Chinese等经过中文优化的模型。 -
Q: OpenWebUI打不开怎么办?
A: 检查Docker状态:docker ps # 查看容器状态 docker logs open-webui # 查看日志
🎉 结语
通过本教程的配置,你已经拥有了一个完全本地化的AI助手!有任何问题欢迎在评论区讨论,让我们一起探索AI的无限可能!
如果觉得这篇文章对你有帮助,别忘了点赞转发哦~ 👍
你用Mac Mini跑过哪些AI模型?欢迎分享你的使用体验!💭
相关文章:
Mac 部署Ollama + OpenWebUI完全指南
文章目录 💻 环境说明🛠️ Ollama安装配置1. 安装[Ollama](https://github.com/ollama/ollama)2. 启动Ollama3. 模型存储位置4. 配置 Ollama 🌐 OpenWebUI部署1. 安装Docker2. 部署[OpenWebUI](https://www.openwebui.com/)(可视化…...
蓝桥杯小白打卡第二天
789. 数的范围 题目描述 给定一个按照升序排列的长度为 n n n 的整数数组,以及 q q q 个查询。 对于每个查询,返回一个元素 k k k 的起始位置和终止位置(位置从 0 0 0 开始计数)。 如果数组中不存在该元素,则返…...
Docker Compose:容器编排的利器
Docker Compose:容器编排的利器 引言 随着容器技术的普及,Docker成为了当今最受欢迎的容器编排工具之一。Docker Compose作为Docker生态系统中的一部分,允许用户以声明式的方式定义和运行多容器Docker应用。本文将深入探讨Docker Compose的基本概念、工作原理、使用场景以…...
springboot项目的单元测试
文章目录 依赖编写单测代码一些注意点 依赖 依赖包含了 JUnit、Mockito、Spring Test 等常用的测试工具 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><…...
JVM图文入门
往期推荐 【已解决】redisCache注解失效,没写cacheConfig_com.howbuy.cachemanagement.client.redisclient#incr-CSDN博客 【已解决】OSS配置问题_keyuewenhua.oss-cn-beijing.aliyuncs-CSDN博客 【排坑】云服务器docker部署前后端分离项目域名解析OSS-CSDN博客 微服…...
cursor 开发java项目教程简单上手
1.官网下载 Cursor - The AI Code Editor 下载完后注册账号,可以使用无限邮的方式 注册完之后 设置中文 可以选择设置为中文 Ctrl Shift X 进入设置页面输入chinese 然后重启 更改jdk跟maven仓库设置 ctrlshiftp 打开输入框后输入json,把下面代码…...
优化fm.jiecao.jcvideoplayer_lib中视频横竖屏自动适配原视频方案
fm.jiecao:jiecaovideoplayer:x.x.x 优化fm.jiecao.jcvideoplayer_lib中视频横竖屏自动适配原视频方案: 仅优化关键代码部分,源码: public void startWindowFullscreen() {Log.i(TAG, "startWindowFullscreen " " [" …...
aws(学习笔记第二十七课) 使用aws API Gateway+lambda体验REST API
aws(学习笔记第二十七课) 使用aws API Gatewaylambda体验REST API 学习内容: 使用aws API Gatewaylambda 1. 使用aws API Gatewaylambda 作成概要 使用api gateway定义REST API,之后再接收到了http request之后,redirect到lambda进行执行。…...
物联网的三层架构:感知层、网络层与应用层
物联网(Internet of Things, IoT)作为现代科技的重要组成部分,正在深刻改变我们的生活和工作方式。它将物理世界与数字世界无缝连接,通过智能设备、传感器和网络技术,实现数据的采集、传输和应用。物联网的架构通常分为…...
常用抓包工具tcpdump、Fiddler、Charles、Wireshark 和 Sniffmaster 下载地址
抓包大师官网下载地址 Sniff Master Download - Free TCP and HTTPS Proxy Sniffing Tool, Supports IOS Sniffing Fiddler classic官网下载地址 Download Fiddler Web Debugging Tool for Free by Telerik Fiddler Everywhere官网下载地址 The Ultimate Web Debugging Tool …...
π0开源了且推出自回归版π0-FAST——打造机器人动作专用的高效Tokenizer:比扩散π0的训练速度快5倍但效果相当
前言 过去的半个多月 deepseek火爆全球,我对其的解读也成了整整一个系列 详见《火爆全球的DeepSeek系列模型》,涉及对GRPO、MLA、V3、R1的详尽细致深入的解读 某种意义来讲,deepseek 相当于把大模型的热度 又直接拉起来了——相当于给大模…...
js-对象-JSON
JavaScript自定义对象 JSON 概念: JavaScript Object Notation,JavaScript对象标记法. JSON 是通过JavaScript 对象标记法书写的文本。 由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输. json中属性名(k…...
Houdini subuv制作输出阵列图
在游戏开发中经常需要用到sheet阵列图,并用其制作翻页动画。通过Houdini强大的节点组合可以配合输出subuv阵列图供游戏引擎使用。 本文出处:https://zhuanlan.zhihu.com/p/391796978 博主参考学习并写该文。 1.在obj分类下创建font节点以进行测试&#…...
虚幻基础17:动画蓝图
能帮到你的话,就给个赞吧 😘 文章目录 animation blueprint图表(Graph): 编辑动画逻辑。变量(Variables): 管理动画参数。函数(Functions): 自定义…...
路由器及工作原理与常用路由配置命令详解
一、引言 在当今数字化时代,网络已经成为人们生活和工作中不可或缺的一部分。无论是家庭网络中的多台设备同时上网,还是企业网络中各个部门之间的数据传输和资源共享,都离不开网络设备的支持。路由器作为一种关键的网络设备,在网…...
Windows编程:下载与安装 Visual Studio 2010
本节前言 在写作本节的时候,本来呢,我正在写的专栏,是 MFC 专栏。而 VS2010 和 VS2019,正是 MFC 学习与开发中,可以使用的两款软件。然而呢,如果你去学习 Windows API 知识的话,那么࿰…...
R语言 文本分析 天龙八部
起因, 目的: 前面有人对 “倚天屠龙记” 进行分析,我这里只是进行模仿而已。 完整的文件, 已经绑定了,反正读者可以找一下。 案例背景 小说《天龙八部》是金庸先生所著的武侠小说,也是“射雕三部曲”的前传。全书共50章,字数超过一百万字。故事发生在北宋末年,以大理…...
深度学习 Pytorch 建模可视化工具TensorBoard的安装与使用
50 TensorBoard的安装和使用 在深度学习建模过程中,为了能够快速绘制模型基本结构、观察模型评估指标伴随训练过程的动态变化情况,当然也为了能够观察图像数据,我们可以使用TensorBoard工具来进行Pytorch深度学习模型的可视化展示。 Tensor…...
【免费】2007-2019年各省科技支出占一般公共预算支出的比重数据
2007-2019年各省科技支出占一般公共预算支出的比重数据 1、时间:2007-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、科技支出占一般公共预算支出的比重 4、范围:31省 5、指标解释:…...
19爬虫:使用playwright登录超级鹰
本次案例一共解决了如下两个问题: (1)如何使用playwright截图,特别是验证码图片 (2)在playwright中如何判断一个元素可见 1.截图 我们首先解决第一个问题,截图。如果前期接触过selenium的小伙…...
UVM配置机制深度解析:从字符串匹配原理到验证平台实战
1. 项目概述:从“会用”到“懂它”的跨越在芯片验证的日常工作中,uvm_config_db就像空气和水一样,无处不在。我们用它传递虚拟接口,用它开关某个子系统的功能,用它动态调整测试场景的配置。绝大多数验证工程师都能熟练…...
避开无感FOC的那些坑:我的STM32F103 SMO观测器调试心得与波形分析
避开无感FOC的那些坑:我的STM32F103 SMO观测器调试心得与波形分析 在无感FOC驱动开发中,观测器的调试往往是整个项目中最具挑战性的环节。当电机出现抖动、观测角度不准或启动失败时,如何快速定位问题并优化参数,成为工程师们必须…...
RISC-V开发踩坑实录:从编译错误‘csrr a5,mhartid’到GDB报错‘E14’的完整排错指南
RISC-V开发实战:从编译到调试的完整排错手册 在嵌入式开发领域,RISC-V架构正以惊人的速度改变着行业格局。作为一名长期从事ARM架构开发的工程师,当我第一次接触RISC-V时,本以为凭借多年的嵌入式经验可以轻松上手,却没…...
【knife4j】接口分组配置;登录拦截器放行;登录拦截器配置token;给全局异常处理类添加注解;解决上传文件不显示文件域;参数扁平化;@Parameter
Parameter Parameter 是用来为 API 接口参数添加元数据(描述信息)的注解,这些信息最终会生成到 OpenAPI 规范的文档中,供 Knife4j/Swagger UI 等工具展示 简单来说:它让 API 的使用者能清楚地知道每个参数的含义、是…...
ElevenLabs免费额度使用全攻略(2024年Q2实测版):从注册到语音生成的7个生死节点
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs免费额度的核心机制与边界认知 ElevenLabs 的免费层并非基于“每月固定时长”,而是采用动态配额(Dynamic Quota)模型,其核心由三重维度共同约束…...
构建个人技能中心:Git+Markdown打造结构化知识库实践
1. 项目概述:一个技能驱动的开源知识库 最近在整理自己的技术栈和项目经验时,我一直在思考一个问题:如何将那些零散的、在不同项目中反复验证过的“技能点”系统化地沉淀下来,形成一个可以随时查阅、复用和迭代的“个人工具箱”&…...
基于Puppeteer与GPT的微信AI助手:从自动化到智能回复的完整实现
1. 项目概述:一个能帮你自动回复微信消息的AI助手 如果你也和我一样,每天被淹没在微信的群聊、私聊和各种公众号消息里,但又不想错过重要信息,或者希望有一个“智能分身”能帮你处理一些重复性的咨询,那么这个项目你一…...
别再乱接线了!ESP32-DevKitC V4开发板引脚功能详解与避坑指南(附引脚图)
ESP32-DevKitC V4开发板引脚安全操作手册:从入门到精通的接线法则 当你第一次拿到ESP32-DevKitC V4开发板时,那些密密麻麻的引脚可能会让你感到无从下手。作为一名曾经因为误接引脚而烧毁过三块开发板的"过来人",我深知正确的引脚使…...
手把手教你为全志Tina Linux添加新SPI屏驱动:以GC9306和HX8357C为例
全志Tina Linux SPI屏驱动移植实战:从裸机到内核框架的完整指南 在嵌入式Linux开发中,LCD显示屏的驱动移植是一个常见但颇具挑战性的任务。不同于裸机环境下的直接寄存器操作,Linux内核要求驱动程序遵循特定的框架和规范。本文将深入探讨如何…...
【C语言之 CJson】从零到一:构建与解析JSON的实战指南
1. 为什么C语言需要处理JSON数据 在物联网设备和嵌入式系统开发中,JSON已经成为事实上的数据交换标准。我去年参与的一个智能家居项目就深有体会:设备配置、状态上报、控制指令全都采用JSON格式传输。用C语言处理这些数据时,手动拼接字符串不…...
