从零搭建家庭All-in-One服务器:300元成本实现企业级功能

生产环境实战:旧电脑改造成家庭数据中心,比NAS更强大

背景需求

去年双11差点花2000块买台群晖NAS,后来突然想起家里有台吃灰的旧电脑(i5-4代,8GB内存)。

为什么不买NAS?

  • 群晖DS220+:1800元 + 硬盘600元 = 2400元
  • 旧电脑改造:0元(已有)+ 硬盘600元 = 600元

省了1800块,功能还更强大!


硬件准备

我的配置(成本估算)

硬件 型号 成本 来源
主机 i5-4590, 8GB内存 0元 旧电脑
硬盘1 4TB 西数红盘 600元 京东
硬盘2 256GB SSD 150元 闲鱼二手
网卡 千兆有线网卡 0元 主板自带
电源 额定300W 0元 原装
合计 - 750元 -

如果你完全从零开始:

  • N100迷你主机:500元(全新,功耗10W)
  • 4TB硬盘:600元
  • 合计:1100元(仍比NAS便宜800元)

系统选型

方案对比

系统 难度 功能 推荐度
群晖DSM黑群晖 ⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
TrueNAS ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐
OpenMediaVault ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
CasaOS ⭐⭐⭐ ⭐⭐⭐⭐
Proxmox VE ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐

我的选择:Proxmox VE(PVE)

为什么?

  • ✅ 可以跑虚拟机 + 容器
  • ✅ Web管理界面友好
  • ✅ 社区活跃,中文教程多
  • ✅ 可以装黑群晖虚拟机(两全其美)

安装Proxmox VE

第1步:制作启动U盘

bash 复制代码
# 下载PVE镜像
wget https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso/proxmox-ve-8-1-iso-installer

# Windows下用Rufus烧录到U盘
# macOS/Linux用dd命令
sudo dd if=proxmox-ve_8.1.iso of=/dev/sdX bs=1M status=progress

第2步:安装系统

  1. U盘启动,选择"Install Proxmox VE (Graphical)"

  2. 同意协议

  3. 选择SSD作为系统盘(256GB)

  4. 设置地区、时区(Asia/Shanghai)

  5. 设置root密码和邮箱

  6. 配置网络:

    复制代码
    IP: 192.168.1.100/24
    网关: 192.168.1.1
    DNS: 223.5.5.5
  7. 安装完成,重启

第3步:访问Web管理界面

浏览器打开:https://192.168.1.100:8006

登录:

  • 用户名:root
  • 密码:刚才设置的密码
  • Realm:Linux PAM

配置存储

创建ZFS存储池(推荐)

ZFS优势:

  • 数据校验和(防静默数据损坏)
  • 快照功能(秒级备份)
  • 压缩(节省空间)

创建ZFS Pool:

bash 复制代码
# SSH登录PVE
ssh root@192.168.1.100

# 查看硬盘
lsblk
# sda: 256GB SSD (系统盘)
# sdb: 4TB HDD (数据盘)

# 创建ZFS存储池
zpool create -o ashift=12 \
  -O compression=lz4 \
  -O atime=off \
  -m /mnt/data \
  data_pool /dev/sdb

# 查看状态
zpool status
#   pool: data_pool
#   state: ONLINE
#   scan: none requested
# config:
#   NAME        STATE     READ WRITE CKSUM
#   data_pool   ONLINE       0     0     0
#     sdb       ONLINE       0     0     0

在PVE Web界面添加存储:

  1. Datacenter → Storage → Add → ZFS
  2. ID: data_pool
  3. ZFS Pool: data_pool
  4. Content: Disk image, Container

部署服务

服务1:文件共享(Samba)

在PVE中创建LXC容器:

bash 复制代码
# 下载Ubuntu模板
pveam update
pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.zst

# 创建LXC容器
pct create 100 local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
  --hostname file-server \
  --memory 1024 \
  --cores 2 \
  --net0 name=eth0,bridge=vmbr0,ip=192.168.1.101/24,gw=192.168.1.1 \
  --storage data_pool \
  --rootfs data_pool:8

