手里有一台N100小主机,闲置很久了。之前用过飞牛 ,为什么不用了呢。因为挂载磁盘,必须格式化。还有掉盘后自动挂载,磁盘挂载目录就会变掉。导致内网磁盘共享经常会无法正常使用。痛定思痛,决定基于Ubuntu,搭建适合自己使用的 NAS 工具。

安装系统

没什么好讲的,使用 Rufus 制作引导盘。下载镜像 后,丢在U盘根目录即可。本次使用的是 Ubuntu 26.04.1 LTS。
插入U盘,开机按 F7 进入快速引导,选择U盘进行安装。
唯一需要注意的就是,别把U盘格式化了。

磁盘规划

当前小主机内有Nvme(256GB)、SSD(500GB),外接(30TBx2)硬盘盒。初步规划是:

  • Nvme:作为系统盘
  • SSD:作为 Docker 数据盘,后续可能会存放其他对速度有追求的项目
  • 外接硬盘盒:作为 NAS 的主盘,挂载到 Docker 中。同时通过脚本,实现冷备份(盘1定时备份到盘2)
/mnt/
├── ssd/
│   └── docker
│       ├── cache      # 挂载目录,主要用于存储不重要的数据
│       ├── compose    # 各服务的部署配置
│       ├── config     # 挂载目录,部分服务额外的config挂载
│       ├── data       # 挂载目录,部分服务额外的data挂载
│       └── logs       # 挂载目录,部分服务额外的日志挂载(不参与冷备份)
└── 其他挂载盘/         # 后续规划的共享文件目录

安装常用工具

sudo apt update
sudo apt install -y ca-certificates curl git

配置免sudo

sudo vim /etc/sudoers.d/ubuntu

输入如下内容

ubuntu ALL=(ALL:ALL) NOPASSWD: ALL

也可以直接用命令写入,ubuntu 替换为实际登录用户名:

echo 'ubuntu ALL=(ALL:ALL) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/ubuntu > /dev/null
sudo chmod 0440 /etc/sudoers.d/ubuntu

这里使用 sudo tee 写入系统文件,因为 sudo echo ... > 文件 中的重定向仍由当前用户执行。

配置SSH连接

Ubuntu安装后,默认是启用SSH的,但是无法远程访问(不想在屏幕前蹲着)。所以做如下修改:
修改 /etc/ssh/sshd_config.d/50-cloud-init.conf,添加如下内容。允许使用密码远程连接

PasswordAuthentication yes

首次配置时,也可以直接用命令写入并重启 SSH:

echo 'PasswordAuthentication yes' | sudo tee /etc/ssh/sshd_config.d/50-cloud-init.conf > /dev/null
sudo systemctl restart ssh

在 PC、笔记本上,创建密钥,使用账号密码连接服务器
在服务器上配置刚才创建的公匙 ~/.ssh/authorized_keys
并再次修改 /etc/ssh/sshd_config.d/50-cloud-init.conf
这里禁用了密码登录,并开启了一些必要的安全设置

#PasswordAuthentication yes

## 只允许公钥认证
PubkeyAuthentication yes
AuthenticationMethods publickey
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitEmptyPasswords no

# 使用普通管理员账户登录,再通过 sudo 提权
PermitRootLogin no

# 禁止 Agent、TCP、Unix socket、X11 等转发
DisableForwarding yes

# 禁止创建网络隧道设备及用户自定义登录环境
PermitTunnel no
PermitUserEnvironment no

# 禁用基于主机信任的认证
HostbasedAuthentication no
IgnoreRhosts yes

# 限制未认证连接的尝试次数与等待时间
MaxAuthTries 3
LoginGraceTime 30

# 记录登录使用的公钥指纹,方便审计
LogLevel VERBOSE

测试配置

sudo sshd -t

重启SSH

sudo systemctl restart ssh

重要:新开一个窗口,使用创建的密钥进行连接验证。

中文乱码

如果在安装的时候,选择的语言为英语,那么中文显示大概率会乱码。使用如下方案进行修正

cat >> ~/.bashrc <<'EOF'

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

EOF

source ~/.bashrc