N150小主机搭建小型数据中心:PVE虚拟化+单线多拨+容器NewAPI
系统目标达成:经过数天的调试与优化,从PVE虚拟化环境到IStoreOS网关的多拨配置,再到fnOS上NewAPI的稳定部署,整个系统最终实现了预期的功能与性能目标。
缘起:为什么要折腾这套系统?
此前使用旧笔记本运行Docker服务,但设备老化导致风扇噪音明显,功耗较高。为获得更稳定的运行环境与更低的长期运行成本,在双12期间配置了一台基于Intel N150平台的小主机。
系统目标:
- 基础服务:NAS + Docker容器(24小时运行)
- 主路由功能:替代运营商提供的默认网关
- 全局代理分流:基于OpenClash
- 多模型API聚合:部署NewAPI服务
核心架构:基于PVE的虚拟化部署,实现资源隔离与功能模块化
硬件篇
CPU: Intel N150 核心: 4核4线程 TDP: 6W
内存: 8GB DDR4 通道: 单通道 备注: 计划升级至16GB
存储: 系统盘: 256GB NVMe
网络: WAN口: enp2s0 (直通IStoreOS) LAN口: enp3s0 (内部交换) 规格: 双2.5GbE该配置在性能与功耗间取得了较好的平衡,能够满足当前及可预见未来的应用需求。
PVE虚拟化:从零开始
安装PVE
PVE的安装过程遵循标准流程:下载官方ISO镜像、制作启动介质、引导安装。关键配置在于存储分区,建议将系统盘全部划归PVE管理,数据磁盘可在后续阶段挂载,以保持配置的灵活性。
创建虚拟机
IStoreOS (网关)
类型: Linux 6.x - 2.6内核CPU: 2核内存: 1GB硬盘: 8GB (精简配置)网络: - vmbr0 (WAN): 网卡直通给IStoreOS - vmbr1 (LAN): 连内部交换机fnOS (NAS)
类型: Linux 6.x - 2.6内核CPU: 3核 (给Docker预留)内存: 4GB (balloon动态调节)硬盘: 64GB + 额外挂载SATA硬盘网络: vmbr1 (LAN)
两个系统