# 启动容器
pct start 100

# 进入容器
pct enter 100

安装Samba:

bash 复制代码
# 更新系统
apt update && apt upgrade -y

# 安装Samba
apt install samba -y

# 创建共享文件夹
mkdir -p /mnt/shares/{public,media,backup}

# 配置Samba
cat >> /etc/samba/smb.conf <<EOF

[Public]
   path = /mnt/shares/public
   browseable = yes
   writable = yes
   guest ok = yes
   create mask = 0777
   directory mask = 0777

[Media]
   path = /mnt/shares/media
   browseable = yes
   writable = yes
   valid users = @media
   create mask = 0770
   directory mask = 0770

[Backup]
   path = /mnt/shares/backup
   browseable = yes
   writable = yes
   valid users = admin
   create mask = 0600
   directory mask = 0700
EOF

# 创建Samba用户
smbpasswd -a root

# 重启Samba
systemctl restart smbd

Windows访问:

复制代码
\\192.168.1.101\Public

服务2:Docker容器平台

在LXC容器中安装Docker:

bash 复制代码
# 创建Docker专用容器
pct create 101 local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
  --hostname docker-host \
  --memory 4096 \
  --cores 4 \
  --net0 name=eth0,bridge=vmbr0,ip=192.168.1.102/24,gw=192.168.1.1 \
  --storage data_pool \
  --rootfs data_pool:20 \
  --features nesting=1  # ← 重要:允许嵌套虚拟化

pct start 101
pct enter 101

# 安装Docker
curl -fsSL https://get.docker.com | bash

# 安装Docker Compose
apt install docker-compose -y

# 验证
docker --version
docker-compose --version

部署常用服务:

1. Portainer(Docker可视化管理):

bash 复制代码
docker run -d \
  --name portainer \
  --restart always \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce

# 访问:http://192.168.1.102:9000

2. Nextcloud(私有云盘):

yaml 复制代码
# docker-compose.yml
version: '3'
services:
  nextcloud:
    image: nextcloud:latest
    restart: always
    ports:
      - 8080:80
    volumes:
      - nextcloud_data:/var/www/html
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=password
  
  db:
    image: mariadb:10.6
    restart: always
    volumes:
      - db_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=password

volumes:
  nextcloud_data:
  db_data:
bash 复制代码
docker-compose up -d
# 访问:http://192.168.1.102:8080

3. qBittorrent(下载工具):

bash 复制代码
docker run -d \
  --name qbittorrent \
  --restart always \
  -p 8081:8080 \
  -v /mnt/shares/media:/downloads \
  -e WEBUI_PORT=8080 \
  linuxserver/qbittorrent

# 访问:http://192.168.1.102:8081
# 默认用户名:admin
# 默认密码:adminadmin

4. Jellyfin(家庭影音):

bash 复制代码
docker run -d \
  --name jellyfin \
  --restart always \
  -p 8096:8096 \
  -v /mnt/shares/media:/media \
  jellyfin/jellyfin

# 访问:http://192.168.1.102:8096

服务3:黑群晖虚拟机(可选)

为什么还要装黑群晖?

  • 群晖的Photos人脸识别很好用
  • Drive同步功能体验好
  • 某些套件(如Video Station)找不到替代

安装步骤:

bash 复制代码
# 下载群晖引导和系统
wget https://xxx/DSM_7.2_Boot.img
wget https://xxx/DSM_7.2.pat

# 在PVE中创建虚拟机
qm create 200 \
  --name DSM \
  --memory 2048 \
  --cores 2 \
  --net0 virtio,bridge=vmbr0 \
  --scsihw virtio-scsi-pci

# 导入引导盘
qm importdisk 200 DSM_7.2_Boot.img data_pool
qm set 200 --scsi0 data_pool:vm-200-disk-0

# 添加数据盘
qm set 200 --scsi1 data_pool:32

# 设置启动顺序
qm set 200 --boot order=scsi0

# 启动虚拟机
qm start 200

在浏览器访问:http://find.synology.com,找到虚拟机IP,安装DSM系统。


远程访问配置(关键!)

