资讯详情

闲置老电脑别扔!零成本搭建家用服务器实战:Home Assistant+Minecraft+RustDesk

📅 2026/9/22 0:51:47 | 华诺云谱 👁 阅读
闲置老电脑别扔!零成本搭建家用服务器实战:Home Assistant+Minecraft+RustDesk
家里那台2015年前后买的台式机i5-4590加8G内存装Win10都开始卡了扔了可惜卖二手也就两三百块。我拿它做了一件事装成一台家用服务器跑Home Assistant控制全屋灯光和传感器顺便开一个Minecraft基岩版服务器给几个朋友玩还挂了RustDesk做远程桌面中转。整套下来零硬件采购成本功耗待机不到30瓦7×24小时开着一个月电费也就十几块钱。这篇文章就把我从BIOS设置到系统调优再到服务部署的完整过程拆开讲包括中间踩过的坑和最后验证下来的稳定配置。如果你手里也有闲置的老机器或者正打算低成本搭一套自己的服务环境下面的内容可以直接抄作业。1. 先想清楚老电脑做服务器到底值不值1.1 性能账和功耗账要分开算很多人一上来就问我这台老机器能不能做服务器这个问题其实要拆成两个维度来看。第一个维度是绝对性能第二个维度是每瓦性能。家用服务器的负载特征和日常办公完全不同它不需要瞬时爆发力但要求长时间稳定运行而且大部分时间处于低负载状态。一台i5-4590的PassMark分数在5000分左右单核性能放到今天大概相当于N100的70%到80%但多核因为四核四线程的关系反而略强于N100。对于Home Assistant这种以事件驱动为主、CPU占用常年低于5%的服务来说性能完全过剩。真正需要关注的是功耗。老平台的功耗控制确实不如新平台22nm的Haswell架构在待机状态下整机功耗大概在25到35瓦之间而同样性能的N100迷你主机可以做到8到12瓦。按每天24小时、每度电0.55元计算老机器一年的电费大约是120到170元N100方案大约是40到60元。差价看起来有一百多块但如果你本来就有闲置的老机器这笔硬件采购成本是零而买一台N100迷你主机至少要六七百。也就是说老机器方案大约需要四到五年才能在电费上追平新硬件的采购成本。对于大多数人来说这个时间跨度已经足够长了。注意如果你打算跑视频转码、本地大模型推理这类持续高负载的任务老平台的功耗会飙升到80瓦以上这时候电费差距会迅速拉大需要重新评估。1.2 哪些服务适合放在老机器上不是所有服务都适合老平台。我把自己跑过的服务按资源占用分了三类你可以对照自己的需求来判断服务类型典型代表CPU占用内存占用老平台适配度轻量常驻服务Home Assistant、AdGuard Home、RustDesk中继常年5%200MB-1GB非常适合中等负载服务Minecraft基岩版4-6人、文件同步、Git仓库峰值30-60%1-4GB适合重负载服务视频转码、本地LLM推理、大型数据库持续80-100%8GB以上不推荐我自己的配置是8GB内存实际跑下来Home Assistant占600MB左右Minecraft基岩版服务端占1.2GBRustDesk中继占200MB系统本身占800MB总共不到3GB还有大量余量。如果你要跑Docker容器建议把内存加到16GB因为Docker的镜像层和容器运行时本身也会吃掉不少内存。1.3 和老平台搭配的硬盘选择老机器通常只有SATA接口没有M.2插槽。这时候系统盘的选择就很关键。我的建议是系统盘用一块便宜的SATA SSD数据盘用机械硬盘。SATA SSD的读写速度在500MB/s左右虽然比不上NVMe但对于系统启动和服务加载来说已经绰绰有余。我用的是某品牌240GB的SATA SSD二手价格不到80块装完Ubuntu Server 22.04之后还剩200GB空间足够放Docker镜像和常用数据。数据盘方面如果你要存大量文件或者做媒体库一块2TB的机械硬盘是性价比最高的选择。注意老机器的SATA接口版本可能是SATA 2.03Gbps这会限制SSD的峰值速度但实际使用中差距不明显因为4K随机读写才是系统流畅度的关键而SATA 2.0和3.0在4K性能上的差距远小于顺序读写。2. BIOS设置老平台稳定运行的第一道关2.1 为什么服务器场景下BIOS设置和日常使用不一样日常使用电脑时BIOS里的大部分设置你都可以不管默认值就能跑。但服务器场景有两个特殊需求断电后自动恢复和长时间无人值守稳定运行。这两个需求对应到BIOS里就是几个关键选项如果没设对轻则停电后机器不自动开机重则系统跑着跑着就蓝屏或者死机。我用的是一块华硕H81M主板BIOS是AMI的UEFI版本。不同品牌的BIOS界面差异很大但核心选项的逻辑是相通的。下面我按重要性排序逐个说明每个选项的作用和推荐值。2.2 断电恢复选项AC Power Loss的处理这个选项在不同BIOS里的叫法不一样华硕叫Restore AC Power Loss技嘉叫AC BACK微星叫Power Management下的Restore after AC Power Loss。它的作用是当市电恢复时机器应该处于什么状态。有三个可选值Power Off来电后保持关机状态需要手动按电源键Power On来电后自动开机Last State恢复到断电前的状态做服务器必须选Power On。我实测过一次小区临时停电两小时来电后机器自动启动所有服务在90秒内全部恢复完全不需要人工干预。如果选的是Power Off那你就得等回到家才能手动开机对于跑Home Assistant这种控制全屋设备的服务来说停机两小时意味着自动化全部失效。提示有些老BIOS里这个选项藏在Advanced→APM Configuration下面如果找不到可以翻一下主板手册的PDF搜索AC或Power Loss关键词。2.3 硬盘模式AHCI还是IDE这个选项在Storage Configuration或SATA Configuration里叫SATA Mode Selection。老主板默认可能是IDE模式这是为了兼容Windows XP时代的硬盘。但做服务器必须改成AHCI原因有两个第一AHCI支持NCQ原生命令队列可以显著提升多任务下的磁盘性能第二Ubuntu Server 22.04在IDE模式下虽然能启动但会丢失一些电源管理功能导致硬盘温度偏高。改这个选项有一个坑如果你之前已经在IDE模式下装了系统直接改成AHCI会导致系统无法启动。正确的做法是先在IDE模式下进系统修改注册表或者用工具切换驱动然后再改BIOS。不过对于全新安装来说直接设成AHCI就行没有这个问题。2.4 核显显存分配别给太多也别给太少老平台的核显会从系统内存里划走一部分作为显存。在BIOS的Graphics Configuration里有一个DVMT Pre-Allocated选项通常可以选32M、64M、128M、256M等。对于服务器来说你根本不用核显输出画面我甚至没接显示器所以理论上给最小的32M就行。但实测发现如果给32MUbuntu Server在启动时偶尔会报no suitable video mode的警告虽然不影响使用但看着烦。给64M是最稳妥的既不会浪费太多内存也不会触发警告。另外如果你打算用RustDesk或者VNC做远程桌面核显的2D加速还是有点用的64M足够应付基本的桌面渲染。如果你要跑Jellyfin做硬件转码那核显的显存分配就要给到256M以上因为转码过程中需要较大的帧缓冲区。2.5 风扇策略和温度监控老平台的散热器通常比较简陋原装散热器用久了积灰严重风扇噪音大不说散热效率也下降明显。BIOS里的Q-Fan Control或者Smart Fan选项可以设置风扇曲线。我的建议是把风扇启动温度设低一点比如40度开始转60度全速。这样在低负载时风扇转速很低几乎听不到声音高负载时又能及时散热。配合这个设置你需要在系统里装一个温度监控工具。Ubuntu下用lm-sensors就行sudo apt install lm-sensors sudo sensors-detect sensors输出里会显示CPU核心温度、主板温度、风扇转速等信息。我实测下来i5-4590在Home Assistant加Minecraft的负载下CPU温度稳定在45到55度之间风扇转速在800到1200转噪音完全可以接受。3. 系统安装Ubuntu Server 22.04的实战细节3.1 为什么选Ubuntu Server而不是桌面版很多人习惯用桌面版Linux觉得有图形界面方便。但做服务器桌面版是负担GNOME桌面本身就要吃掉1GB以上的内存还有各种后台更新和通知服务不仅浪费资源还会引入不必要的变量。Ubuntu Server 22.04没有图形界面安装完内存占用只有300MB左右而且默认开启了各种服务器优化比如TCP BBR拥塞控制、自动安全更新等。另一个原因是远程管理。服务器通常放在角落或者柜子里不接显示器。Ubuntu Server默认开启SSH装完就能用VS Code的Remote-SSH插件连上去写代码体验和本地开发几乎一样。我现在的开发流程就是VS Code连上服务器直接在服务器上写Python脚本和Docker Compose文件保存即生效不需要来回传文件。3.2 安装过程中的分区方案Ubuntu Server 22.04的安装器提供了几种分区方案我推荐手动分区因为自动分区有时候会把大部分空间分给/home而服务器场景下/home根本用不到那么多。我的分区方案是这样的挂载点大小文件系统说明/boot/efi512MBFAT32UEFI启动分区必须/60GBext4系统和Docker镜像/var40GBext4日志和容器数据/home剩余空间ext4个人文件和项目代码swap4GBswap交换分区防止OOM这里重点说两个地方。第一/var单独分区是为了防止Docker日志把根分区撑满。Docker默认的日志驱动是json-file如果不限制大小一个跑得久的容器日志能涨到几个GB。把/var单独分出来即使日志爆了也不会影响系统运行。第二swap给4GB是因为8GB内存跑多个服务时偶尔会有内存峰值有swap兜底可以避免OOM Killer直接杀掉进程。3.3 安装后的第一件事更新和基础配置装完系统重启后第一件事是更新软件源并升级sudo apt update sudo apt upgrade -y然后装几个必备工具sudo apt install -y curl wget git vim htop net-tools接下来配置SSH密钥登录禁用密码登录。这一步很重要因为服务器暴露在局域网里密码登录有被暴力破解的风险。先在本地生成密钥对如果还没有的话ssh-keygen -t ed25519 -C server然后把公钥复制到服务器ssh-copy-id usernameserver-ip最后编辑服务器的/etc/ssh/sshd_config把PasswordAuthentication改成no重启SSH服务。这样之后就只能用密钥登录了安全性大幅提升。3.4 固定IP和主机名服务器需要一个固定的局域网IP否则每次重启后IP变了你的Home Assistant、Minecraft客户端都得重新配置。有两种方式一种是在路由器里做DHCP静态绑定另一种是在服务器上设静态IP。我推荐在路由器里绑定因为这样服务器本身还是用DHCP网络配置更简单换路由器时也只需要重新绑定一次。主机名方面建议设一个好记的名字比如homeserver。这样你在浏览器里访问http://homeserver:8123就能打开Home Assistant不用记IP地址。设置方法sudo hostnamectl set-hostname homeserver然后在路由器的DNS设置里把homeserver解析到服务器的IP。大多数家用路由器都支持本地DNS解析如果没有这个功能可以在每台设备的hosts文件里手动添加。4. 服务部署从Home Assistant到Minecraft的完整链路4.1 Docker和Docker Compose的安装我所有的服务都用Docker跑原因是隔离性好、迁移方便、升级简单。Ubuntu Server 22.04自带的Docker版本比较老建议用官方脚本安装最新版curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER装完之后需要重新登录一次让用户组生效。然后装Docker Compose插件sudo apt install -y docker-compose-plugin验证一下docker compose version注意Docker默认的镜像存储位置在/var/lib/docker如果你按照前面的分区方案把/var单独分了40GB那这里不用改。如果/var空间不够可以在/etc/docker/daemon.json里配置>version: 3 services: homeassistant: container_name: homeassistant image: ghcr.io/home-assistant/home-assistant:stable volumes: - /home/username/homeassistant:/config - /etc/localtime:/etc/localtime:ro environment: - TZAsia/Shanghai restart: unless-stopped network_mode: host这里有几个关键点。第一network_mode: host让容器直接使用宿主机的网络这样Home Assistant才能通过mDNS发现局域网里的智能设备比如小米、涂鸦的设备。如果用默认的bridge网络设备发现会失效。第二restart: unless-stopped保证容器在系统重启后自动启动配合前面BIOS里的Power On设置实现完全无人值守。第三/etc/localtime挂载进去是为了让容器时间和宿主机一致否则自动化触发时间会错乱。启动命令cd /home/username/homeassistant docker compose up -d第一次启动会拉取镜像大概需要几分钟。启动完成后浏览器访问http://服务器IP:8123就能看到Home Assistant的初始化界面。按照提示创建账号、设置位置和时区然后就可以开始添加设备了。4.3 Minecraft基岩版服务器的搭建Minecraft基岩版服务端我用的是itzg/minecraft-bedrock-server这个镜像它支持自动更新和世界备份。docker-compose.yml如下version: 3 services: minecraft: container_name: minecraft image: itzg/minecraft-bedrock-server environment: - EULATRUE - GAMEMODEsurvival - DIFFICULTYnormal - SERVER_NAMEMy Server - SERVER_PORT19132 - ONLINE_MODEfalse ports: - 19132:19132/udp volumes: - /home/username/minecraft:/data restart: unless-stopped这里ONLINE_MODEfalse是为了让没有正版账号的朋友也能进来如果你只和正版玩家玩可以设成true。SERVER_PORT默认是19132UDP协议记得在路由器里做端口转发如果你想让外网的朋友也能连进来的话。启动之后用Minecraft客户端添加服务器地址填服务器的局域网IP端口19132就能连上了。我实测i5-4590跑4到6人的基岩版服务器TPS稳定在20完全没有卡顿。内存占用在1.2GB左右CPU占用峰值40%。4.4 RustDesk自建中继服务器的配置RustDesk是一个开源的远程桌面工具自建中继服务器可以避免走公共服务器带来的延迟和隐私问题。它有两个组件hbbs信令服务器和hbbr中继服务器。docker-compose.yml如下version: 3 services: hbbs: container_name: hbbs image: rustdesk/rustdesk-server:latest command: hbbs volumes: - /home/username/rustdesk:/root network_mode: host restart: unless-stopped hbbr: container_name: hbbr image: rustdesk/rustdesk-server:latest command: hbbr volumes: - /home/username/rustdesk:/root network_mode: host restart: unless-stopped启动后RustDesk客户端里配置ID服务器为服务器的局域网IP中继服务器也填同样的IP就能走自建中继了。实测局域网内远程桌面延迟在10ms以内外网通过端口转发后延迟在30到50ms比公共服务器稳定得多。5. 稳定性调优让老机器7×24小时不宕机5.1 关闭不必要的系统服务Ubuntu Server默认启动了一些服务器场景用不到的服务比如snapd、ModemManager、bluetooth等。关掉它们可以释放内存和CPU减少潜在的不稳定因素。查看当前运行的服务systemctl list-units --typeservice --staterunning我关掉的服务包括sudo systemctl disable --now snapd sudo systemctl disable --now ModemManager sudo systemctl disable --now bluetooth sudo systemctl disable --now cups关掉snapd之后snap命令就不能用了但服务器场景下你基本不会用到snap包所以影响不大。cups是打印服务服务器不需要打印直接关掉。5.2 日志管理和磁盘空间监控前面提到Docker日志可能撑满磁盘除了分区隔离还要在Docker层面限制日志大小。编辑/etc/docker/daemon.json{ log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } }这样每个容器的日志最多占30MB10MB×3个文件不会无限增长。改完之后重启Dockersudo systemctl restart docker另外系统日志也要管理。journald默认会占用最多10%的磁盘空间对于40GB的/var分区来说就是4GB可以接受。如果你想更激进地限制编辑/etc/systemd/journald.conf设置SystemMaxUse500M。5.3 温度监控和自动告警老平台的散热是个隐患尤其是夏天。我写了一个简单的脚本每5分钟检查一次CPU温度如果超过75度就通过Home Assistant发送通知#!/bin/bash TEMP$(sensors | grep Core 0 | awk {print $3} | tr -d °C) if [ $TEMP -gt 75 ]; then curl -X POST http://localhost:8123/api/webhook/overheat_alert fi把这个脚本加到crontab里*/5 * * * * /home/username/check_temp.sh然后在Home Assistant里创建一个Webhook自动化收到请求后给手机推送通知。这样即使你不在家也能第一时间知道服务器温度异常。5.4 定期备份策略服务器上的数据分两类一类是配置数据Home Assistant的配置、Minecraft的世界存档另一类是系统本身。配置数据我用rsync每天凌晨3点备份到外接硬盘rsync -av --delete /home/username/homeassistant /mnt/backup/ rsync -av --delete /home/username/minecraft /mnt/backup/系统本身不需要频繁备份因为重装一次也就半小时。但我会把Docker Compose文件和关键配置放在Git仓库里这样即使系统盘挂了换一块新盘重装系统后git clone下来就能恢复所有服务。6. 实测数据与常见问题排查6.1 一个月运行数据记录我从部署完成到现在跑了一个月记录了一些关键数据指标数值说明平均待机功耗28W所有服务运行但无客户端连接峰值功耗52WMinecraft 6人同时在线月耗电量约20度按30天计算月电费约11元按0.55元/度CPU平均温度48°C室温26°C内存占用2.8GB/8GB所有服务合计系统盘占用18GB/60GB含Docker镜像连续运行时间30天无重启、无宕机这个数据说明老平台做家用服务器是完全可行的。功耗和电费都在可接受范围内稳定性也经得起考验。6.2 常见问题BIOS里识别到硬盘但PE看不到这是老平台装系统时最常见的问题之一。原因通常是BIOS里的SATA模式设成了RAID或者Intel RST而PE系统里没有对应的驱动。解决方法很简单进BIOS把SATA模式改成AHCI保存重启后再进PE就能看到硬盘了。如果改完AHCI后进PE还是看不到检查一下硬盘的数据线和电源线是否插紧老机器的SATA接口容易氧化拔下来用橡皮擦擦一下金手指再插回去。6.3 常见问题Ubuntu安装时黑屏但底部有两个小图标这个现象通常出现在用U盘安装Ubuntu Server的时候原因是安装器尝试用图形模式启动但核显不支持。解决方法是在启动菜单里选择Install Ubuntu Server后按e编辑启动参数在linux那一行的末尾加上nomodeset然后按F10启动。这样安装器会用基本的VESA模式显示虽然分辨率低一点但能正常完成安装。6.4 常见问题Docker容器启动后无法访问先检查容器是否真的在运行docker ps -a如果状态是Exited看日志docker logs 容器名常见原因有三个端口被占用、配置文件路径错误、权限不足。端口占用可以用netstat -tulpn | grep 端口号查看。配置文件路径错误通常是挂载的宿主机目录不存在或者权限不对用ls -la检查一下。权限不足的话把目录所有者改成当前用户sudo chown -R $USER:$USER /home/username/服务目录6.5 常见问题Minecraft服务器外网连不上局域网能连但外网连不上99%是端口转发没做对。基岩版用的是UDP 19132端口很多路由器在端口转发页面默认只转发TCP需要手动把协议改成UDP或者TCPUDP。另外如果你的宽带没有公网IP现在很多家宽都是大内网那端口转发也没用需要用内网穿透工具。这种情况下可以考虑用RustDesk的中继服务器做转发或者用其他内网穿透方案。6.6 一个容易被忽略的细节时间同步服务器的时间必须准确否则Home Assistant的自动化会在错误的时间触发Minecraft的日志时间也会乱。Ubuntu Server默认用systemd-timesyncd做时间同步但有时候会因为网络问题同步失败。我建议手动检查一下timedatectl status如果显示System clock synchronized: no可以手动指定一个国内的时间服务器sudo timedatectl set-ntp true然后在/etc/systemd/timesyncd.conf里把NTP改成ntp.aliyun.com或者cn.pool.ntp.org重启服务sudo systemctl restart systemd-timesyncd这个细节看起来小但实际影响很大。我之前有一次Home Assistant的自动化在凌晨3点触发结果因为时间偏差了15分钟把家人吵醒了。从那以后我就养成了检查时间同步的习惯。7. 后续可以继续折腾的方向这套配置跑了一个月之后我又陆续加了一些东西。比如用AdGuard Home做全屋DNS过滤拦截广告和追踪域名效果比浏览器插件好得多因为它在网络层就拦掉了手机App里的广告也能过滤。还加了Uptime Kuma做服务监控每个容器是否在线、响应时间多少一目了然服务挂了会通过邮件和微信通知。如果你对本地AI感兴趣老平台跑大语言模型确实吃力但跑一些小的推理任务还是可以的。比如用ollama跑一个3B参数左右的模型做文本分类或者简单的问答i5-4590加8GB内存勉强能跑但速度比较慢大概每秒3到5个token。如果你有16GB内存可以试试7B量化的模型速度会好一些。另外如果你有多个老机器可以考虑做服务器集群。比如一台跑Home Assistant和DNS另一台跑Minecraft和文件服务通过内网互联。这样单台机器的负载更低稳定性更好。不过对于大多数家庭场景来说一台就够用了没必要为了集群而集群。最后说一个我踩过的坑老机器的CMOS电池如果没电了每次断电后BIOS设置都会恢复默认包括你设的Power On和AHCI模式。表现就是停电后机器不自动开机或者开机后找不到硬盘。换一颗CR2032纽扣电池就能解决成本两块钱。这个坑很隐蔽因为平时不断电根本发现不了等到真停电的时候就抓瞎了。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。