前言:为什么要自建AI?
最近AI工具爆火,ChatGPT、Claude、Gemini......每个都要订阅,每个月加起来至少几百块。更要命的是:
- ❌ 数据隐私:你的对话都在别人服务器上
- ❌ 访问限制:国内用不了,要折腾梯子
- ❌ 使用限制:免费版次数限制、高峰期限速
- ❌ 成本高昂:ChatGPT Plus 20美元/月,Claude Pro也要20美元
那有没有一种可能——用免费VPS + 开源模型,搭一个属于自己的AI助手?
答案是:当然可以!而且比你想象的简单。
今天我就分享一下,如何用甲骨文免费ARM实例(4核24GB)+ Ollama + Open WebUI,零成本部署一个私有ChatGPT。
我为什么选这个方案
市面上AI自托管方案很多,我选择 Ollama + Open WebUI 的理由:
| 方案 | 优点 | 缺点 | 我的评价 |
|---|---|---|---|
| Ollama + Open WebUI | 部署超简单、支持多模型、界面美观、占用资源低 | 模型质量不如GPT-4 | ⭐⭐⭐⭐⭐ 最适合白嫖党 |
| LocalAI | 兼容OpenAI API | 配置复杂 | ⭐⭐⭐ 适合开发者 |
| Text Generation WebUI | 模型选择多 | 内存占用大 | ⭐⭐⭐ 需要高配机器 |
| LM Studio | 界面友好 | 不支持Linux服务器 | ⭐⭐ 只能本地用 |
最终结论:对于免费VPS来说,Ollama + Open WebUI 是最佳选择。
准备工作:你需要什么
硬件要求
| 项目 | 最低配置 | 推荐配置 | 我的配置 |
|---|---|---|---|
| CPU | 2核 | 4核+ | 4核 ARM (Ampere A1) |
| 内存 | 8GB | 16GB+ | 24GB |
| 硬盘 | 50GB | 100GB+ | 100GB |
| 带宽 | 无限制 | 10TB/月+ | 10TB/月 |
为什么推荐甲骨文ARM?
- ✅ 免费:永久免费,不是试用
- ✅ 配置高:4核24GB,跑中等模型无压力
- ✅ 流量大:10TB/月,基本用不完
- ✅ ARM架构:Ollama对ARM优化很好
💡 提示:如果你还没有甲骨文VPS,可以看我的《白嫖党的自托管之路(一):2025年还能白嫖的VPS资源全汇总》
软件要求
- ✅ Ubuntu 22.04 或 Debian 12(本文使用 Ubuntu 22.04)
- ✅ Docker 和 Docker Compose
- ✅ 一个域名(可选,用于HTTPS访问)
第一步:安装 Docker 和 Docker Compose
SSH登录到你的VPS,执行以下命令:
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装Docker
curl -fsSL https://get.docker.com | sudo sh
# 将当前用户加入docker组(避免每次都sudo)
sudo usermod -aG docker $USER
# 退出SSH重新登录,使组权限生效
exit重新登录后,验证安装:
docker --version
docker compose version输出类似:
Docker version 24.0.7
Docker Compose version v2.23.0第二步:部署 Ollama
Ollama 是一个超级简单的大模型运行工具,支持 Llama 3、Mistral、Gemma 等开源模型。
方法一:Docker 部署(推荐)
创建目录:
mkdir -p ~/ollama
cd ~/ollama创建 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
environment:
- OLLAMA_HOST=0.0.0.0启动:
docker compose up -d验证:
docker logs ollama下载第一个模型
Ollama 支持很多模型,我推荐新手先试这几个:
| 模型 | 大小 | 内存需求 | 特点 | 适合场景 |
|---|---|---|---|---|
| llama3.2:3b | 2GB | 4GB | 最轻量,速度快 | 日常问答、代码辅助 |
| qwen2.5:7b | 4.7GB | 8GB | 中文好,性能均衡 | 中文对话、翻译 |
| llama3.1:8b | 4.7GB | 8GB | 综合能力强 | 通用任务 |
| deepseek-r1:7b | 4.1GB | 8GB | 国产新秀,推理强 | 复杂问题、逻辑推理 |
| mistral:7b | 4.1GB | 8GB | 代码能力强 | 编程辅助 |
我先下载一个 qwen2.5:7b(中文最好):
docker exec -it ollama ollama pull qwen2.5:7b下载过程:
pulling manifest
pulling 6e4264f... 100% ▕████████████████▏ 4.7 GB
pulling 824... 100% ▕████████████████▏ 7.0 KB
pulling b58... 100% ▕████████████████▏ 130 B
verifying sha256 digest
writing manifest
success测试模型:
docker exec -it ollama ollama run qwen2.5:7b进入对话界面,试试:
>>> 你好,请介绍一下自己输出:
你好!我是通义千问,由阿里云开发的AI助手。我可以回答问题、提供信息、
协助创作等。有什么我可以帮助你的吗?成功!输入 /bye 退出。
第三步:部署 Open WebUI
Ollama 虽然能用,但是命令行界面不够友好。Open WebUI 提供了一个类似ChatGPT的网页界面,非常好用。
创建部署文件
cd ~
mkdir open-webui
cd open-webui创建 docker-compose.yml:
version: '3.8'
services:
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://你的VPS公网IP:11434
# 如果Ollama在同一台机器,用内网地址
# - OLLAMA_BASE_URL=http://172.17.0.1:11434
extra_hosts:
- "host.docker.internal:host-gateway"⚠️ 重要:把
OLLAMA_BASE_URL改成你的实际地址:
- 如果Ollama和Open WebUI在同一台机器:
http://172.17.0.1:11434- 如果在不同机器:
http://你的Ollama服务器IP:11434
启动:
docker compose up -d查看日志:
docker logs -f open-webui第四步:开放防火墙端口
甲骨文VPS需要同时开启两个防火墙!
1. 系统防火墙(iptables)
sudo iptables -I INPUT 6 -p tcp --dport 3000 -j ACCEPT
sudo iptables -I INPUT 6 -p tcp --dport 11434 -j ACCEPT
sudo netfilter-persistent save2. 甲骨文安全列表
登录甲骨文控制台:
- 进入 Networking → Virtual Cloud Networks
- 选择你的VCN → 点击子网
- 点击 Default Security List
- Add Ingress Rules:
Source CIDR: 0.0.0.0/0
IP Protocol: TCP
Destination Port Range: 3000
Description: Open WebUI
Source CIDR: 0.0.0.0/0
IP Protocol: TCP
Destination Port Range: 11434
Description: Ollama API第五步:访问 Open WebUI
打开浏览器,访问:
http://你的VPS公网IP:3000首次访问会要求创建管理员账号:
- 输入邮箱(随便填,不验证)
- 设置密码
- 点击 Sign Up
进入后,界面就像ChatGPT一样!
基础设置
- 选择模型:点击左上角模型下拉框,选择
qwen2.5:7b 调整参数:点击右上角设置 → Parameters
- Temperature:
0.7(创造性,数值越高越随机) - Top P:
0.9 - Max Tokens:
2048
- Temperature:
测试对话
试试问它:
写一个Python脚本,实现快速排序算法它会给你完整代码!
第六步:下载更多模型
Open WebUI支持在线下载模型,不用命令行。
点击右上角 设置 → Models,在搜索框输入模型名,比如:
llama3.2:3b- 最轻量deepseek-r1:7b- 推理能力强mistral:7b- 代码能力好
点击 Pull 即可下载。
模型对比实测
我在甲骨文ARM(4核24GB)上测试了几个模型:
| 模型 | 内存占用 | 响应速度 | 中文质量 | 代码质量 | 综合评分 |
|---|---|---|---|---|---|
| llama3.2:3b | 2.1GB | ⚡⚡⚡⚡⚡ | ⭐⭐⭐ | ⭐⭐⭐ | 适合日常对话 |
| qwen2.5:7b | 5.2GB | ⚡⚡⚡⚡ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 中文最佳 |
| llama3.1:8b | 5.5GB | ⚡⚡⚡⚡ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 综合能力强 |
| deepseek-r1:7b | 4.8GB | ⚡⚡⚡ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 推理和代码最强 |
| mistral:7b | 4.6GB | ⚡⚡⚡⚡ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 编程辅助 |
我的推荐组合:
- 日常中文对话:qwen2.5:7b
- 写代码:deepseek-r1:7b 或 mistral:7b
- 轻量快速任务:llama3.2:3b
第七步:配置HTTPS(可选)
如果你有域名,可以配置HTTPS,更安全。
使用 Nginx Proxy Manager(推荐)
我写过详细教程,参考我的另一篇文章:《Docker工具箱:Nginx Proxy Manager 反向代理》
简单步骤:
- 部署 Nginx Proxy Manager
- 添加 Proxy Host,指向
http://你的IP:3000 - 申请 Let's Encrypt SSL证书
- 访问
https://ai.你的域名.com
性能测试:能打败ChatGPT吗?
实测对比
我用同一个问题测试了几个AI:
问题:写一个Vue3组件,实现待办事项列表,支持增删改查
| AI工具 | 响应时间 | 代码质量 | 是否能运行 | 费用 |
|---|---|---|---|---|
| ChatGPT 3.5 | 3秒 | ⭐⭐⭐⭐ | ✅ | 免费(有限制) |
| ChatGPT 4.0 | 8秒 | ⭐⭐⭐⭐⭐ | ✅ | $20/月 |
| Claude 3.5 | 5秒 | ⭐⭐⭐⭐⭐ | ✅ | $20/月 |
| qwen2.5:7b | 12秒 | ⭐⭐⭐⭐ | ✅ | 免费 |
| deepseek-r1:7b | 10秒 | ⭐⭐⭐⭐ | ✅ | 免费 |
| llama3.1:8b | 11秒 | ⭐⭐⭐ | ⚠️ 需小改 | 免费 |
结论:
- 质量:开源模型 < GPT-3.5 < GPT-4 / Claude
- 速度:自托管模型稍慢(受服务器性能影响)
- 性价比:自托管完胜(免费 + 数据私有)
适合场景:
- ✅ 日常对话、翻译、文案撰写
- ✅ 代码辅助、调试、解释
- ✅ 数据隐私要求高的任务
- ❌ 复杂推理(不如GPT-4)
- ❌ 最新信息查询(无联网能力)
进阶玩法
1. 开启联网功能(Web Search)
Open WebUI 支持集成搜索引擎,让AI可以查询实时信息。
进入 设置 → Web Search:
- 启用 Web Search
- 搜索引擎选择:DuckDuckGo(免费)
- 或者配置 Google Custom Search API
2. 接入API,给其他应用用
Ollama 提供 OpenAI 兼容的 API:
curl http://你的IP:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [
{"role": "user", "content": "你好"}
]
}'可以用在:
- VSCode Copilot 替代品
- 自己的应用里
- Telegram Bot
3. 多用户管理
Open WebUI 支持多用户:
- 管理员可以创建其他账号
- 每个用户有独立对话历史
- 可以设置权限(哪些用户能用哪些模型)
常见问题与故障排除
Q1: 模型下载太慢怎么办?
方案A:使用国内镜像
# 设置环境变量
export OLLAMA_MIRROR=https://ollama.ai.cache.wpscdncs.com
docker exec -it ollama ollama pull qwen2.5:7b方案B:手动下载模型文件
- 去 Hugging Face 搜索模型
- 下载 GGUF 格式
- 导入到 Ollama
Q2: 内存不够,总是OOM?
解决方案:
- 使用更小的模型(llama3.2:3b 只需4GB内存)
调整并发数限制:
docker exec -it ollama ollama serve --max-loaded-models 1开启 Swap:
sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
Q3: 响应速度太慢?
优化方法:
- 使用量化模型(Q4、Q5版本更快)
调整
num_ctx(上下文长度):docker exec -it ollama ollama run qwen2.5:7b --num-ctx 2048- 关闭不用的模型(释放内存)
Q4: 无法访问3000端口?
检查步骤:
# 1. 确认容器运行
docker ps | grep open-webui
# 2. 确认端口监听
sudo netstat -tlnp | grep 3000
# 3. 检查防火墙
sudo iptables -L -n | grep 3000
# 4. 查看容器日志
docker logs open-webuiQ5: 如何升级到最新版?
cd ~/open-webui
docker compose pull
docker compose up -d成本核算:真的免费吗?
| 项目 | 成本 | 说明 |
|---|---|---|
| VPS | $0/月 | 甲骨文永久免费 |
| 域名(可选) | ¥9/年 | 便宜的.xyz域名 |
| SSL证书 | $0 | Let's Encrypt免费 |
| 电费 | $0 | 云服务器无电费 |
| AI API | $0 | 开源模型免费 |
| 总计 | ≈$0-1/月 | 几乎零成本 |
对比:
- ChatGPT Plus:$20/月 = ¥144/月
- Claude Pro:$20/月 = ¥144/月
- 自托管方案:$0/月
一年省下:¥3456 💰
我踩过的坑
坑1:Ollama连不上Open WebUI
原因:Docker网络隔离
解决:
# 在 open-webui 的 docker-compose.yml 中加入
extra_hosts:
- "host.docker.internal:host-gateway"
# 然后OLLAMA_BASE_URL改成:
- OLLAMA_BASE_URL=http://host.docker.internal:11434坑2:模型下载后找不到
原因:Open WebUI 和 Ollama 的模型存储位置不同
解决:只在 Ollama 里下载模型,Open WebUI 会自动识别
坑3:甲骨文实例突然连不上
原因:防火墙被重置
解决:保存 iptables 规则
sudo apt install iptables-persistent
sudo netfilter-persistent save总结
这套方案已经在我的甲骨文VPS上稳定运行3个月了,体验总结:
✅ 优点
- 完全免费:零成本部署和运行
- 数据私有:对话记录在自己服务器
- 无限使用:没有次数限制、速率限制
- 多模型切换:可以同时跑多个模型
- 离线可用:不依赖外网API
❌ 缺点
- 性能不如GPT-4:复杂推理能力稍弱
- 需要一定技术门槛:要会基础Linux命令
- 模型更新慢:不像ChatGPT实时更新
- 无联网能力:需要手动配置(或使用插件)
🎯 适合人群
- 注重数据隐私的用户
- 想学习AI技术的开发者
- 不想订阅多个AI服务的白嫖党
- 需要自定义AI能力的团队
参考资源
💬 有问题欢迎留言!
如果这篇文章帮到你,欢迎分享给更多人。
如果遇到问题,可以在评论区讨论,我会尽量回复。