使用设备:惠普 t628
安安静静地躺在我的书柜上
1. 安装系统
可用于家用服务器的系统选择其实很多。国内有非开源的 FNOS,国外则有开源的 TrueNAS、Unraid 等;通用 Linux 发行版方面,还有 Ubuntu Server、Debian、甚至 Arch(?);如果确实存在刚需,也可以选择 Windows Server。
但除传统 Linux 发行版以外,其余系统整体都偏向“成品化”和集成化,功能齐全的同时也相对臃肿。NAS 本身对性能要求不高,但考虑到 t628 的硬件性能较为有限,过于复杂的系统在长期折腾下仍可能成为瓶颈。
综合性能开销、系统自由度以及可控性,我最终选择了 Ubuntu Server。相较于 Debian,Ubuntu Server 的确更偏臃肿一些,但这种“臃肿”也换来了更友好的生态和更低的使用门槛。至于常被诟病的 Snap,虽然谈不上喜欢,但在可接受范围内,实际使用中确实能带来一定便利。
Debian 在简洁性和稳定性上依然更胜一筹,但权衡之后,我个人仍然可以接受 Ubuntu Server——毕竟在大多数场景下,Snap 等机制确实能省下不少时间和精力。
1.1 安装过程
Ubuntu Server 的安装流程本身较为简单。首先前往 [Ubuntu 官方网站](https://ubuntu.com/download/server) 下载系统镜像,然后通过启动盘完成安装即可。无论是使用 Rufus 还是 Ventoy,方式并无本质区别,只要能正常引导并完成安装即可。
需要注意的是:如果你计划将主机放置在无人值守或不便连接显示器与键盘的位置,建议在安装阶段就配置好 SSH,以便后续远程管理。
下面是具体的 SSH 配置流程。
1.1.1 SSH 配置教程
首先,在你日后用于管理服务器的电脑上打开终端(如果找不到,可以直接在搜索栏中搜索“终端”或“PowerShell”)。
执行以下命令生成 SSH 密钥:
ssh-keygen -t ed25519 -C "your_email@example.com"请将
your_email@example.com替换为你自己的邮箱。虽然该字段并不影响功能,但用于标识密钥,建议填写。
随后一路回车(通常 3~4 次),直到命令执行结束。
生成完成后,密钥文件默认位于:
C:\Users\你的用户名\.ssh\
├─ id_ed25519 (私钥,**务必妥善保管,绝不可泄露**)
└─ id_ed25519.pub (公钥,用于服务器或 GitHub)
接下来复制公钥内容(供后续使用):
type $env:USERPROFILE\.ssh\id_ed25519.pub请完整复制输出的整行内容。
将 SSH Key 添加到 GitHub
如果尚未注册 GitHub 账号,请先完成注册。
- 打开 GitHub
- 点击右上角头像 → Settings
- 左侧选择 SSH and GPG keys
- 点击 New SSH key
- 填写以下信息:
- Title:
任意,用于区分设备
示例:debian-server/laptop/home-nas - Key type:
保持默认Authentication Key - Key:
粘贴刚才复制的完整公钥
- Title:
- 点击 Add SSH key
- 按提示输入 GitHub 密码确认
最后,在 Ubuntu Server 安装过程中:
- 启用 SSH 服务
- 选择 从 GitHub 导入 SSH key
- 输入对应的 GitHub 用户名
这样在系统安装完成后,即可直接通过 SSH 使用密钥登录服务器,无需再进行额外配置。
要想登录也很简单,终端输入
ssh 用户名@ip地址
有可能会问你yes/no/fingerprint,直接yes即可。
然后输入账号密码就行了。
1.1.2 配置软件源
Ubuntu 默认使用的官方软件源在国内访问速度和稳定性都不理想,实际使用中容易出现下载慢甚至失败的情况。因此,建议在安装阶段或安装完成后,将软件源切换为国内镜像站,例如 清华大学开源软件镜像站。
在 Ubuntu Server 安装过程中,当安装程序询问软件源地址时,可以直接填写清华源:
https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
如果在安装阶段未进行配置,也可以在系统安装完成后手动修改 /etc/apt/sources.list 来完成切换。切换完成后,执行以下命令更新软件索引:
sudo apt update更换为国内镜像源后,apt 在下载软件包和更新系统时的速度与稳定性都会有明显改善,尤其是在首次安装大量依赖时效果尤为明显。
2. 初步配置系统
2.1 更新系统与基础工具
在开始进一步配置之前,建议先对系统进行一次完整更新,并安装一些常用的基础工具。
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim htop net-tools这两行是 Debian / Ubuntu 系列里非常常见的初始化命令,作用可以分开精确说明。
第一行
sudo apt update && sudo apt upgrade -ysudo
以 root 权限执行。普通用户默认不能改系统软件。
apt update
- 更新软件源索引
- 从
/etc/apt/sources.list及/etc/apt/sources.list.d/中配置的镜像站:- 下载“有哪些软件、有哪些版本”的清单
- ❗不会安装或升级任何软件
可以理解为:刷新可用软件列表
&&
- 逻辑与
- 含义是:
👉 只有前一个命令成功,才执行后一个
如果 apt update 失败,apt upgrade 不会执行。
apt upgrade -y
- 升级已安装的软件包
- 只升级:
- 已安装
- 且不需要删除旧包、不引入冲突的新包
-y表示:- 自动回答 “yes”
- 不再交互确认
(那是 full-upgrade / dist-upgrade 干的事)
第一行总结
刷新软件源 → 把系统中能安全升级的软件全部升级到最新版本
第二行
sudo apt install -y curl wget vim htop net-tools含义
- 使用
apt安装一组常用工具 -y:不询问,直接安装
各软件具体作用
curl
- 命令行 HTTP/HTTPS 客户端
- 常见用途:
- 调用 API
- 下载文件
- 一键脚本(
curl | bash)
示例:
curl https://example.comwget
- 命令行 文件下载工具
- 更偏向“稳定下载”
示例:
wget https://example.com/file.zip📌 curl 更灵活,wget 更专注下载
很多服务器教程会两个都装
vim
- 终端文本编辑器
- 常用于:
- 编辑配置文件
- 改 systemd / nginx / docker 配置
示例:
vim /etc/ssh/sshd_confightop
- 交互式 进程/资源监控
- 比
top:- 更直观
- 支持鼠标
- 彩色界面
示例:
htopnet-tools
- 提供老一代网络命令:
ifconfignetstatroute
⚠️ 已被iproute2(ip a,ss)取代- 但很多老教程仍依赖它
第二行总结
安装一套几乎所有服务器 / Linux 新系统都会装的基础工具
整体一句话总结
这两行命令的目的就是:
更新系统 → 升级已有软件 → 安装一套常用的命令行工具,作为系统的“基础环境”
接下来可以通过安装一款简单的工具来验证软件源和系统是否工作正常。这里以 neofetch 为例,该工具用于在终端中展示系统的基本信息。
sudo apt install neofetch按提示输入 y 确认安装。安装完成后,直接执行:
neofetch即可看到系统信息的汇总展示界面,例如下图所示:
如果能够正常显示,说明当前软件源配置与基础环境均工作正常,可以继续后续的系统配置与服务部署。
2.1.1 安装“扶手梯”
名字叫“扶手梯”,但实际上就是你理解的那个——网络代理工具。
由于后续会大量使用 Docker,包括拉取镜像、访问 GitHub 等资源,如果没有稳定的网络环境,实际体验会非常糟糕。因此,这一步几乎是必需的前置条件。
这里直接使用 [nelvko](https://github.com/nelvko) 大佬提供的脚本,整体安装过程相对省心。
在终端中执行以下命令即可开始安装:
git clone --branch master --depth 1 https://gh-proxy.org/https://github.com/nelvko/clash-for-linux-install.git \
&& cd clash-for-linux-install \
&& bash install.sh安装过程中按照脚本提示操作即可,基本不需要额外干预。
如果你还没有可用的订阅链接,可以参考我之前写的一篇文章:
👉 [低价机场推荐](https://blog.realityme.top/2025/08/02/低价机场推荐/)
接着重启。
**注:**一些可能用到的命令:
Usage:
clashctl COMMAND [OPTIONS]
Commands:
on 开启代理
off 关闭代理
status 内核状况
proxy 系统代理
ui Web 面板
secret Web 密钥
sub 订阅管理
upgrade 升级内核
tun Tun 模式
mixin Mixin 配置
Global Options:
-h, --help 显示帮助信息
更优雅的方式:
$ clashon
😼 已开启代理环境
$ clashoff
😼 已关闭代理环境
更多内容查看[GitHub仓库](https://github.com/nelvko/clash-for-linux-install)
完成以上配置后,后续无论是 Docker 拉镜像还是访问各类国外服务,整体体验都会顺畅许多,可以继续安心折腾了。
2.1.2 安装 Docker 与 Compose
Docker 是后续服务部署的核心组件,这里直接使用官方提供的一键安装脚本进行安装,省去手动配置依赖的步骤。
下面我会逐条、逐命令解释在 Ubuntu 上安装 Docker Engine + Docker Compose(v2) 的全过程。内容偏“原理 + 实操”,适合理解而不是只照抄。
适用系统:Ubuntu 20.04 / 22.04 / 24.04(Desktop / Server 通用)
一、为什么不直接 apt install docker
Ubuntu 自带仓库里的 Docker 版本通常:
- 版本旧
- 功能不全
- Compose 不是 v2
因此官方推荐:
使用 Docker 官方仓库安装
二、准备系统依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release逐项解释
1️⃣ apt update
- 更新本地 软件索引
- 不安装任何东西
- 相当于“刷新应用商店”
2️⃣ ca-certificates
- 提供 HTTPS 证书
- 没它:
- HTTPS 源可能报错
- curl 访问 https://download.docker.com/ 会失败
3️⃣ curl
- 命令行下载工具
- 后面用它:
- 下载 Docker 的 GPG 公钥
4️⃣ gnupg
- GPG 加密工具
- 用来:
- 验证 Docker 软件包 是否被篡改
5️⃣ lsb-release
- 用来识别 Ubuntu 版本代号
- 比如:
- 22.04 →
jammy - 24.04 →
noble
- 22.04 →
三、添加 Docker 官方 GPG Key(安全核心)
1️⃣ 创建 keyrings 目录
sudo install -m 0755 -d /etc/apt/keyrings解释
/etc/apt/keyrings
用来存放 第三方仓库的公钥0755- 所有人可读
- root 可写
install -d- 比
mkdir更安全、规范
- 比
2️⃣ 下载并转换 Docker 公钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg拆解理解
curl -fsSL
-f:失败时不输出 HTML-s:静默-S:出错时显示错误-L:跟随重定向
| 管道
- 把下载的公钥内容传给
gpg
gpg --dearmor
- Docker 提供的是 ASCII 格式公钥
- apt 需要 二进制格式
--dearmor就是转换格式
3️⃣ 设置读取权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg解释
- apt 是普通用户进程
- 如果不能读这个 key:
- apt update 会失败
四、添加 Docker 官方软件源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null逐段解释
1️⃣ dpkg --print-architecture
输出:
amd64(你的 i5-1135G7 就是)- 用于确保架构匹配
2️⃣ signed-by=...
告诉 apt:
这个仓库必须用 docker.gpg 验证
这是现代 apt 的安全写法
(旧的 apt-key 已被弃用)
3️⃣ $(lsb_release -cs)
自动识别版本代号:
- 20.04 →
focal - 22.04 →
jammy - 24.04 →
noble
避免手写出错
4️⃣ /etc/apt/sources.list.d/docker.list
- 单独放 Docker 的源
- 不污染系统主 sources.list
- 方便以后删除或管理
5️⃣ > /dev/null
- 屏蔽输出
- 防止终端显示重复内容
五、刷新索引
sudo apt update此时 apt 会:
- 访问 Docker 官方服务器
- 校验 GPG 签名
- 拉取 Docker 软件包列表
如果这一步不报错,说明:
仓库配置完全正确
六、安装 Docker 与 Compose
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin每个包是干嘛的
🧱 docker-ce
- Docker 核心服务
- 后台守护进程(dockerd)
🖥 docker-ce-cli
docker命令本体- 没它你无法敲 docker
📦 containerd.io
- 容器运行时
- 实际负责:
- 拉镜像
- 创建容器
- 管理生命周期
Docker 本质上是 containerd 的“上层管理器”
🏗 docker-buildx-plugin
- 新一代构建引擎
- 支持:
- 多架构镜像
- cache
- 并行构建
🧩 docker-compose-plugin
- Compose v2
- 集成进 docker 命令
- 使用方式是:
docker compose ...❌ 不再是:
docker-compose七、验证安装是否成功
docker version你应该看到:
- Client
- Server
- API version
- Engine version
docker compose version确认:
- 是 v2.x
- 不是 python compose
八、测试 Docker 是否能跑容器
sudo docker run --rm hello-world发生了什么?
- 本地没镜像 → 自动拉取
- 创建容器
- 打印欢迎信息
--rm自动删除容器
这一步成功:
Docker 运行链路完整
九、为什么默认要 sudo?
原因
- Docker 守护进程运行在 root
- socket 在:
/var/run/docker.sock十、免 sudo 使用 Docker(关键)
sudo usermod -aG docker $USER解释
- 把当前用户加入
docker用户组 - 该组对 docker.sock 有权限
否则组权限不会生效
验证:
groups十一、Compose 工作原理(简述)
docker-compose.yml:- 定义多个容器
- 网络
- 卷挂载
docker compose up- 自动创建网络
- 自动拉镜像
- 自动启动顺序
总结:
一、准备工作
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release二、添加 Docker 官方仓库
- 导入 GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg- 添加源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null- 更新索引
sudo apt update三、安装 Docker Engine 与 Compose
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin注意:
- docker-compose-plugin 即 Compose v2(推荐)
- 不再建议单独安装旧的
docker-compose(Python 版)
四、验证安装
docker version
docker compose version测试容器:
sudo docker run --rm hello-world五、免 sudo 使用 Docker(强烈建议)
sudo usermod -aG docker $USER然后注销并重新登录,再测试:
docker ps六、Docker Compose 使用示例
mkdir ~/compose-test && cd ~/compose-testdocker-compose.yml:
services:
nginx:
image: nginx:alpine
ports:
- "8080:80"启动:
docker compose up -d停止:
docker compose down七、常见问题排查
- 权限错误(permission denied)
→ 没有重新登录,或未加入docker组 - compose 命令不存在
→ 确认安装的是docker-compose-plugin,命令是
docker compose(中间有空格) - 服务器环境
Ubuntu Server 与 Desktop 安装方式完全一致