AI-基于i3-8100和Dell主板的PVE家用服务器部署方案
# 家用PVE服务器部署方案
## 硬件配置概述
- **CPU**: Intel i3-8100 (4核4线程)
- **主板**: 戴尔0284JF
- **内存**: 16GB DDR4
- **存储**:
- 526GB M.2 NVMe (系统盘+虚拟机存储)
- 2×500GB HDD (RAID1用于重要数据)
- 1TB HDD (媒体/下载等)
- **网络**: 1个千兆网口(可扩展)
## 1. PVE系统安装与基础优化
### 安装PVE 8.x
1. 下载最新PVE ISO镜像
2. 制作启动U盘
3. 安装到NVMe SSD:
- 分区: ext4文件系统
- 根分区: 50GB
- 剩余空间创建thin LVM用于虚拟机存储
4. 设置主机名、IP地址(建议静态IP)
### 基础优化
```bash
# 更新源
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.aliyun.com|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.aliyun.com/debian-security|g' /etc/apt/sources.list
# 更新系统
apt update && apt dist-upgrade -y
# 安装常用工具
apt install -y curl wget git htop iftop iotop tmux
# 禁用企业源
sed -i 's|deb https://enterprise.proxmox.com|#deb https://enterprise.proxmox.com|g' /etc/apt/sources.list.d/pve-enterprise.list
# 添加非订阅源
echo "deb http://download.proxmox.com/debian/pve $(lsb_release -sc) pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
# 禁用订阅提示
sed -i "s|data.status !== 'Active'|false|" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
# 设置SWAP (4GB)
dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
# 调整内核参数
echo "vm.swappiness=10" >> /etc/sysctl.conf
echo "vm.vfs_cache_pressure=50" >> /etc/sysctl.conf
sysctl -p
```
## 2. 存储配置
### 创建存储池
1. 500GB HDD ×2 配置为RAID1:
```bash
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sb
mkfs.ext4 /dev/md0
mkdir /mnt/raid1
echo "/dev/md0 /mnt/raid1 ext4 defaults 0 0" >> /etc/fstab
mount -a
```
2. 1TB HDD 单独使用:
```bash
mkfs.ext4 /dev/sdc
mkdir /mnt/storage
echo "/dev/sdc /mnt/storage ext4 defaults 0 0" >> /etc/fstab
mount -a
```
3. 在PVE Web界面添加存储:
- 添加LVM-thin (剩余NVMe空间)
- 添加目录存储: /mnt/raid1 (命名为raid1)
- 添加目录存储: /mnt/storage (命名为storage)
## 3. 网络配置
### 单网口配置(可扩展)
```bash
# 创建Linux Bridge
auto vmbr0
iface vmbr0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
bridge-ports enp3s0
bridge-stp off
bridge-fd 0
```
## 4. 核显直通配置
```bash
# 编辑grub
nano /etc/default/grub
# 修改GRUB_CMDLINE_LINUX_DEFAULT行:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off"
# 更新grub
update-grub
# 加载模块
echo "vfio" >> /etc/modules
echo "vfio_iommu_type1" >> /etc/modules
echo "vfio_pci" >> /etc/modules
echo "vfio_virqfd" >> /etc/modules
# 屏蔽驱动
echo "blacklist snd_hda_intel" > /etc/modprobe.d/blacklist.conf
echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/blacklist.conf
echo "blacklist i915" >> /etc/modprobe.d/blacklist.conf
# 获取核显硬件ID
lspci -nn | grep -E "VGA|Audio"
# 示例输出: 00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 630 [8086:5912]
echo "options vfio-pci ids=8086:5912,8086:5916" > /etc/modprobe.d/vfio.conf
# 更新initramfs
update-initramfs -u
reboot
```
## 5. 虚拟机部署规划
### 资源分配原则
- PVE宿主机保留: 2GB内存 + 1个CPU核心
- 剩余资源: 14GB内存 + 3个CPU核心
| 虚拟机 | CPU核心 | 内存 | 存储 | 备注 |
|--------|---------|------|------|------|
| 飞牛NAS | 2核 | 4GB | raid1: 200GB, storage: 500GB | 直通SATA控制器 |
| Docker主机 | 2核 | 4GB | LVM-thin: 50GB | |
| Win10 LTSB | 1核 | 4GB | LVM-thin: 80GB | 直通核显 |
| HomeAssistant | 1核 | 2GB | LVM-thin: 32GB | |
| 其他服务 | 共享 | 共享 | 按需 | 如AdGuard Home等 |
## 6. 虚拟机详细配置
### 飞牛NAS (VM 100)
1. 创建虚拟机:
- 类型: Linux
- BIOS: SeaBIOS
- 机器: q35
- 磁盘: 50GB (LVM-thin)
- CPU: 2核心, 类型host
- 内存: 4096MB, ballooning启用
- 网络: virtio, bridge vmbr0
2. 直通SATA控制器:
```bash
# 查找SATA控制器ID
lspci -nn | grep SATA
# 添加到虚拟机配置
echo "hostpci0: 01:00.0,pcie=1" >> /etc/pve/qemu-server/100.conf
```
3. 安装飞牛NAS系统
### Docker主机 (VM 101)
1. 创建虚拟机:
- 类型: Linux
- BIOS: SeaBIOS
- 机器: q35
- 磁盘: 50GB (LVM-thin)
- CPU: 2核心, 类型host
- 内存: 4096MB, ballooning启用
- 网络: virtio, bridge vmbr0
2. 安装Debian/Ubuntu最小系统
3. Docker环境配置:
```bash
# 安装Docker
curl -fsSL https://get.docker.com | sh
# 创建docker-compose目录结构
mkdir -p /opt/docker/{adguard,nextcloud,photoprism,jellyfin,bitwarden}
# 示例AdGuard Home配置
cat > /opt/docker/adguard/docker-compose.yml <<EOF
version: '3'
services:
adguard:
image: adguard/adguardhome
container_name: adguard
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "68:68/tcp"
- "68:68/udp"
- "80:80/tcp"
- "443:443/tcp"
- "853:853/tcp"
volumes:
- ./work:/opt/adguardhome/work
- ./conf:/opt/adguardhome/conf
restart: unless-stopped
EOF
```
### Win10 LTSB (VM 102)
1. 创建虚拟机:
- 类型: Windows
- BIOS: OVMF (UEFI)
- 机器: q35
- 磁盘: 80GB (LVM-thin)
- CPU: 1核心, 类型host
- 内存: 4096MB, ballooning禁用
- 网络: virtio, bridge vmbr0
2. 直通核显:
```bash
echo "args: -device vfio-pci,host=00:02.0,addr=0x18 -device vfio-pci,host=00:1f.3,addr=0x19" >> /etc/pve/qemu-server/102.conf
```
3. 安装优化版Win10 LTSB
### HomeAssistant (VM 103)
1. 创建虚拟机:
- 类型: Linux
- BIOS: SeaBIOS
- 机器: q35
- 磁盘: 32GB (LVM-thin)
- CPU: 1核心, 类型host
- 内存: 2048MB, ballooning启用
- 网络: virtio, bridge vmbr0
2. 安装HomeAssistant OS
## 7. 服务配置建议
### 飞牛NAS
- 配置500GB RAID1卷用于重要数据备份
- 配置1TB卷用于媒体存储
- 启用SMB/NFS共享
- 设置定时快照
### Docker服务
- **AdGuard Home**: DNS去广告
- **Nextcloud**: 私人网盘/照片备份
- **Jellyfin**: 影视刮削与播放
- **Bitwarden**: 密码管理
- **Portainer**: Docker管理界面
### 远程访问
- 使用Cloudflare Tunnel或Tailscale实现安全远程访问
- 避免直接暴露端口到公网
## 8. 长期运行维护
### 监控设置
```bash
# 安装监控代理
apt install -y prometheus-node-exporter
# 配置邮件报警
apt install -y postfix
# 配置/etc/pve/email.cfg
```
### 定期维护任务
1. 设置每周自动更新:
```bash
echo "0 3 * * 0 apt update && apt dist-upgrade -y && pveam update" | crontab -
```
2. 配置自动备份:
- PVE内置备份: 每周备份关键虚拟机
- 飞牛NAS配置定期数据备份到外部存储
3. 日志轮转:
```bash
apt install -y logrotate
# 配置/etc/logrotate.d/pve_custom
```
### 性能调优
1. 启用CPU governor为powersave:
```bash
apt install -y cpufrequtils
echo "GOVERNOR=\"powersave\"" > /etc/default/cpufrequtils
systemctl restart cpufrequtils
```
2. 调整虚拟机CPU限制:
```bash
# 在/etc/pve/qemu-server/XXX.conf中添加
cpuunits: 1024
cpulimit: 0.8
```
3. 内存优化:
```bash
# 启用KSM
echo "1" > /sys/kernel/mm/ksm/run
echo "1000" > /sys/kernel/mm/ksm/sleep_millisecs
```
## 9. 安全加固
```bash
# 配置防火墙
apt install -y pve-firewall
pve-firewall compile
# SSH加固
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd
# 启用fail2ban
apt install -y fail2ban
systemctl enable fail2ban
```
## 10. 扩展建议
1. 网络扩展:
- 添加USB 2.5G网卡作为专用管理接口
- 配置VLAN隔离不同服务
2. 存储扩展:
- 考虑添加UPS保护
- 未来可扩展为TrueNAS替代飞牛NAS
3. 备份策略:
- 配置异地备份(如Backblaze B2)
- 定期验证备份完整性
此方案充分利用了您的硬件资源,确保了服务的稳定性和数据安全性,同时为未来扩展留有余地。根据实际使用情况,您可以进一步调整资源分配。