一个计算机技术爱好者与学习者

0%

个人电脑作为Ubuntu服务器

1. 前言

最近买了个85寸电视,就想搞个NAS。
看了看价格,绿联NAS DX4600 2000左右,蜗牛星际NAS 1000左右,硬盘还需要另外购买。贫穷,让我想到了废弃已久的华为荣耀笔记本电脑。
要不然,用它作为NAS?还可以作为软路由?还可以部署Nginx、Jupyter、ChatGPT代理等常用服务,还可以参考 Awesome-Selfhosted 部署更多有趣的项目,想想还挺不错。搞起来!

2. NAS与软路由简介

NAS,全称为网络附属存储(Network Attached Storage),是一种专门的网络存储设备。NAS 设备通过网络直接连接到其他设备,用户可以随时随地通过网络存取NAS中的数据。
NAS设备的主要功能是提供数据存储和备份,同时还可能有流媒体服务、打印服务等其他功能。NAS设备可用于家庭和企业,帮助实现数据共享和存储管理,特别在企业场景下,NAS可以优化数据备份、共享和远程访问等业务流程。

软路由是指使用普通计算机和路由软件实现的具有路由功能的设备。与一般的硬件路由器不同,软路由器可以运行在商用操作系统上,并由用户自定义和配置,以满足特定网络环境和应用的需求。软路由可以提供诸如路由转发、防火墙、VPN、流量管理等多种功能。

NAS和软路由一体化设备,就是同时实现网络路由和数据存储功能的设备。它既能提供网络路由和防火墙等网络服务,又能提供文件共享和数据备份等存储服务。以下是几种常见的一体化方案:

  • 在通用Linux系统中安装NAS软件和路由软件。通用Linux系统中(如Ubuntu、CentOS),安装NAS软件来实现存储功能,安装路由软件来实现路由功能。
  • 在NAS系统中安装路由软件。NAS系统中(如FreeNAS、OpenMediaVault),安装路由软件来实现路由功能。
  • 在软路由系统中安装NAS软件。软路由系统中(如OpenWrt、pfSense、OPNsense),安装NAS软件来实现存储功能。
  • 虚拟化技术。在主机上创建两个虚拟机,分别安装软路由系统和NAS系统;或者使用Docker,运行软路由系统和NAS系统。
  • 商业一体化设备。一些厂商推出了一体化的软路由NAS设备,如华硕的RT-AC86U、群晖的DS216j等。这些设备可以同时实现软路由和NAS的功能,方便用户快速搭建家庭网络。

参考文档:

3. 安装Ubuntu系统

参考文档:Create a bootable USB stick on macOS

1、服务器系统选择 ubuntu-18.04.6-desktop-amd64.iso
之所以选择desktop版,是因为desktop版是图形化界面,初始化配置很方便。后期不想要desktop的话,可以卸载掉。

2、使用balenaEtcher制作一个U盘启动盘

3、笔记本插入U盘,开机选择从U盘启动

4、根据提示安装Ubuntu系统

4. 初始化Ubuntu系统

4.1. 配置固定IP

图形界面配置。

或者参考《Ubuntu18配置静态IP》,使用命令行配置。

4.2. 配置合上屏幕不休眠

1、编辑logind配置

1
vim /etc/systemd/logind.conf

修改其中的配置为:

1
HandleLidSwitch=ignore

HandleLidSwitch是指笔记本屏幕合起来,设置为ignore,也就是笔记本屏幕合起来时不进行任何改变。

2、重启 systemd-logind

1
systemctl restart systemd-logind

5. 安装配置Samba

5.1. 安装Samba

1、安装Samba

1
apt install samba

2、查看Samba服务状态

1
systemctl status nmbd

5.2. 配置Samba

1、创建共享目录并设置权限

1
2
3
4
mkdir -p /data/samba/video
chgrp sambashare /data/samba
chgrp sambashare /data/samba/video
chmod 2770 /data/samba/video

用户组sambashare是在安装Samba过程中自动创建的。

