深度解析:AWS 上加固的多 GPU 私有 AI 推理栈(Open WebUI + Ollama + 可选 vLLM)
CoreNova 如何在 Ubuntu GPU EC2 上工程化落地私有 AI 沙箱——动态 EBS 挂载、防抢注管理员、Ollama 默认对话引擎与可选多卡 vLLM——让团队跳过数天的集成踩坑。
标签 AWS Marketplace · AMI · EC2 · GPU · Open WebUI · Ollama · vLLM · AI 推理
在企业 VPC 内部署大语言模型,早已不是「尝鲜」——而是合规与数据主权要求。Open WebUI、Ollama、vLLM 在个人笔记本上看起来很简单;把同一套栈搬到 AWS 加固 GPU 基础设施上,会遇到三个生产级瓶颈,而「装 Docker + docker compose up」解决不了:
- 引擎选择与 GPU 利用率: 单卡
g6.xlarge上对话应开箱即用;可选的高吞吐 serving 又要在 4 卡g5.12xlarge上自动 tensor parallel,不能手改 compose 参数。 - EBS 设备路径随机化: 模型权重很快撑爆根卷。Nitro 实例上第二块盘映射为不可预测的
/dev/nvme*,硬编码/dev/sdb会在下次启动直接失败。 - 公开管理员抢注: Open WebUI 首启若开放注册,爬虫可能比你的 DevOps 更早抢到 admin——整栈被劫持。
本文说明 Enterprise Secure AI Sandbox(已在 AWS Marketplace 上架)如何在 Ubuntu 22.04 LTS Hardened GPU AMI 加固链之上解决这些问题。
架构概览
AI 服务隔离在 /opt/corenova/ai/;容器启动之前在 OS 层完成硬件与存储探测。
[ 公网 / VPC 流量 ]
│ HTTPS 443(Nginx 反向代理)
▼
[ Open WebUI ] signup=false · 管理员密码 = Instance ID
│
▼ localhost:11434
[ Ollama ] 默认对话引擎 · 首启拉取 qwen3:0.6b
│
▼
[ /mnt/models ] 第二块 EBS 自动挂载(by-id,非 /dev/sdX)
可选(默认关闭):
[ vLLM OpenAI API ] localhost:8000 · 自动 tensor-parallel-size
默认路径: Ollama 承担全部对话。可选路径: sudo systemctl start corenova-ai-vllm 启用 vLLM。单 GPU 上请勿同时跑 Ollama 与 vLLM。
1. 启动顺序:Compose 之前配置 GPU runtime
Packer 在非 GPU 构建机上烘焙镜像,因此 NVIDIA Container Toolkit 在首次 GPU 实例启动时配置:
# configure-docker-gpu.sh(节选)
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker
Systemd 顺序:
corenova-docker-gpu → setup-models-volume → corenova-bootstrap-admin → corenova-ai-stack → nginx
Nginx 在 443 终结 TLS(首启自签证书;生产环境请替换),反代 Open WebUI 127.0.0.1:8080。80 端口重定向到 HTTPS——不是 HTTP 3000。
2. 通过 NVMe by-id 动态挂载 EBS
第一块非根 Amazon EBS 卷挂载到 /mnt/models,使用 /dev/disk/by-id/ 稳定符号链接:
MOUNT_POINT="/mnt/models"
ROOT_DEV="$(readlink -f "$(findmnt -n -o SOURCE /)" | sed 's/p[0-9]*$//')"
for id in /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol*; do
dev="$(readlink -f "$id")"
base_dev="$(echo "$dev" | sed 's/p[0-9]*$//')"
[[ "$base_dev" == "$ROOT_DEV" ]] && continue
DATA_DEV="$dev"
break
done
# 仅无文件系统时格式化;UUID 写入 fstab
if ! blkid "$DATA_DEV" >/dev/null 2>&1; then
mkfs.ext4 -F "$DATA_DEV"
fi
UUID="$(blkid -s UUID -o value "$DATA_DEV")"
echo "UUID=${UUID} ${MOUNT_POINT} ext4 defaults,nofail 0 2 # corenova-models-ebs" >> /etc/fstab
mount "$MOUNT_POINT"
Ollama 模型在 /mnt/models/ollama;vLLM 的 Hugging Face 缓存在 /mnt/models/vllm。无数据卷时回退到根文件系统——适合试点,不适合 7B+ 权重。
3. 防抢注管理员:IMDSv2 + 关闭公开注册
公开注册永久关闭。首启 bootstrap-admin.sh 经 IMDSv2 读取 EC2 Instance ID 并写入运行时 .env:
TOKEN=$(curl -sf -X PUT "http://169.254.169.254/latest/api/token" \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
INSTANCE_ID=$(curl -sf -H "X-aws-ec2-metadata-token: ${TOKEN}" \
"http://169.254.169.254/latest/meta-data/instance-id")
cat > /opt/corenova/ai/compose/.env <<EOF
ENABLE_SIGNUP=false
WEBUI_ADMIN_EMAIL=admin@local.host
WEBUI_ADMIN_PASSWORD=${INSTANCE_ID}
OLLAMA_BASE_URL=http://127.0.0.1:11434
DEFAULT_MODELS=qwen3:0.6b
EOF
登录: https://YOUR_PUBLIC_IP/ · 邮箱 admin@local.host · 密码 = Instance ID。只有 AWS 控制台或 SSH 密钥持有者能获知初始密码。首登后请修改密码。
我们还修复了 Ollama 网络细节:容器内 OLLAMA_HOST=0.0.0.0:11434(非 127.0.0.1),配合 host 网络模式时 Open WebUI 健康检查才能通过。
4. Ollama 默认引擎与自动拉模
管理员 bootstrap 后自动拉取小模型,无需手工 ollama pull:
# pull-default-model.sh 等待 Ollama 就绪后:
docker exec corenova-ollama ollama pull qwen3:0.6b
首启时间线(典型 g6/g4dn): 0–2 分钟 NVIDIA 驱动 + Docker GPU runtime;2–6 分钟 Ollama 拉模;6–8 分钟 WebUI + Nginx 就绪。首次 HTTPS 登录请预留 5–10 分钟。
5. 可选 vLLM 与动态 tensor parallel
需要 OpenAI 兼容高吞吐 API 时:
# run-vllm.sh
GPU_COUNT=$(nvidia-smi -L | wc -l | tr -d ' ')
export VLLM_TENSOR_PARALLEL_SIZE="${GPU_COUNT}"
docker compose --profile vllm up -d vllm
vLLM 绑定 127.0.0.1:8000;Open WebUI 可通过 OPENAI_API_BASE_URL 指向它。默认模型 Qwen/Qwen2.5-0.5B-Instruct(可在 .env 覆盖)。
6. 加固基线
本产品继承 GPU Base AMI 的 CIS 导向基线:SSH 密钥登录、UFW、auditd、AIDE、自动安全更新、NVIDIA Driver 550、CUDA 12.4。OpenSCAP 扫描产物随产品交付;最终合规责任由买家承担。
自建 vs 购买:算力与时间账
NVIDIA 容器工具链、NVMe-by-id 挂载自动化、防抢注 WebUI bootstrap、可复现 Packer 流水线——即使熟悉每个组件的团队,通常也要花数天集成与验证。
CoreNova 将上述架构打包为零维护 AMI:
- 软件费: $0.25/小时 · 7 天免费试用(EC2/GPU 费用另计)
- 交付: AWS Marketplace
- 支持: CoreNovaLabs@aipalnet.cn
若你能在周末自己调通整套栈,当然应该自建——除非你的工程师时薪让 $0.25/小时成为在 VPC 内获得可审计、可复现基线的更优选择。这是我们优化的赌注。
如需在此 AMI 之上定制 RAG 或 MCP 集成,请邮件联系工程团队:CoreNovaLabs@aipalnet.cn。