博客 · AI
在 Mac mini 服务器上运行 Ollama
在 Mac mini 上安装 Ollama,选择适合 16GB 或 24GB 内存的模型,作为后台服务运行,开放 OpenAI 兼容 API 并做好安全防护。

Mac mini 安静、省电,很适合做私有 LLM 接口。本文介绍如何在 Mac mini 服务器上运行 Ollama,从安装一直到提供安全的 OpenAI 兼容 API。
准备工作
- 一台 Apple silicon 的 Mac mini,统一内存至少 16GB,24GB 会宽裕很多。
- 终端的管理员权限,本地或 SSH 均可。
- 足够的磁盘空间存放模型。4-bit 的 7–8B 模型大约占 4–5GB,14B 模型大约 8–10GB。
效果好的原因在于统一内存:GPU 与 CPU 从同一个内存池读取模型权重,没有单独的显存上限。macOS 默认允许 GPU 使用大部分内存,约三分之二到四分之三。
第 1 步:安装 Ollama
macOS 上常见的安装方式有两种。通过 SSH 管理的服务器,用 Homebrew 最方便:
brew install ollama
ollama --version
也可以从 ollama.com 下载 macOS 应用。应用会在菜单栏常驻,并在登录时启动服务,适合桌面使用。无界面的服务器用 Homebrew 版本配合下文的 launchd 更容易控制。
先在前台启动一次,确认能正常运行:
ollama serve
在另一个终端确认它在默认端口 11434 上响应:
curl http://127.0.0.1:11434/api/version
第 2 步:按内存大小拉取模型
经验法则:4-bit 量化模型每十亿参数大约需要 0.5–0.7GB 内存,另外还要给上下文留空间。计算时要以 GPU 可用的那部分内存为准,而不是总内存。
| Mac mini 内存 | 较宽裕的模型规模(4-bit) | 示例 |
|---|---|---|
| 16GB | 7–8B | llama3.1:8b、qwen2.5:7b |
| 24GB | 约 14B 以内 | qwen2.5:14b、phi4:14b |
ollama pull llama3.1:8b
ollama run llama3.1:8b "Summarise what a launchd agent is in two sentences."
16GB 机器或许能加载 14B 模型,但留给上下文和 macOS 本身的空间很少,容易触发交换而变慢。全天运行的服务器应留在宽裕区间内。内存计算的完整解释见Apple silicon 本地 LLM 内存指南。
第 3 步:选择量化精度
多数 Ollama 模型标签默认使用 Q4_K_M 之类的 4-bit 量化,这是不错的默认值。其他标签可以在内存和质量之间取舍:
- Q4_K_M:常规平衡点,体积小、速度快,聊天、摘要、编码辅助都够用。
- Q5_K_M / Q6_K:稍大一些,更接近原始质量。内存有富余时值得一试。
- Q8_0:体积约为 4-bit 的两倍。适合在大内存机器上跑小模型,比如在 24GB 上跑 8B。
ollama pull llama3.1:8b-instruct-q8_0
ollama list
实用原则:只要能宽裕地装下,4-bit 的大模型通常胜过 8-bit 的小模型。拉取前先在 ollama.com 查看该模型的标签列表,不同模型提供的变体不一样。
第 4 步:让 Ollama 作为后台服务运行
快捷方式:brew services
brew services start ollama
brew services list
这会注册一个 launchd agent,登录时启动 Ollama,进程退出后自动重启。它默认只监听本机,这是安全的默认值。
可配置方式:自己写 launchd plist
如果要设置监听地址、keep-alive 等环境变量,就自己写一个 agent。先执行 brew services stop ollama,然后把下面内容保存为 ~/Library/LaunchAgents/com.example.ollama.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>com.example.ollama</string>
<key>ProgramArguments</key>
<array><string>/opt/homebrew/bin/ollama</string><string>serve</string></array>
<key>EnvironmentVariables</key>
<dict>
<key>OLLAMA_HOST</key><string>127.0.0.1:11434</string>
<key>OLLAMA_KEEP_ALIVE</key><string>24h</string>
</dict>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>StandardErrorPath</key><string>/tmp/ollama.err.log</string>
</dict></plist>
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.ollama.plist
launchctl print gui/$(id -u)/com.example.ollama | head
LaunchAgent 只在该用户登录期间运行。远程 Mac 保持登录状态的话没有问题。如果需要在开机后、无人登录时就启动,改用 /Library/LaunchDaemons 下的 LaunchDaemon,加上 UserName 键,并在环境变量中设置 HOME,让模型存放在正确的位置。
第 5 步:OLLAMA_HOST 与 keep-alive
OLLAMA_HOST 决定服务监听的地址和端口。127.0.0.1:11434 只接受本机连接;0.0.0.0:11434 接受所有网卡上的连接,而 Ollama 本身没有认证,所以只有在你可控的防火墙或代理之后才应该监听全部地址。保持监听本机、再通过隧道或代理访问,会更安全。
OLLAMA_KEEP_ALIVE 决定模型在最后一次请求后在内存中保留多久。默认只有几分钟,之后的下一次请求要重新加载。独享服务器上可以设得更长,例如 24h,或用 -1 表示一直保留,响应会更及时。也可以在单个请求里用 keep_alive 字段设置。查看已加载的模型:
ollama ps
另外两个相关设置:OLLAMA_CONTEXT_LENGTH 提高默认上下文长度,OLLAMA_NUM_PARALLEL 让一个模型同时处理多个请求。两者都会占用更多内存,建议逐步调高并观察 ollama ps。
第 6 步:使用 OpenAI 兼容接口
Ollama 在 /v1 下提供 OpenAI 兼容 API,很多现成工具只需改一下 base URL 就能用。
curl http://127.0.0.1:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "llama3.1:8b",
"messages": [{"role": "user", "content": "Write a haiku about build servers."}]}'
使用官方 OpenAI Python 客户端:
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:11434/v1", api_key="ollama")
r = client.chat.completions.create(
model="llama3.1:8b",
messages=[{"role": "user", "content": "Hello"}],
)
print(r.choices[0].message.content)
客户端库要求填写 API key,但 Ollama 并不校验。正因如此,访问控制必须放在它前面。
第 7 步:安全的远程访问
方案 A:SSH 隧道
最简单的安全方案。Ollama 保持只监听本机,从你的电脑转发端口:
ssh -N -L 11434:127.0.0.1:11434 admin@your-mac-mini
本地工具直接调用 http://127.0.0.1:11434/v1,流量经 SSH 加密。适合个人开发者或使用 SSH 密钥的小团队。
方案 B:带认证的反向代理
给应用或多个用户使用时,在前面放一个带 TLS 和认证的反向代理。用 caddy hash-password 生成哈希后,一个最小的 Caddy 配置如下:
llm.example.com {
basic_auth {
apiuser $2a$14$REPLACE_WITH_HASH
}
reverse_proxy 127.0.0.1:11434
}
只要域名指向这台机器、80 和 443 端口可访问,Caddy 会自动申请证书。租用的 Mac 能否接受公网入站流量取决于其网络配置,如有需要请告诉我们你的需求。规模更大时,可以在代理层为每个用户分配 API key 并设置限流。
在租用的 Mac mini 上运行
以上步骤在 Hatmac 的机器上同样适用:每台都是独享的物理 Mac,拥有完整终端,不是共享虚拟机。Ollama 由你自行安装,SSH 可以作为访问方式之一开通。24GB 的 Mac mini M6 适合 14B 级模型;16GB 的 Mac mini M4 能跑 7–8B 模型,12 个月租期 $119/月起。更多信息见 Mac mini LLM 服务器页面;如需更大的模型,请看 Mac Studio 本地 LLM 指南。
常见问题
16GB 的 Mac mini 能作为 Ollama 服务器吗?
可以。4-bit 的 7–8B 模型运行很宽裕。14B 级模型建议用 24GB,给上下文和系统留出更多空间。
把 OLLAMA_HOST 设为 0.0.0.0 安全吗?
只有在防火墙或带认证的代理之后才安全。Ollama 没有内置认证,能访问该端口的人都能调用。
OpenAI 客户端库能直接用于 Ollama 吗?
可以。把 base URL 指向服务器的 /v1,API key 随便填一个占位值即可。