核新智能 · CoreNova

深度解析: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」解决不了:

  1. 引擎选择与 GPU 利用率: 单卡 g6.xlarge 上对话应开箱即用;可选的高吞吐 serving 又要在 4 卡 g5.12xlarge 上自动 tensor parallel,不能手改 compose 参数。
  2. EBS 设备路径随机化: 模型权重很快撑爆根卷。Nitro 实例上第二块盘映射为不可预测的 /dev/nvme*,硬编码 /dev/sdb 会在下次启动直接失败。
  3. 公开管理员抢注: 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-gpusetup-models-volumecorenova-bootstrap-admincorenova-ai-stacknginx

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.shIMDSv2 读取 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/小时成为在 VPC 内获得可审计、可复现基线的更优选择。这是我们优化的赌注。

如需在此 AMI 之上定制 RAG 或 MCP 集成,请邮件联系工程团队:CoreNovaLabs@aipalnet.cn