IStoreOS:单线多拨配置与解决方案
配置周期:约三天时间,期间进行了多次配置迭代与调试。
基础网络配置
完成常规PPPoE拨号设置,配置LAN口IP为192.168.1.1,确保基础路由功能正常。
多拨配置过程
第一阶段:插件安装与虚拟网卡配置
需要安装两个核心插件:
macvlan– 创建虚拟网卡mwan3– 实现流量负载均衡
# 在IStoreOS后台操作路径系统 → 软件包 → 更新软件包列表安装相应包创建虚拟网卡命令:
ip link add link enp2s0 name macvlan0 type macvlan mode bridgeip link set macvlan0 up
第二阶段:配置问题诊断与解决
问题一:macvlan接口无法正常工作
- 原因分析:当前内核版本存在macvlan驱动兼容性问题
- 解决方案:改用VLAN子接口替代
ip link add link enp2s0 name enp2s0.10 type vlan id 10问题二:mwan3负载均衡配置复杂
# 关键配置 /etc/config/mwan3config member 'wan_m1' option interface 'wan' option weight '1' option reliability '2' # reliability参数设置为2时连接最为稳定问题三:代理分流与DNS泄露
- 现象:开启OpenClash后部分网络请求未能通过代理(参见之前博客文章)
- 原因分析:多拨配置后mwan3接管了虚拟网卡流量,DNS解析请求绕过透明代理机制
- 解决方案:配置iptables例外规则
# 在IStoreOS中执行iptables -t mangle -A mwan3_hook -p tcp --dport 23456 -j RETURNiptables -t mangle -A mwan3_hook -p udp --dport 53 -j RETURN最终可用配置
网络配置
config interface 'wan' option proto 'pppoe' option ifname 'enp2s0' option username '你的账号' option password '你的密码' option dns '119.29.29.29 223.5.5.5'
config interface 'wan2' option proto 'pppoe' option ifname 'macvlan0' # 或者是你用的vlan子接口 option username '你的账号' option password '你的密码'OpenClash配置(局域网代理)
# 给局域网设备开放代理config rule option dest_port '23456' option src_ip '192.168.1.0/24' option target 'REJECT'
# DNS防泄露dns: enable: true nameserver: - 119.29.29.29 fallback: - tls://8.8.8.8:853 fallback-filter: geoip: true最终效果:物理带宽从100M提升至300M以上,视频流媒体与API调用响应时间显著改善。
fnOS:轻舟NAS部署
网络正确配置后,fnOS部署过程相对顺利,主要包含以下步骤:
1. 网络配置确认
确保fnOS虚拟机正确配置:
- IP地址: 192.168.1.200 (静态)
- 网关: 192.168.1.1 (指向IStoreOS)
- DNS: 192.168.1.1 (IStoreOS处理DNS解析)
2. Docker环境配置
由于fnOS自带Docker服务,无需额外配置镜像加速器。通过fnOS后台即可管理容器:
# 操作路径fnOS后台 → 容器 → 设置
# 备注:由于OpenClash已配置代理,无需设置国内镜像加速3. 目录结构准备
# 创建基础目录结构mkdir -p /volume1/docker/{newapi,postgres,backup}整体配置流程较为简单,fnOS自带的Docker管理界面足够满足基础需求。
代理闭环的思考
设计目标不仅是实现NewAPI的正常访问,更需要在安全性与性能之间建立平衡:
NewAPI的请求路径:容器 → fnOS网卡 → vmbr1交换 → IStoreOS的Clash → 根据规则: - OpenAI/Anthropic → 代理 → 国外 - 文心/千问 → 直连 → 国内 - 域名解析: 全走Clash的DNS网络架构遵循功能分离原则,网关专注于路由与代理分流,NAS负责存储与容器服务,各组件职责明确。
备份策略
系统部署完成后,需要建立灾难恢复机制,确保在故障情况下能够快速恢复。
# 在PVE Shell添加crontab,每周日凌晨执行#!/bin/bash/root/backup-pve.sh
DATE=$(date +%Y%m%d)STORAGE="/mnt/backups/pve"
# 备份VMqm backup 100 $STORAGE/istoreos-$DATE.vma.zst --mode snapshotqm backup 101 $STORAGE/fnos-$DATE.vma.zst --mode snapshot
# 清理老备份(只保留最近3份)find $STORAGE -name "*.vma.zst" -mtime +21 -deleteNAS上的重要数据,则通过rsync同步到外接硬盘。
监控与扩展
系统稳定后,我发现还需要监控能力,又在fnOS上装了几个容器:
# 监控全家桶(可选)services: netdata: image: netdata/netdata ports: ["19999:19999"] privileged: true
portainer: image: portainer/portainer-ce ports: ["9000:9000"] volumes: ["/var/run/docker.sock:/var/run/docker.sock"]避坑清单
| 问题 | 原因 | 解决方案 |
|---|---|---|
| PVE虚拟机卡启动 | 网卡配置错误 | 检查vmbr桥接配置 |
| 多拨掉线 | DNS污染导致连接不稳定 | 清理DNS缓存,修改mwan3配置 |
| Docker连不上DB | 容器网络与数据库不在同一subnet | 确认使用相同bridge network |
| OpenClash日志为空 | 代理模式设置不当 | 改为”规则模式”而非”全局模式” |
| NAS磁盘写入权限 | Docker映射目录权限问题 | 指定用户ID或调整目录owner权限 |
最终成果
- N150小主机:功耗平均8W,全年不到60元电费
- IStoreOS网关:稳定多拨6个会话,带宽翻倍
- fnOS NAS:Docker服务稳定运行,NewAPI调用响应及时
- 代理分流:国内应用不受影响,国外服务稳定加速
Next steps:
- 接入媒体服务(Jellyfin)
- 加WireGuard异地访问
- 完善监控告警
如果你也在用N150或者PVE虚拟化,欢迎交流经验
该系统实现了预期的功能整合,在单台硬件设备上运行多项服务,在成本控制与功能完备性间取得了良好平衡。
注: 本文涉及的命令与配置均在生产环境实际测试,使用相关命令与配置时,请结合自身网络环境进行调整与验证。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
部分内容可能已过时