树莓派搭建nas服务器的详细过程

前奏

  • 默认的登录帐号为 pi,密码是 raspberry

开启 ssh :

  • 在根目录,新建一个名为 ssh 的空白文件就行了。然后,重启就可以ssh访问了。
  • 命令行下配置:sudo raspi-config ,启用root, 开启ssh, 扩容,
    然后选择第五项 Internationalisation Options,==> change_locale,在Default locale for the system environment:中选择 zh_CN.UTF-8;

更换软件源(apt sources

近期(2022年底)而言,可能豆瓣的软件源速度更快一些。

nano /etc/apt/sources.list
deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
sudo apt update && apt upgrade -y       #更新系统软件 并 更新已安装的包

NTFS支持:

sudo apt-get install fuse-utils ntfs-3g
  • 启动时,自动挂载硬盘(变换插口也不受影响):
    1 看硬盘位置,可插上后用sudo fdisk -l看出编号,如/dev/sda1
    2 先修改卷标 e2label /dev/sda1 nasdisk
    3 命令 sudo nano /etc/.fstab ,#在最后一行添加如下内容,
LABEL=nasdisk  /home/pi/nas                   ext4    defaults,nofail 0  0
  • 1、不可以在分区挂载之后再进行格式化!
  • 2、在错误提示当中可以看出你的分区已经挂载了。先将这个分区卸载了再重新格式化:
umount /dev/sda1
mkfs.ext4 /dev/sda1

或者

umount /dev/sda1
mkfs.ntfs /dev/sda1

网络:

  • 设置静态IP 或 路由器中绑定IP到MAC, 更简单的办法就是改主机名成 raspi,以后直接用主机名访问.

图形界面,可能会需要:

  • 字体安装: sudo apt install ttf-wqy-zenhei
  • 输入法:sudo apt install scim-pinyin

一、安装samba服务

sudo apt install samba

二、配置samba服务

sudo nano /etc/samba/smb.conf

或者通过 VNC Viewer 远程登陆

sudo mousepad /etc/samba/smb.conf

三、编辑smb.conf

在文档末尾加入:

# 设置第一个(私有)samba服务
[NAS_YIN]
# 共享文件夹说明
comment = YIN
# 允许登录的用户身份
valid users =pi,root

# 禁止访问的用户
# NAS 为他人使用的账户,但是又不想被他们看到,所以就禁止NAS用户访问。
invalid users=pub

# 共享文件夹目录
path = /home/pi/nas
# 可被其他人看到资源名称(非内容)
browseable = yes
# 可写
writable = yes
# 可读
read only=no

# 新建文件的权限为 777
create mask = 0777
# 新建目录的权限为 775
directory mask = 0777
# guest访问,无需密码
public = no

# 设置第二个(公共)samba服务
[NAS_PUB]
comment= PUB
valid users =pi,root,pub
path =/home/pi/nas/public
browseable=yes
writeable =yes
read only=no
create mask =0776
directory mask=0776

四、创建samba账号

sudo smbpasswd -a pi
sudo adduser pub
sudo passwd pub
sudo smbpasswd -a pub

输入两遍密码,即可。

重启samba服务:

sudo systemctl restart smbd

当然你有防火墙的话,需要开放137-139端口和455端口。

sudo ufw allow 137, 138, 139, 455

安装防火墙

sudo apt install ufw

防火墙状态查看

sudo ufw status 

active是开启 inactive是未开启

防火墙开启

sudo ufw enable

防火墙关闭

sudo ufw disable

开放端口号8090

sudo ufw allow 8090

详细操作,见《树莓派 防火墙开启关闭、开放端口号》

五、挂载硬盘

sudo mkdir /home/pi/nas
sudo mount -o uid=nas,gid=nas /dev/sda1 /home/pi/nas

六、获取硬盘标识号

sudo lsblk -o UUID,NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL,MODEL

记下长号:14fbcd17-c15c-43d4-9e86-5b76c2806335

七、自动挂载硬盘

sudo nano /etc/fstab

在文档的末尾,添加硬盘UUID和挂载目录:

UUID=14fbcd17-c15c-43d4-9e86-5b76c2806335 /home/pi/nas/ ntfs defaults,auto,users,rw,nofail 0 0

或者

UUID=nasdisk /home/pi/nas/ ntfs defaults,auto,users,rw,nofail 0 0

至此搭建nas完成,重启树莓派。

八、远程访问

树莓派搭建nas服务器的详细过程_第1张图片
树莓派搭建nas服务器的详细过程_第2张图片

树莓派搭建nas服务器的详细过程_第3张图片

即可远程访问挂载在树莓派上的硬盘,并可以进行文件的读取和写入。

更改目录权限

html目录权限,例如:

sudo chown -R -v  www-data:www-data  /var/www/html

nas 目录权限,例如:

sudo chown -R -v  pi:pi  /home/pi/nas

3. 树莓派离线下载配置

参考文献:
1-《Aria2 安装和使用全教程》
2-《mac 使用Aria2》
3-《linux aria进程,Linux运维知识之Ubuntu下Aria2搭建下载机:Aria2图形管理》
4-《树莓派部署aria2远程下载器教程》
5-《在电脑上配置 Aria2 并为其配置 Web 界面》
6-《树莓派搭建私人NAS》
7-《极客DIY:使用树莓派制作一套“NAS+私有云盘+下载机”》
离线下载我们使用Aria2来实现,Aria2非常轻量级,且支持各种链接和种子下载,以及多线程下载。

3.1 安装Aria2

sudo apt install aria2

3.2 配置Aria2

配置文件可以存放在 /home/pi/.config/aria2 目录下

mkdir /home/pi/.config/aria2
cd /home/pi/.config/aria2
touch aria2.conf
touch aria2.session

aria2.conf 就是启动 aria2 的配置文件;
aria2.session 用于保存退出时候未完成的一些会话任务等。
不同的启动方式,可以有不同的配置方式。
编辑 aria2.conf ,往里面写入以下内容
里面很多内容都注释掉了,可以按照自己的需求进行修改。

### /home/pi/.config/aria2/aria2.conf
#后台运行
daemon=true
## 文件保存相关 ##

# 文件的保存路径, 默认: 当前启动位置
dir=/home/pi/nas/downloads

# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=16M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
#file-allocation=falloc
# 断点续传
continue=true

## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=15
# 整体下载速度限制, 运行时可修改, 默认:0(不限制)
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0(不限制)
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0(不限制)
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0(不限制)
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true

# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=10

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/etc/aria2/aria2.session
# 在Aria2退出时保存错误的、未完成的下载任务到会话文件
save-session=/etc/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=60
## RPC相关设置 #

## RPC相关设置 ##

# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许外部访问, 默认:false
rpc-listen-all=true
# RPC端口, 仅当默认端口被占用时修改
# rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
#rpc-secret=
# 链接密码,设置为你自己的即可
rpc-secret=your_passwd

# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800

## BT/PT下载相关 ##

# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true

# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
input-file=/home/pi/.config/aria2/aria2.session
save-session=/home/pi/.config/aria2/aria2.session

其中如果想要使用远程ui界面的话,rpc的配置项目enable-rpcrpc-listen-all要设置为true
现在可以试试看使用配置方式启动aria2,看能否成功启动。

aria2c --conf-path=/home/pi/.config/aria2/aria2.conf

若成功启动,输入如下命令

sudo systemctl status aria

会出现以下界面
树莓派搭建nas服务器的详细过程_第4张图片

3.3 配置开机启动

安装aria2 成功之后需要配置开机启动,这样我们每次启动树莓派的时候就不需要手动去启动aria2服务了。
创建并编辑aria.service文件。

sudo vim /lib/systemd/system/aria.service

往里面写入以下内容:

[Unit]
Description=Aria2 Service
After=network.target

[Service]
User=pi
Type=forking
ExecStart=/usr/bin/aria2c --conf-path=/home/pi/.config/aria2/aria2.conf

[Install]
WantedBy=multi-user.target

设置开机启动

sudo systemctl daemon-reload
sudo systemctl enable aria

或者有其他完全不同的安装与配置方式:
例如,参见《Ubuntu安装aira2及开机启动配置》
sudo nano /etc/rc.local
在exit 0前添加一行指令
sudo /usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf -D &
保存并退出

注意:

`这两种开机启动的方法不能同时使用!!!`

设置之后可以重启以下树莓派,然后再使用下面的命令查看下服务是否有启动。

sudo systemctl status aria

3.4 图形管理界面

当我们完成安装和配置了aria2之后,我们还需要一个界面,否则使用起来也太不方便了,这里使用webui-aria2这个第三方的web界面,https://github.com/ziahamza/webui-aria2.git
首先我们需要配置web服务,这里使用nginx,如果没有安装,可以现安装上,并启动nginx服务。
使用如下命令将 webui-aria2 下载到本地

cd /var/www/html/
sudo git clone https://github.com/ziahamza/webui-aria2.git
# 或者
sudo git clone http://github.com/wzhy90/yaaw

然后在同一个局域网内,访问如下地址,树莓派的ip地址替换成你自己的树莓派的ip地址。

http://192.168.0.132/webui-aria2/docs/index.html
# 或者
http://192.168.0.132/yaaw/

如果顺利,将会看到如下界面。
树莓派搭建nas服务器的详细过程_第5张图片
如果界面当中出现rpc连接失败等错误提示,可以查看一下aria2.conf配置是否写错。博主之前就是因为配置信息写错,一直导致网页提示连接失败的信息。

3.5 安装静态网页前端

安装 nginx需要安装(静态网站,一个nginx就够了)
安装前,可能需要准备一些依赖项。
先做准备工作,安装一些依赖,准备工作
(1)安装gcc, g++的依赖库

sudo apt-get install build-essential
sudo apt-get install libtool

(2)安装pcre依赖库

sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev

(3)安装zlib依赖库

apt-get install zlib1g-dev

(4)安装ssl依赖库

apt-get install openssl

(5) 安装 nginx

sudo apt install nginx

执行完以上操作后,浏览器输入服务器的IP地址,出现以下画面说明Nginx安装成功。
树莓派搭建nas服务器的详细过程_第6张图片

3.6 配置前端

接下来,进入/etc/nginx ,我们重点关注sites-availablesites-enabled
翻译过来就是【可以启用的站点】和【已经启用的站点】
直接修改sites-available文件夹下的default 来设置第一个站点。

sudo nano /etc/nginx/sites-available/default 

树莓派搭建nas服务器的详细过程_第7张图片
如果还打算设置反向代理,那么需要配置:

server {
        listen       8080;    #监听端口
        server_name  192.168.1.132;   #监听地址
        
        root /home/ubuntu/tennis_match_backstage/dist;  #/html目录
        index index.html;      #设置默认页       
        
        location  ~ /example1/ {  
           proxy_pass http://127.0.0.1:5000;     #请求转向      
        } 
    }

location指令说明:

~ : 表示uri包含正则表达式,且区分大小写。
~* : 表示uri包含正则表达式,且不区分大小写。
= : 表示uri不含正则表达式,要求严格匹配。

nginx如何配置代理转发,参见 https://www.php.cn/nginx/425693.html
树莓派搭建nas服务器的详细过程_第8张图片
我们了解Nginx的匹配转发机制后,接下来的问题就是:哪些需要转发?哪些不需要转发?怎么来标识?

一般来讲,要转发的都是发送(外网)请求的url,因为发送请求才会出现跨域问题,出现跨域问题才会使用反向代理,要需要使用反向代理才会使用Nginx。

那么,页面url和请求url怎么区分呢?
不同的项目,不同的团队可能有截然不同的方法,大多会选择加一个字段来标识,正好用来给Nginx匹配。

修改default文件如下:
1、yaaw 或 webui-aria2/docs 是拟部署的项目,要放到/var/www/html目录下,不能放在/home/pi下,因为 pi 没有权限。

2、一定要保证修改后的default 文件一定要放在/etc/nginx/sites-available。
树莓派搭建nas服务器的详细过程_第9张图片
设置完成后,即可使用指令启动服务

sudo /usr/sbin/nginx -t //检查配置是否正确

sudo /usr/sbin/nginx  //启动服务

sudo /usr/sbin/nginx -s reload //重新载入配置

如果运行指令sudo /usr/sbin/nginx时报错(Address is in use或者 cant bind)则可能是端口已被占用。解决方案:

netstat -aptn # 查看端口使用情况

如果没有安装netstat需要先安装netstat

sudo apt install netstat

查看端口使用情况,更换配置中所使用的端口再尝试。如果还是报错,可用指令查看是哪些进程占用了端口,然后我们将其干掉(例如:sudo kill -9 $(sudo lsof -i tcp:80 -t)),再执行启动服务并载入配置。部署完成后,访问配置中的ip地址,即可看到部署的页面

修改链接设置
树莓派搭建nas服务器的详细过程_第10张图片
这里只需要改一下,主机到你的树莓派ipemm localhost 不行,至少在我这里不可以。

以及 令牌为你配置文件 rpc-secret=your_passwd 设置的密码

静态网站的进一步配置

请参见《树莓派3b+ 配置Nginx,并成功部署前端项目》。

总结

这样子一个离线下载的环境就搭建好了。

4. 通过BaiduPSC-Go操作百度网盘

4.1 BaiduPCS-Go简介

BaiduPCS-Go是一种仿 Linux shell 文件处理命令的百度网盘命令行客户端,可以在Windows, macOS, linux, 移动设备等各种平台使用,是一款百度网盘神器了。据说还能突破网盘下载速度的限制,这个我倒没有特别去试,毕竟还是鼓励大家充个会员,稍微支持一下百度网盘的咯。

因为是全平台使用,所以如果大家有兴趣也可以在自己的电脑上使用,具体的操作方法和安装包都在BaiduPCS-Go的作者GitHub详情页面。

本来,网上更多的教程都是推荐bypy。但是从bypy作者的GitHub发布页上来看,该项目已经停止维护。而且我自己尝试用的时候也经常遇到问题。后来发现BaiduPCS-Go,相较而言似乎更好用些。

4.2 下载和运行

BaiduPCS-Go的发布页找到符合自己硬件的压缩包。

这里需要注意两点:

虽然树莓派很像一个桌面系统,但它的CPU其实是arm架构。

BaiduPCS-Golinux-arm64版本似乎不能在树莓派中运行,我们需要的是linux-armv5linux-armv7版本

git clone https://github.com/qjfoidnh/BaiduPCS-Go.git
或者 
curl https://armada.ifz.ru/rpi-2020-02-10/armv6h/community/baidupcs-go-3.6.1-1-armv6h.pkg.tar.xz
curl https://armada.ifz.ru/rpi-2020-02-10/armv7h/community/baidupcs-go-3.6.1-1-armv7h.pkg.tar.xz

我下载的是 BaiduPCS-Go-v3.5.6-linux-armv7.zip 。下载好之后,将压缩包解压缩到 /opt 目录中。

打开终端,运行命令

/opt/BaiduPCS-Go-v3.5.6-linux-armv7/BaiduPCS-Go login 

即可按照提示,输入用户名密码和验证码之类的登录到百度网盘。

注意:这里的BaiduPCS-Go-v3.5.6-linux-armv7是文件夹的名字。你可以自定义,比如修改为BaiduPCS-Go,或者其他任何你喜欢的名字。另外,运行前注意检查一下版本号,我用的是当前最新版本3.5.6,但保不齐人家不会更新呀,你就要用新的版本号来代替我的这个版本号。不过更保险的方式是,点进这个目录里面,找到BaiduPCS这个文件,右键选择复制路径。然后在终端中粘贴命令即可。

4.3 修改环境变量

在终端中用命令行运行程序虽然可行,但是很繁琐,需要记住程序的路径。说实在的,百度网盘这东西并不是那么常用,一旦忘记还要重新去找。而且即便记得住,那么长的路径打起来也很痛苦。如果把文件保存在根目录下就会面临文件整理的痛苦。有没有一个办法可以让我们的命令容易记,而且方便输入呢?

答案是当然的咯。就是改变环境变量。相信学习过python的朋友对这个过程都很熟悉了吧。修改环境变量,系统会预先加载这些文件夹,如果运行的程序在这个文件夹里面,就能正常运行啦。

Linux系统中修改环境变量的方法有很多方法,主要是修改下面两个目录中的文件:

系统位置,/etc目录下的 bashrcprofileenvironment 三个文件
用户目录(rootpi)下的 .bashrc.bash_profile 两个文件(还记得吧,在Linux系统中,文件名以“.”开头的文件是隐藏文件)。
但是如果直接修改这些文件会面临一些问题,并不建议直接修改。比较推荐的方法是在 /etc/profile.d 目录下创建一个自定义脚本。

创建并编辑脚本:

sudo nano /etc/profile.d/custom.sh

在脚本中写入如下内容:

alias bdy='BaiduPCS-Go'
export PATH=$PATH:/opt/BaiduPCS-Go-v3.5.6-linux-armv7

第一行 alias bdy='BaiduPCS-Go' 的意思是用“bhy”这个缩写代替“BaiduPCS-Go”这个比较长而且大小写混杂不容易输入的命令。你当然也可以把它改成一个你喜欢的简称。

第二行 export PATH=$PATH:/opt/BaiduPCS-Go-v3.5.6-linux-armv7 指的是将 /opt/BaiduPCS-Go-v3.5.6-linux-armv7 这个路径加入到环境变量中。

然后还是,ctrl+o 保存,回车确定,ctrl+x 退出。
在终端中输入一条命令,让系统应用这条变化:

source /etc/profile.d/custom.sh

然后运行一条命令试一下是否成功(如果之前没有登陆百度云,也可以用 bdy login 来测试):

bdy quota

最后返回网盘的空间和占用情况,配置成功。

注:远程桌面似乎权限很低,每当重新打开一个终端就要重新输入 source /etc/profile.d/custom.sh 来更新环境变量信息,特别不方便。如果在shell中进行相关操作就没有这个问题,只要更新一次,以后直接用 bdy <指令> 的方式就可以顺利运行。其实不只是这里,很多事情远程桌面都做不了。所以我还是建议大家用树莓派直接连键鼠显示器操作。如果非要远程的话,最好用shell操作。都已经用Linux了,说明你已经有了一定的代码基础,能用命令行办到的就输命令呗。

4.4 BaiduPCS-Go的基本操作

更多的操作细节,还是参考作者在GitHub发布页上的说明。

4.4.1 基本操作:

bdy login #登陆账号
bdy login -bduss= #用百度 BDUSS 来登录百度帐号
bdy su #切换用户
bdy ls #列出所有文件
bdy download <文件/目录路径1> <文件/目录2> <文件/目录3>... #下载文件。

如需下载多个不同的文件/目录,它们之间需要用空格分隔开。因为这条命令很常用,作者很贴心地给这条命令引入了一个简写:bdy d <文件/目录路径1>

bdy logout #退出账号

4.4.2 配置:

bdy config # 显示配置
bdy config set # 设置配置
默认配置中是不启用https的,可以通过如下命令启用https

bdy config set --enable_https

默认的下载目录是当前用户的 download 目录,可用如下命令修改下载目录(需要把里面的 //home/pi/nas/baidu_netdisk 替换为你想要设置的下载目录):

bdy config set --savedir /home/pi/nas/baidu_netdisk

4.4.3 主要参考网站:

BaiduPCS-Go 百度网盘客户端
[树莓派]使用 BaiduPCS-Go 实现百度云盘的下载机

《树莓派无外设开发三:自动连接无线网》 无线网络的设置与开启。

你可能感兴趣的:(环境配置,服务器,linux,ssh)