ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

老旧电脑再利用:PVE虚拟化搭建家庭服务器实战

2026/9/21 19:55:35 拓冰建站 浏览量
老旧电脑再利用:PVE虚拟化搭建家庭服务器实战 1. 老旧硬件再利用的完整思路拆解1.1 为什么选择老旧电脑而不是成品服务器手头有一台2013年前后的品牌台式机i5-3470、8GB内存、500GB机械硬盘当年算是主流办公配置现在跑Windows 10都嫌卡。直接卖掉不值两百块扔了又可惜。我把它改造成了一台家庭服务器跑Home Assistant做智能家居中枢顺带挂了一个Minecraft基岩版服务端给几个朋友玩还兼做RustDesk的中转节点。整套下来零硬件采购成本只花了几度电。为什么不用云服务器算一笔账一台最低配的云主机2核2G一年少说三五百而且Minecraft这种持续占用CPU的负载云厂商的共享型实例根本扛不住稍微跑点东西就触发性能瓶颈。家里这台老机器虽然单核性能落后但胜在物理独占、内存和磁盘随便加、没有流量费。更关键的是数据在自己手里Home Assistant的自动化配置、Minecraft的存档不用担心哪天服务到期或者厂商调整策略。当然老旧电脑做服务器有它的硬伤功耗偏高、噪音不小、没有IPMI远程管理、硬盘可靠性存疑。这些问题后面会逐个给出应对方案。整体思路就是——用最低的成本把闲置算力盘活同时保证7×24小时运行的稳定性。1.2 核心需求与场景定位在动手之前先想清楚这台服务器要干什么。我的需求清单是这样的智能家居中枢Home Assistant OS需要稳定运行、能访问USB Zigbee网关、支持局域网发现。游戏服务端Minecraft基岩版朋友几个人玩峰值在线不超过5人对CPU单核性能有一定要求。远程桌面中转RustDesk自建服务器用于在外网环境下远程连接家里的设备需要公网可达或者内网穿透。轻量文件共享Samba共享存放一些常用驱动、镜像和备份文件。这几个场景对硬件的要求各不相同。Home Assistant对CPU要求极低但要求系统稳定、USB直通方便Minecraft服务端吃单核性能和内存8GB内存分4GB给它比较稳妥RustDesk中转几乎不占资源但需要网络配置正确。综合下来这台老机器完全够用但需要合理分配资源。1.3 方案选型裸机还是虚拟化这是第一个关键决策点。有两种路线路线A裸机直接装Ubuntu Server所有服务跑在Docker里。优点是性能损耗最小Minecraft的TPS更稳缺点是Home Assistant OS官方推荐的方式是跑在虚拟机或独立设备上Docker版的HA Supervised安装起来比较折腾而且USB设备直通需要额外配置。路线B装PVE或者ESXi做虚拟化HAOS跑一个虚拟机Ubuntu Server跑另一个虚拟机Minecraft和RustDesk在Ubuntu里用Docker管理。优点是隔离性好HAOS可以用官方镜像直接导入USB直通在PVE里配置也成熟缺点是内存要分给虚拟化层8GB略显紧张而且PVE本身有一定学习成本。我最终选了路线B用PVE 8.x。理由很实际Home Assistant OS的官方虚拟机镜像开箱即用省去了大量配置时间PVE的备份功能可以整机快照折腾坏了随时回滚而且以后如果加内存还能再开虚拟机跑别的服务。8GB内存的分配是PVE宿主1GBHAOS 2GBUbuntu Server 4GB留1GB缓冲。实测下来HAOS日常占用1.2GB左右Ubuntu里Minecraft服务端占用2.5GB跑起来还算宽裕。注意如果内存只有4GB建议放弃虚拟化方案直接裸机装Ubuntu ServerHA用Docker方式部署否则内存会非常吃紧。2. 硬件准备与BIOS关键设置2.1 硬件检查与升级建议老机器到手先做一轮体检。我这台是戴尔OptiPlex 7010主板H61芯片组原装配置是i5-3470、4GB DDR3、500GB 7200转机械盘。检查下来有几个问题内存只有4GB必须加到8GB以上DDR3现在二手很便宜两条4GB组双通道也就几十块。双通道对核显和整体性能都有提升。机械硬盘做系统盘太慢找了一块闲置的120GB SATA固态做系统盘机械盘留着做数据盘。固态对虚拟机运行流畅度的提升是立竿见影的。千兆网卡H61主板板载的是千兆网卡这点很关键。如果是百兆网卡Minecraft多人游戏和文件共享的体验会大打折扣。检查方法很简单装好系统后用ethtool eth0看Speed是不是1000Mb/s。散热灰尘老机器散热器积灰严重拆下来用毛刷和吹风机清理干净重新涂了硅脂。CPU温度从待机60度降到了40度左右。电源方面原装240W电源带这几个配件绰绰有余。实测整机功耗待机约35W满载约65W按每天24小时运行、电费0.6元/度算一个月电费不到30块。2.2 BIOS设置要点启动顺序与虚拟化开启戴尔老机器的BIOS是传统界面不是新版UEFI图形化那种。开机按F2进入BIOS设置需要调整几个关键项启动模式这台机器支持UEFI和Legacy两种模式。PVE 8.x推荐UEFI启动但老机器的UEFI实现可能有兼容性问题。我实测下来Legacy模式下PVE安装和运行都正常就用了Legacy。如果你遇到安装后无法引导的情况可以尝试切换启动模式。启动顺序把USB设备调到第一位方便用U盘安装PVE。安装完成后记得改回硬盘优先。虚拟化支持这是最关键的一项。在BIOS的Performance或者Virtualization菜单里找到Intel Virtualization TechnologyVT-x和VT-d全部设为Enabled。VT-x是CPU虚拟化必须开VT-d是IOMMU用于设备直通如果要给HAOS直通USB Zigbee网关这个也要开。硬盘模式SATA Operation建议设为AHCI不要用IDE或者RAID模式。AHCI模式下磁盘性能更好而且PVE对AHCI的支持最完善。实操心得戴尔老BIOS里有些选项藏得比较深比如VT-d可能在Virtualization Support子菜单里。如果找不到可以试试更新BIOS到最新版本。戴尔官网输入Service Tag就能下载对应机型的最新BIOS文件用DOS启动盘或者Windows下直接刷。2.3 制作PVE安装U盘与安装过程PVE的ISO镜像从官网下载版本选8.x。制作启动U盘用Rufus或者balenaEtcher都行注意分区方案选MBR对应Legacy启动文件系统FAT32。安装过程比较直观但有几个地方需要注意磁盘选择选那块120GB固态文件系统用ext4或者zfs。老机器内存小不建议用zfsext4更省内存。网络配置安装时会让你设置管理IP建议设成静态IP比如192.168.1.100网关填路由器地址。这样以后访问PVE管理界面不用查IP。密码和邮箱密码设复杂点邮箱随便填一个格式正确的就行。安装完成后重启拔掉U盘应该能看到PVE的登录提示。在浏览器里输入https://192.168.1.100:8006用root账号登录就能看到PVE的Web管理界面了。3. 虚拟化平台配置与服务部署3.1 PVE基础配置换源与更新PVE默认的软件源是订阅版不订阅的话更新会报错。需要换成免费源。SSH登录PVE编辑/etc/apt/sources.list把里面的enterprise字样替换成no-subscription。同时注释掉/etc/apt/sources.list.d/pve-enterprise.list里的内容。然后执行apt update apt upgrade -y更新完成后建议安装几个常用工具apt install -y htop iotop lm-sensorslm-sensors装好后运行sensors-detect一路回车然后sensors就能看CPU温度了。老机器监控温度很有必要散热不行的话容易降频。3.2 Home Assistant OS虚拟机部署HAOS官方提供了多种虚拟化平台的镜像PVE用的是qcow2格式。下载地址在Home Assistant官网的安装页面能找到。下载下来是一个压缩包解压后得到qcow2文件。上传到PVE有两种方式一是通过Web界面的上传功能二是用SCP命令。qcow2文件大概几百MBWeb上传也行但SCP更快scp haos_ova-11.1.qcow2 root192.168.1.100:/var/lib/vz/images/然后在PVE里创建虚拟机。注意几个关键配置BIOS选OVMFUEFIHAOS需要UEFI启动。机型q35。磁盘先创建一个空磁盘然后用qm importdisk命令把qcow2导入。具体命令是qm importdisk 100 /var/lib/vz/images/haos_ova-11.1.qcow2 local-lvm其中100是虚拟机ID。内存2048MB。CPU2核类型选host性能最好。网络桥接到vmbr0模型选VirtIO。导入磁盘后在虚拟机硬件设置里把未使用的磁盘添加为启动盘启动顺序设为第一。HAOS启动后在路由器里找到它的IP浏览器访问http://HAOS_IP:8123就能看到Home Assistant的初始化界面了。3.3 Ubuntu Server虚拟机与Docker环境Ubuntu Server 22.04的安装比较直接ISO挂载到虚拟机光驱启动后按提示操作。分区建议手动分/给20GB/home给剩余空间swap给2GB。安装时勾选OpenSSH Server方便后续远程管理。装好后先换国内源编辑/etc/apt/sources.list把archive.ubuntu.com替换成mirrors.tuna.tsinghua.edu.cn或者阿里云镜像。然后apt update apt upgrade -y apt install -y docker.io docker-compose-v2 systemctl enable dockerDocker装好后把当前用户加入docker组免得每次都要sudousermod -aG docker $USER重新登录后生效。3.4 Minecraft基岩版服务端部署Minecraft基岩版服务端在Linux上的部署比Java版简单官方提供了Linux二进制包。下载地址在Minecraft官网的服务器下载页面选Ubuntu版本。下载后解压到一个目录比如/opt/minecraftmkdir -p /opt/minecraft cd /opt/minecraft wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.20.51.01.zip unzip bedrock-server-1.20.51.01.zip然后编辑server.properties几个关键配置server-name服务器名称中文也行。gamemode游戏模式survival或者creative。difficulty难度easy/normal/hard。allow-cheats是否允许作弊指令给朋友玩建议开。online-mode正版验证如果朋友都是正版就设true否则设false。server-port默认19132UDP协议。启动服务端LD_LIBRARY_PATH. ./bedrock_server第一次启动会生成世界等看到Server started就说明成功了。注意事项基岩版服务端是UDP协议路由器端口转发时记得选UDP不是TCP。另外服务端对CPU单核性能敏感i5-3470跑5人以内没问题人多了TPS会掉。3.5 RustDesk自建服务器搭建RustDesk自建服务器需要两个组件hbbsID服务器和hbbr中继服务器。官方提供了Docker镜像部署很简单。先创建目录mkdir -p /opt/rustdesk cd /opt/rustdesk然后创建docker-compose.ymlversion: 3 services: hbbs: image: rustdesk/rustdesk-server:latest command: hbbs volumes: - ./data:/root network_mode: host restart: always hbbr: image: rustdesk/rustdesk-server:latest command: hbbr volumes: - ./data:/root network_mode: host restart: alwaysnetwork_mode: host让容器直接用宿主网络省去端口映射的麻烦。启动docker compose up -d启动后在/opt/rustdesk/data目录下会生成id_ed25519.pub文件这是公钥客户端配置时需要填。服务器地址填Ubuntu虚拟机的IP端口默认21116。4. 网络配置与远程访问4.1 内网穿透方案选择家里的宽带没有公网IP外网访问需要内网穿透。常见方案有frp、ZeroTier、Tailscale等。我选的是frp因为可以自己控制服务端而且配置灵活。frp需要一台有公网IP的服务器做中转。如果实在没有可以用Cloudflare Tunnel免费且不需要公网IP但延迟会高一些。frp的配置分服务端和客户端。服务端跑在有公网IP的机器上客户端跑在PVE或者Ubuntu虚拟机上。具体配置网上教程很多这里不展开。重点是把Minecraft的19132 UDP端口和RustDesk的21116端口映射出去。4.2 端口转发与防火墙设置如果路由器支持端口转发直接在路由器里把外网端口映射到内网服务器的对应端口。注意Minecraft是UDPRustDesk的hbbs需要TCP和UDP都转发。PVE的防火墙默认是关闭的如果开了需要放行相关端口。Ubuntu的ufw如果启用了也要放行ufw allow 19132/udp ufw allow 21116/tcp ufw allow 21116/udp4.3 时间服务器与NTP配置老机器的主板电池可能没电了每次断电后时间会乱。PVE和Ubuntu都需要配置NTP同步。Ubuntu 22.04默认用systemd-timesyncd编辑/etc/systemd/timesyncd.conf把NTP服务器改成国内的NTPntp.aliyun.com ntp1.aliyun.com然后重启服务systemctl restart systemd-timesyncdPVE的时间同步类似编辑/etc/systemd/timesyncd.conf后重启服务。时间准确对Minecraft和Home Assistant的自动化都很重要。5. 常见问题与排查技巧实录5.1 虚拟机启动失败排查现象HAOS虚拟机启动后卡在UEFI Shell不进系统。原因启动顺序不对或者磁盘没正确导入。解决检查虚拟机选项里的启动顺序确保硬盘在第一。如果还是不行进UEFI Shell手动引导fs0:\EFI\BOOT\BOOTX64.EFI。现象Ubuntu虚拟机安装时黑屏但底部有两个小图标。原因显卡驱动或者显示模式问题。解决安装时按F6选择nomodeset模式或者用VNC连接而不是SPICE。5.2 网络不通的几种情况现象虚拟机获取不到IP。排查先检查PVE的网络桥接配置/etc/network/interfaces里vmbr0是否桥接到了正确的物理网卡。然后进虚拟机用ip a看网卡状态dhclient手动获取IP试试。现象Minecraft外网连不上。排查确认路由器端口转发规则正确UDP协议。用nc -u或者在线UDP端口检测工具测试端口是否开放。如果frp映射的检查frp客户端和服务端日志。5.3 性能瓶颈与优化现象Minecraft TPS低卡顿。优化给虚拟机多分一个CPU核心内存加到4GB。服务端配置文件里view-distance调小到8tick-distance调到4。关闭不必要的插件。现象HAOS响应慢。优化HAOS的数据库用SQLite时间长了会变大。装个MariaDB插件把数据库迁过去或者定期清理历史数据。5.4 常见问题速查表问题可能原因解决方法PVE安装后无法引导启动模式不匹配BIOS切换UEFI/Legacy虚拟机无网络桥接配置错误检查vmbr0桥接和物理网卡HAOS无法启动磁盘未导入或启动顺序错重新导入qcow2调整启动顺序Minecraft外网连不上端口未转发或协议错检查UDP端口转发RustDesk连接失败公钥未配置或端口未开检查id_ed25519.pub和21116端口系统时间不准NTP未同步配置国内NTP服务器老机器温度高散热积灰清理灰尘重涂硅脂硬盘识别不到BIOS硬盘模式错设为AHCI模式独家避坑老机器做服务器最怕的是硬盘突然挂掉。建议系统盘用固态数据盘用机械重要数据定期备份到外部硬盘或者云存储。PVE的备份功能很好用可以设置定时备份到NAS或者外接USB硬盘。6. 长期运行维护与扩展思路6.1 日常维护要点服务器跑起来只是开始长期稳定运行需要一些维护习惯。我每周会做几件事检查PVE和各虚拟机的CPU、内存、磁盘占用htop和df -h够用了。看HAOS的日志有没有报错Minecraft服务端的日志有没有异常。检查系统更新但不要盲目升级。PVE的大版本升级要谨慎先看社区反馈。每月做一次完整备份PVE的备份文件存到外接硬盘。HAOS的配置可以通过它的快照功能备份Minecraft的存档直接打包worlds目录。6.2 性能扩展与硬件升级这台老机器还有升级空间。内存可以加到16GBDDR3现在很便宜加满后能多跑几个虚拟机。CPU可以换成E3-1230 v2四核八线程性能提升明显二手价格也不贵。硬盘可以加一块SSD做缓存或者直接扩大存储。如果以后需求增加比如想跑Jellyfin做媒体服务器i5-3470的核显支持硬件转码但性能有限1080p勉强4K就别想了。真要跑媒体服务建议换一台支持Quick Sync的新一点的平台。6.3 这套方案的适用边界最后说清楚这套方案适合谁、不适合谁。适合有闲置老电脑、想低成本搭建家庭服务器、愿意折腾Linux和虚拟化、对性能要求不高的场景。不适合需要高性能计算、需要大量存储、对噪音和功耗敏感、完全不想碰命令行的用户。我个人的体会是老旧电脑做服务器的核心价值在于废物利用和数据自主。性能确实比不上新硬件但跑轻量服务绰绰有余。关键是整个过程能学到很多东西从BIOS设置到虚拟化到网络配置踩过的坑都是经验。如果你手头正好有一台吃灰的老机器不妨试试成本低、容错高折腾坏了也不心疼。