🌟 引言#把旧电脑变成 7×24 小时运行的私有云?自主掌控照片、视频、文档的备份与同步?在电视上流畅播放 4K 电影(支持 Intel 核显硬解)?用 iSCSI 将机械硬盘映射为 Windows 的“本地磁盘”来存 Steam 游戏?搭建《我的世界》服务器,和朋友随时联机?这一切,只需一台家用服务器即可实现。
💡 建议配置:2 核 CPU、4GB+ 内存、2 块以上硬盘、有线网络(更稳定)。本教程基于 Ubuntu Server 24.04,适合有一定 Linux 基础的用户。
🛠️ 底层基础:系统、网络、存储、协议与开发环境#🔧 APT软件仓库更新。#
# 检查可用的软件包更新
sudo apt update
# 安装可用的软件包更新
sudo apt upgrade
📊 查看系统状态#
# 打印所有服务状态
sudo service --status-all
# 查看整个系统磁盘使用情况
df -h
# 列出所有可用block设备的信息
lsblk
# 打印已安装包列表
dpkg -l
🌐 网络配置#📍 配置静态IP地址与 WiFi (可选)#sudo nano /etc/netplan/50-cloud-init.yaml
ethernets:
ens33:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114
wifis:
wlan0:
dhcp4: true
access-points:
"MyHomeWiFi":
password: "mysecretpassword"
# 检查语法
sudo netplan generate
# 120秒安全回滚模式测试
sudo netplan try
#
sudo netplan apply
🔐 生成SSH KEY#ls -al ~/.ssh
ssh-keygen -t ed25519 -C "email"
cat ~/.ssh/id_ed25519.pub
💾 存储配置#🧩 传统磁盘 RAID (可选)#sudo mdadm --zero-superblock /dev/sdb
sudo mdadm --zero-superblock /dev/sdc
# 创建 RAID 0 阵列 /dev/md0
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
🗃️ ZFS 文件系统(推荐)#Zettabyte File System由Sun Microsystems开发的第一个128位文件系统,最初用于Solaris 10操作系统。
设计目标是提供一个高扩展性、强大且易于管理的文件系统。
存储池 —— 与传统文件系统不同,ZFS将所有设备集中到一个存储池中进行管理,这使得文件系统不再局限于单独的物理设备。写时拷贝事务模型 —— 含有活动数据的块从不被覆盖,而是分配一个新块,并将修改后的数据写在新块上。快照与克隆 —— 快照是文件系统在某一时刻的只读副本,而克隆是可写的快照。动态条带化 —— 当额外的设备被加入到存储池中时,条带宽度会自动扩展以包含这些设备。数据完整性与自我修复 —— 它对所有数据进行256位的校验,并在发现错误时自动修复。高效的数据压缩 —— 可以提供极快的压缩和解压缩速度。
# Ubuntu 24.04 已内置 OpenZFS(2.2+),只需安装用户态工具
# 安装 ZFS 工具
sudo apt install -y zfsutils-linux
# 创建 ZFS 存储池(zpool)
sudo zpool create -f -o ashift=12 games sdb sdc sdd sde
# 查看池状态
sudo zpool status games
# 创建 ZVOL
sudo zfs create -V 10T -o volblocksize=4K games/steam
# 查看挂载点
zfs list
# -f:强制创建
# -o ashift=12:4K 扇区对齐
# nas:池名称
# /dev/sdf:硬盘设备
sudo zpool create -f -o ashift=12 nas /dev/sdg
# 启用高效压缩
sudo zfs set compression=zstd nas1
# 创建 dataset(自动挂载到 /nas/home)
sudo zfs create nas/home
# 查看池状态
zpool status nas
# 查看挂载点
df -h /nas/home
📡 通信协议服务#关于DHCP、TFTP、HTTP、SMB、NFS、iSCSI等通信服务的安装,请参考下列文章。
Windows10 无盘启动7 分钟部署
示例
配置
项目站点背景 # 准备 # 服务器 # 搭建DHCP服务 搭建TFTP服务 搭建HTTP服务 搭建SMB服务 搭建NFS服务 搭建iSCSI服务 编译iPXE 下载wimboot 构建WinPE 下载Windows安装包 客户端 # 进入主板的BIOS设置中💻 开发环境#🐘 PHP#安装PHP和所需的Modules#ctype (included with PHP)curlDOMfileinfo (included with PHP)filter (only on Mageia and FreeBSD)GDlibxml (requires Linux package libxml2 version >= 2.7.0)mbstringOpenSSL (included with PHP)posixsession (included with PHP)SimpleXMLXMLReaderXMLWriterzipzlib
sudo apt show php
sudo apt install -y php-fpm php-mysql php-gd php-curl php-mbstring \
php-intl php-xml php-zip php-bz2 php-ldap php-apcu \
php-imagick php-smbclient php-redis
php -v
#sudo systemctl enable --now php8.3-fpm
sudo systemctl status php8.3-fpm
☕ JAVA#安装#sudo apt update
sudo apt install -y openjdk-21-jre-headless
java -version # 确认版本
📦 Node.js#概述#安装#curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - &&\
sudo apt install -y nodejs
sudo apt install nodejs
# 安装npm
sudo apt install npm
# 安装版本管理模块
sudo npm install -g n
# 升级指定版本
sudo n lts
🗄️ MySQL#安装MySQL#sudo apt install -y mysql-server
# 启动 MySQL
sudo systemctl enable --now mysql
# 运行安全初始化
sudo mysql_secure_installation
# 默认会为数据库的 root 用户启用 auth_socket 插件。
sudo mysql
添加默认用户#CREATE USER 'yang'@'localhost' IDENTIFIED BY 'password';
grant all on *.* to yang@'localhost';
SHOW GRANTS FOR 'yang'@'localhost';
revoke all on *.* from yang@'localhost';
select user();
mysql -u yang -p
为 Nextcloud 创建数据库和用户#CREATE DATABASE nextcloud;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
🧰 composer#安装和配置PHP的依赖关系管理器
php -r "copy('https://getcomposer.org/installer ', 'composer-setup.php');"
php composer-setup.php
# 全局调用
sudo mv composer.phar /usr/local/bin/composer
# 切换为国内镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# 更新
composer selfupdate
📺 顶层服务#🎮 搭建游戏仓库#
# 进入 iSCSI 配置的命令行界面
sudo targetcli
# 将磁盘阵列 /dev/md0 定义为一个存储设备:
/backstores/block create steam_disk /dev/zvol/games/steam
# 创建 iSCSI Target (IQN)
/iscsi create
# 创建 LUN (逻辑单元号)
/tpg1/luns create /backstores/block/steam_disk
# 配置 ACL (访问控制列表)
tpg1/acls create
# 启用“自动生成 ACL”
set attribute generate_node_acls=1
# 禁用身份验证
set attribute authentication=0
saveconfig
exit
📁 搭建文件共享#基于NFS#基于SMB#
# 停止 Samba(避免权限冲突)
sudo systemctl stop smbd
# 修改配置文件
sudo nano /etc/samba/smb.conf
[share]
comment = My Public Storage
path = /nas/home
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
# guest ok = yes
valid users = writeuser
# 创建 Samba 用户
sudo useradd -r -s /bin/false writeuser
# 设置密码
sudo smbpasswd -a writeuser
# 修复权限
sudo chown -R writeuser:writeuser /nas/home
sudo chmod -R 0775 /nas/home
# 验证修复结果
ls -ld /nas/home
# drwxrwxr-x 2 writeuser writeuser 2 Nov 29 01:16 /nas/home
# 重启 Samba
sudo systemctl start smbd
🎬 Jellyfin —— 媒体系统#Jellyfin 是一个由志愿者打造的媒体解决方案,让你完全掌控自己的媒体内容。
从你自己的服务器向任意设备串流播放,无任何限制。
你的媒体,你的服务器,由你做主。
步骤 1 :安装## 添加官方仓库(Ubuntu 24.04 示例)
wget -O- https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/jellyfin-team.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/jellyfin-team.gpg] https://repo.jellyfin.org/ubuntu noble main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
sudo apt update
sudo apt install jellyfin
步骤 2 :配置媒体目录权限#sudo mkdir -p /nas/home/Videos
sudo chown -R $USER:jellyfin /nas/home/Videos
sudo chmod -R 755 /nas/home/Videos
步骤 3 :启用硬件转码#Intel 核显
sudo usermod -aG video jellyfin
sudo systemctl restart jellyfin
📥 qBittorrent#免费、开源且无广告的 P2P BitTorrent 下载客户端。
项目旨在提供一个 µTorrent 的开源替代软件。
步骤 1 :安装#sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable
sudo apt update
sudo apt install qbittorrent-nox
步骤 2 :创建专用用户与目录(官方建议)#
# 创建用户
sudo adduser qbtuser
# 禁用 shell 登录(安全)
sudo usermod -s /usr/sbin/nologin qbtuser
# 创建目录
sudo mkdir -p /nas/home/Downloads{Documents,Music,Pictures,Videos}
#
sudo chown -R qbtuser:qbtuser /nas/home/Downloads
步骤 3 :初始化配置#
# 切换到 qbtuser 用户
sudo -u qbtuser -s /bin/bash
# 手动运行一次(会生成配置 + 接受免责声明)
qbittorrent-nox --webui-port=8081
# You must accept the legal disclaimer to continue. Do you agree? [y/n]: y
步骤 4 :使用官方模板启用服务#
# 启动服务(注意 @qbtuser)
sudo systemctl start qbittorrent-nox@qbtuser
# 设为开机自启
sudo systemctl enable qbittorrent-nox@qbtuser
步骤 5 :验证#systemctl status qbittorrent-nox@qbtuser
journalctl -u qbittorrent-nox@qbtuser -n 10 --no-pager
要控制 qBittorrent,请访问下列地址的 WebUI:http://localhost:8080
WebUI 管理员用户名是:admin
🖥️ Cockpit#一款基于WEB的服务器管理图形界面。
步骤 1 :安装#sudo apt install -y cockpit \
cockpit-storaged \ # 存储管理(RAID/挂载点)
cockpit-packagekit \ # 软件更新
cockpit-pcp \ # 性能监控(可选)
cockpit-file-sharing \ # 图形化文件共享
cockpit-logs \ # 服务日志
步骤 2 :启动服务#sudo systemctl enable --now cockpit.socket
步骤 3 :权限## 将登录用户加入 sudo 组
sudo usermod -aG sudo family_member
☁️ Nextcloud#下载#cd /var/www
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2
sudo tar -xjf latest.tar.bz2
sudo mv nextcloud nextcloud
sudo chown -R www-data:www-data /var/www/nextcloud
配置为可用的网站## 创建并编辑配置文件
sudo nano /etc/nginx/sites-available/nextcloud
📚 Docusaurus#默认页面位于**/var/www/html/**位置。
您可以将静态页面放在此处,或者使用虚拟主机并将其放在其他位置。
虚拟主机是一种在同一服务器上托管多个域名的方法。
Docusaurus是一款现代化的静态网页生成器。
使用命令行工具可以帮助你快速简单地安装Docusaurus并搭建网站框架。
cd /var/www
npx create-docusaurus@latest tutorials classic
我们需要将网站生成为静态内容,并上传到网络服务器,才能被其他人访问。
要构建站点,请使用以下命令:
cd tutorials
npm run build
设置虚拟主机#要设置虚拟主机,我们需要在**/etc/nginx/sites-enabled/**目录中创建文件。
对于本教程,我们将在81端口上提供我们的站点,而不是标准的80端口。
如果您愿意,可以更改它。
cd /etc/nginx/sites-enabled
sudo "${EDITOR:-vi}" tutorials
server {
listen 81;
listen [::]:81;
server_name docs.minebox.xyz;
root /var/www/tutorials/build;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
root是放置our.html文件的目录。
index用于指定访问站点根目录时可用的文件。
server_name可以是您想要的任何内容,因为您现在还没有将它指向任何真实的域。
通过在sites-enabled目录新建一个链接
sudo ln -s /etc/nginx/sites-available/docs.minebox.xyz.conf /etc/nginx/sites-enabled/
激活虚拟主机并测试结果#要使我们的站点工作,只需重新启动Nginx服务。
sudo service nginx restart
让我们检查一下是否一切正常。
在web浏览器中打开我们新创建的网站。
请记住,我们使用了:81端口。
👻 Ghost#安装#usermod -aG sudo lighthouse
sudo mkdir -p /var/www/minebox
sudo chown lighthouse:lighthouse /var/www/minebox
sudo chmod 775 /var/www/minebox
cd /var/www/minebox
ghost install
配置#🎮 游戏服务器#Minecraft#步骤 1 :安装 Java 21(OpenJDK)#步骤 2 :创建专用用户与目录#sudo adduser --system --group minecraft
sudo mkdir -p /opt/minecraft
sudo chown minecraft:minecraft /opt/minecraft
ls -la /opt/minecraft
步骤 2 :下载 PaperMC#一款广泛使用、高性能的《我的世界》服务器,旨在修复游戏玩法和机制的不一致之处。
cd /opt/minecraft
sudo -u minecraft wget -O paper.jar https://fill-data.papermc.io/v1/objects/a61a0585e203688f606ca3a649760b8ba71efca01a4af7687db5e41408ee27aa/paper-1.21.10-117.jar
步骤 3 :初始化配置#首次启动会自动生成 eula.txt 和 server.properties 。
sudo -u minecraft java -Xms1G -Xmx4G -jar paper.jar nogui
# 首次启动会失败(需同意 EULA),编辑 eula.txt
sudo -u minecraft sed -i 's/false/true/g' eula.txt
步骤 4 :关键优化项#
# 编辑
sudo nano /opt/minecraft/server.properties
# 基础设置
server-port=25565
server-ip=0.0.0.0
online-mode=false # 支持第三方启动器
max-players=20
view-distance=8 # 降低以节省内存(默认 10)
simulation-distance=6 # 1.18+ 新参数,控制区块模拟距离
motd=§aMy PaperMC Server §7(1.21.10)
# 性能
enable-jmx-monitoring=false
sync-chunk-writes=true
enable-status=true
allow-flight=false
# 世界
level-name=world
level-type=minecraft\:normal
generate-structures=true
步骤 5 :创建 systemd 服务(自动启动 + 崩溃重启)#
# 编辑
sudo nano /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Server (PaperMC)
After=network.target
[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms1G -Xmx4G -jar paper.jar nogui
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
步骤 6 :启用服务#
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
# Created symlink /etc/systemd/system/multi-user.target.wants/minecraft.service → /etc/systemd/system/minecraft.service.
sudo systemctl status minecraft
# 实时日志
journalctl -u minecraft -f
# 重启服务器
sudo systemctl restart minecraft
步骤 7 :自动备份#
# 编辑文件
sudo nano /etc/cron.daily/minecraft-backup
#!/bin/bash
# 停止服务器(可选,或使用插件热备份)
sudo systemctl stop minecraft
# 备份 world 目录
tar -czf /nas/home/backups/minecraft_$(date +%F).tar.gz -C /nas/home/backups/ world
# 启动服务器
sudo systemctl start minecraft
每日一次
# 赋予执行权限
sudo chmod +x /etc/cron.daily/minecraft-backup
SteamCMD#SteamCMD是一个命令行版本的 steam 客户端。
它的主要用途是在一个命令行界面的 Steam 客户端上安装及更新各种可用的专用服务端。
它适用于使用 SteamPipe 内容分发系统的游戏。
步骤 2:创建专用用户和目录
# 创建系统用户(无登录 shell)
sudo adduser --system --group --home /opt/steam --shell /bin/bash steam
# 创建目录结构
sudo mkdir -p /opt/steam/{servers,logs}
sudo chown -R steam:steam /opt/steam
📌 结语#你现在拥有一台功能完整的家庭服务器:
✅ 私有云盘(Nextcloud)
✅ 4K 媒体中心(Jellyfin)
✅ 高速游戏仓库(iSCSI)
✅ 全家文件共享(SMB/NFS)
✅ 《我的世界》联机服务器
下一步可探索:
外网访问(Tailscale + Let’s Encrypt)
ZFS 自动快照备份
统一入口(Heimdall / Organizr)
🎥 如果这期教程对你有帮助,点赞、投币、收藏就是最大支持!
💬 评论区告诉我:你最想用家庭服务器实现什么功能?
Windows10 无盘启动7 分钟部署
示例
配置
项目站点背景 # 准备 # 服务器 # 搭建DHCP服务 搭建TFTP服务 搭建HTTP服务 搭建SMB服务 搭建NFS服务 搭建iSCSI服务 编译iPXE 下载wimboot 构建WinPE 下载Windows安装包 客户端 # 进入主板的BIOS设置中
**警告!**此操作具有破坏性!
**query ip**
`sudo apt install net-tools`
`ifconfig`

[nmap](https://nmap.org/ ) **网络嗅探器**
``sudo apt install nmap``
**扫描局域网主机发现**
``sudo nmap -sP 192.168.45.0/24``