3、创建samba用户并授权

1
2
useradd -m -s /usr/sbin/nologin -G sambashare samba
smbpasswd -a samba

Samba权限控制使用Linux用户和组的权限系统,但具有自己的身份验证机制,与标准Linux身份验证分开。

4、配置共享目录和用户
编辑samba配置文件

1
vim /etc/samba/smb.conf

在文件最后添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[video]
path = /data/samba/video
browseable = yes
read only = no
force create mode = 0660
force directory mode = 2770
valid users = @sambashare @sadmin

#[doc]
# path = /data/samba/doc
# browseable = no
# read only = yes
# force create mode = 0660
# force directory mode = 2770
# valid users = samba @sambashare

配置说明:

  • [video][doc] 表示登录时使用的共享名称。
  • path 表示共享的目录。
  • browseable 表示可浏览,是否可在共享列表中列出此共享。如果设置为no,其他用户将看不到共享目录。
  • read only 表示valid users列表中指定的用户是否设置仅允许读,如果值yes,则仅允许读。
  • force create mode 表示此共享创建文件时设置的文件权限模式。
  • force directory mode 表示此共享创建目录时设置目录权限的模式。
  • valid users 表示允许访问共享的用户和组的列表。群组以@符号为前缀。

更多配置选项,请参考文档 smb.conf — The configuration file for the Samba suite

5、重启samba

1
2
systemctl restart nmbd
systemctl status nmbd

5.3. 测试使用Samba

1、安装 samba client

1
apt install smbclient

2、创建测试文件

1
touch test.txt

3、连接samba server

1
smbclient //192.168.5.233/users -U samba

4、上传下载文件

1
2
3
4
smb: \> ls
smb: \> put test.txt test.txt
smb: \> get test.txt test2.txt
smb: \> exit

下载文件时,还可以使用smbget工具

1
smbget -U samba smb://192.168.5.233/video/test.txt -o test3.txt

5.4. 配置防火墙

1
ufw allow 'Samba'

6. 本地挂载阿里云盘

6.1. 安装Docker

参考文档:《Docker入门篇》

6.2. 获取阿里云盘refresh token

参考文档dockerhub - messense/aliyundrive-webdav通过在线工具获取 refresh token

以前通过浏览器自行获取refresh token的方法已失效,详情参考 Error: Invalid refresh token value found in –refresh-token argument

6.3. 启动阿里云盘webdav容器

1、拉取webdav镜像

1
docker pull messense/aliyundrive-webdav:2.3.3

2、启动webdav容器(本地文件服务器)

1
2
3
4
5
6
7
docker run -d --name=aliyundrive-webdav \
--restart=unless-stopped \
-p 8080:8080 \
-e REFRESH_TOKEN='your token' \
-e WEBDAV_AUTH_USER=admin \
-e WEBDAV_AUTH_PASSWORD=admin\
messense/aliyundrive-webdav:2.3.3

3、查看webdav容器状态

1
2
docker ps
docker logs aliyundrive-webdav

6.4. 挂载阿里云盘

1、安装webdav驱动

1
apt install -y davfs2

2、创建挂载目录

1
mkdir -p /data/aliyundrive

3、挂载阿里云盘

1
mount -t davfs http://192.168.5.233:8080/ /data/aliyundrive

4、查看挂载

1
2
cd /data/aliyundrive
ls -l

6.5. 通过samba共享

本地目录挂载阿里云盘后,和其他普通目录一样,也可以通过samba共享给其他主机。
samba配置如下:

1
2
3
4
5
[aliyundrive]
path = /data/aliyundrive
browseable = yes
read only = yes
valid users = @sambashare @sadmin

6.6. 拷贝阿里云盘中的文件到本地

如果担心访问阿里云盘时候的网络不稳定,可以把一部分文件下载到本地磁盘。

1
screen rsync -P -azv '爱情公寓' /data/samba/video

下载速度很快,家庭千兆宽带大概平均 10MB/s,峰值 30MB/s。