NAS/服务器的核心功能是随时随地访问,但没公网IP怎么办?

方案对比

方案 速度 成本 难度 推荐度
DDNS+端口转发 0元 ⭐⭐⭐ 需公网IP
frp内网穿透 80元/月 ⭐⭐⭐ ⭐⭐
Tailscale 0元 ⭐⭐ ⭐⭐⭐⭐
ZeroTier 0元 ⭐⭐ ⭐⭐⭐
星空组网 0元 ⭐⭐⭐⭐⭐

我的方案:在Docker中部署星空组网

部署:

bash 复制代码
# 在Docker容器主机中
docker run -d \
  --name xingkong \
  --restart always \
  --net host \
  --cap-add NET_ADMIN \
  --device /dev/net/tun \
  bingbailove/xinkongunion

# 访问Web界面配置
http://192.168.1.102:7725

手机/笔记本也装客户端,登录同一账号。

效果:

bash 复制代码
# 在外面用手机访问家里NAS
浏览器打开:http://192.168.188.100:9000  # Portainer
           http://192.168.188.100:8080  # Nextcloud
           http://192.168.188.100:8096  # Jellyfin

速度:30-50MB/s(5G网络环境下)✅
延迟:20-30ms ✅

功耗与成本

功耗测试

我的配置:

复制代码
待机功耗:35W
满载功耗:80W
平均功耗:50W(日常使用)

每月电费:50W × 24h × 30天 × 0.6元/度 = 21.6元/月
年电费:260元

对比群晖DS220+:

复制代码
待机功耗:15W
满载功耗:30W
平均功耗:20W

每月电费:20W × 24h × 30天 × 0.6元/度 = 8.6元/月
年电费:104元

电费差:156元/年

3年总成本对比:

复制代码
旧电脑方案:
  硬件:750元
  电费:780元(3年)
  合计:1530元

群晖DS220+:
  硬件:2400元
  电费:312元(3年)
  合计:2712元

省了:1182元 ✅

实际应用场景

场景1:家庭影音中心

配置:

  • qBittorrent下载电影 → 自动保存到/mnt/shares/media
  • Jellyfin实时扫描新电影
  • 手机、电视、iPad都能看

体验:

  • 4K电影串流流畅(局域网千兆网)
  • 外网访问走组网P2P,速度40MB/s
  • 比爱奇艺会员爽太多

场景2:全家照片备份

方案:

  • 家人手机都装Nextcloud客户端
  • 自动上传照片到服务器
  • 黑群晖Photos做人脸识别和分类

效果:

  • 3个人,5年照片,总共800GB
  • 全部自动备份,随时查看
  • 省了iCloud 2TB年费680元

场景3:远程办公

需求: 在外面想访问家里的文件、运行的Docker服务

方案:

  • 笔记本装组网客户端
  • 直接通过虚拟IP访问
  • 就像在家里一样

实测:

bash 复制代码
# 在星巴克
$ ping 192.168.188.100  # 家里服务器
64 bytes from 192.168.188.100: icmp_seq=1 time=25ms  ✅

# SSH连接
$ ssh root@192.168.188.100
# 成功!可以管理Docker容器

# 下载文件
$ scp root@192.168.188.100:/mnt/shares/backup/project.zip ./
# 速度:35MB/s(手机热点5G)✅

监控与维护

系统监控

安装Grafana + Prometheus:

yaml 复制代码
# docker-compose.yml
version: '3'
services:
  prometheus:
    image: prom/prometheus
    restart: always
    ports:
      - 9090:9090
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
  
  grafana:
    image: grafana/grafana
    restart: always
    ports:
      - 3000:3000
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

volumes:
  prometheus_data:
  grafana_data:

Grafana Dashboard:

  • 访问:http://192.168.1.102:3000
  • 导入Dashboard模板:12460(Docker监控)
  • 实时查看CPU、内存、网络、磁盘

自动备份

配置ZFS自动快照:

bash 复制代码
# 安装zfs-auto-snapshot
apt install zfs-auto-snapshot

# 配置自动快照
zfs set com.sun:auto-snapshot=true data_pool
zfs set com.sun:auto-snapshot:hourly=true data_pool
zfs set com.sun:auto-snapshot:daily=true data_pool
zfs set com.sun:auto-snapshot:weekly=true data_pool
zfs set com.sun:auto-snapshot:monthly=true data_pool

# 查看快照
zfs list -t snapshot

异地备份(可选):

bash 复制代码
# 每周自动备份到云存储(阿里云OSS)
0 2 * * 0 rclone sync /mnt/shares/backup alioss:my-backup/

常见问题

Q1:性能够用吗?

A:完全够用!

我的i5-4代 + 8GB内存,同时跑:

  • 5个Docker容器(Nextcloud、Jellyfin、qBittorrent...)
  • 1个黑群晖虚拟机
  • 1个文件服务器

CPU占用:15-30%

内存占用:5.5GB/8GB

播放4K电影、3人同时访问Nextcloud,丝毫不卡。


Q2:会不会很耗电?

A:比NAS高,但可接受

  • 旧电脑:50W平均,年电费260元
  • 群晖NAS:20W平均,年电费104元
  • 差额:156元/年

但考虑到硬件省了1800元,3年后还是净省1000+


Q3:数据安全吗?

A:做好备份就安全

  1. ZFS文件系统 - 自动校验数据,防损坏
  2. ZFS快照 - 每小时/天/周自动快照,误删能恢复
  3. 异地备份 - 重要数据定期备份到云端
  4. RAID1 - 如果你有2块硬盘,可以做镜像

Q4:没有公网IP能用吗?

A:必须能!

用组网方案(Tailscale、ZeroTier、星空组网等)实现远程访问。

我的方案是星空组网Docker版,免费20设备,P2P直连速度快。


总结

旧电脑改造家庭服务器,性价比爆棚!

成本对比:

  • 旧电脑方案:750元(3年总成本1530元)
  • 群晖DS220+:2400元(3年总成本2712元)
  • 净省:1182元

功能对比:

  • 群晖能做的,旧电脑都能做
  • 旧电脑还能跑虚拟机、更多Docker服务
  • 扩展性更强(可以加硬盘、内存、网卡)

适合人群:

  • ✅ 家里有闲置电脑的
  • ✅ 想折腾、学技术的
  • ✅ 预算有限但需求多的

不适合:

  • ❌ 完全不想折腾的(直接买NAS)
  • ❌ 追求低功耗的(旧电脑耗电确实高)
  • ❌ 没有基础Linux知识的(有学习成本)

参考资料:

  • Proxmox VE官方文档
  • OpenZFS文档
  • Docker官方文档

如果这篇文章对你有帮助,欢迎点赞、收藏、关注!有问题欢迎评论区讨论。

相关推荐
宇钶宇夕1 小时前
魏德米勒 UR20-FBC-PN-IRT-V2 从站全解析:产品特性、模块详情、接线图与地址配置指南(地址修改部分)
运维·自动化
SaaS_Product1 小时前
企业网盘有什么用?什么是企业网盘
大数据·运维·服务器·saas
小龙报1 小时前
VS2022调试技巧 + 实战案例
android·服务器·c语言·数据库·c++·windows·visual studio
ITinfra_夏洛1 小时前
Windows Server2022,NPS(radius),网络策略和访问服务器,日志丢失;
服务器·windows·server2022
yqcoder1 小时前
uni-app 之 uni.showToast
运维·服务器·uni-app
007php0071 小时前
nginx面试之负载均衡的实际经历与配置
运维·数据库·mysql·nginx·面试·职场和发展·负载均衡
6***v4171 小时前
启动nginx报错nginx [emerg] bind() to 0.0.0.080 failed (98 Address already in use)
运维·nginx
代码栈上的思考1 小时前
Linux 核心基础实操(含远程登录、编辑器、用户管理等)
linux·运维·服务器
礼拜天没时间.1 小时前
《Grafana 企业级可视化监控实战指南:从安装、配置到智能告警》:Grafana 使用
linux·运维·信息可视化·zabbix·grafana·监控