——树莓派搭建NAS以及智能家居系统(基于Nextcloud+Homeassistant)保姆级教程
首先声明一下,我的大学专业不是计算机,web层面的很多东西都是我自己查文档慢慢摸索的,可能比较业余,讲得不妥当的地方还请各位大佬帮忙纠正,谢谢!
我的树莓派4B已经购买了两年多的时间了,但是由于树莓派的性能比较拉跨等种种原因,使得树莓派除了用来学Linux开发再无别的用处,所以大多数人买的树莓派难逃吃灰的命运。但是考虑的现在树莓派溢价如此严重,我觉得不让它发挥点价值心里也有点过意不去,所以考虑了好久如何让压榨树莓派的剩余价值。
我最终考虑到的解决方案是用树莓派搭建一套NAS服务器,同时可以作为家庭的影音系统使用。在这同时,还可以给树莓派安装Homeassistant,结合米家等平台实现智能家具管理系统。我整理我完整的搭建过程,在这里供大家参考。
-
从零开始,第一步,准备工作
- 下载系统
树莓派有很多系统可供大家选择,虽然官方主推使用官方的Raspbain系统,不过在实际使用过程中,Raspbain的对各种web组件的支持并不友好,而且网络上的参考方案少的可怜,除此之外Raspbain对arm64的支持相当差劲,所以权衡之下我选择使用Ubuntu系统。
首先从ubuntu官网对应的Ubuntu Server arm64 20.4版本镜像文件(我们整个配置过程用不到图形界面,而且图形界面树莓派带起来很吃力,所以使用server版本就足够了)。
- 准备需要的软件
- SD card formatter : 用于格式化SD卡
- Raspberry Pi Imager : 用于向SD卡烧录系统镜像
- DiskGenius : 用于SD卡烧录完成后扩容SD分区大小
- Final shell : SSH工具,是我用过对新手最友好的ssh软件了,如果你喜欢使用其他的可以自己按需选择
- 准备需要的硬件
- SD卡以及读卡器 :按需选择,如果不差这点钱的话建议SD卡直接一步到位买个64G的,如果要做web服务器16G的SD卡真心不够用。
- 树莓派4B以及电源、千兆网线 :树莓派4B虽然官方建议使用5V 3A供电,但是树莓派真的没有那么矫情,找一个手机快抽头就可以了。至于为什么用网线,因为我们既然要做nas,肯定要把速度拉满,Wi-Fi的速度肯定是不够的。
- 一块硬盘以及硬盘盒 :用于作为数据的存储盘,机械和固态自行选择。如果选择机械硬盘,硬盘盒最好选择带电源的那种,因为树莓派有可能供电不足。(如果直接用闲置的移动硬盘那这些钱全省了!)
-
正式开始,安装及配置系统
-
制作系统SD卡
-
系统配置
-
完成安装
插入硬盘盒usb口到树莓派的usb3.0接口,插入网口到路由器,树莓派插入SD卡后上电开机。等待两分钟让树莓派完成启动,然后登录路由器的管理页面查看树莓派对应的局域网ip地址。然后在电脑上打开Final shell,完成ssh连接的创建并连接。
默认用户名:ubuntu 默认密码:ubuntu
-
换国内软件源
ubuntu arm架构要使用ubuntu-ports源,国内源中只有清华源是支持最好的,这里我们选择清华源,如果会自己配置的建议浏览官方帮助文档。
# 打开软件源配置文件 sudo nano /etc/apt/sources.list # 把原有内容注释掉,嫌麻烦的可以直接删掉(不会出事的。。。) # 添加以下内容:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# ctrl+o保存 ctrl+x退出 # 更新软件 sudo apt update && sudo apt upgrade -y # 这一步可能会报连接错误,这是因为树莓派无法访问https网址导致的,把替换的国内源中https换成http再执行一遍更新操作就好了
-
设置系统语言为中文
还是中文界面看着舒服呀,这里教大家怎么把树莓派的系统默认语言设置成中文。
# 安装中文支持包 sudo apt install language-pack-zh-hans -y # 设置区域 sudo dpkg-reconfigure locales
在打开的界面,使用方向键翻页和选择,找到zh_CN.UTF-8 UTF-8选项,使用空格键选择,然后使用Tab按键移动光标到OK上点击回车。在下一个界面,继续使用Tab选择到zh_CN.UTF-8 UTF-8回车确定(如果有两个随便选一个就可以)
-
调整swap大小
swap,即交换分区,在内存不够用的情况下开辟出一块虚拟内存用于缓存数据,由于我们之后需要编译安装很多组件,所以必须要使用大量swap空间,而ubuntu默认开辟的100M的swap空间显然不够用,我们需要增加swap空间。
# 新建一个存放swap文件的目录,如果提示已经存在不用理会 sudo mkdir /swap cd /swap # 创建swap文件,此过程耗时较长,耐心等待 # count=2000000表示swap大小为2G,你可以按实际需求更改 sudo dd if=/dev/zero of=swapfile bs=1024 count=2000000 # 设置正确权限,可以省略,但是以后会报警告 sudo chmod 600 /swapfile # 启动swap文件 sudo swapon /swapfile
这样swap分区创建完毕了,但是这是一次性的,重启一次swap分区就消失了,所以我们要设置swap分区的开机自动挂载。
# 文本编辑器可以自行选择,新手推荐使用nano,使用方法一看就会 sudo nano /etc/fstab # 键入一下文本,有强迫症的可以自行用Tab键对齐。。。。 /swapfile swap swap defaults 0 0 # ctrl+o保存 ctrl+x退出 free -m #查看交换分区是否启动了
-
下载系统必备软件
这一步根据自己喜好下载。
-
-
-
服务器安装
-
安装宝塔面板
- 运行安装脚本,直接运行ubuntu系统宝塔面板安装脚本即可。
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh # 出现确认界面输入'y'即可
- 安装完成后按照提示登录宝塔面板。
-
面板配置
-
-
Nextcloud服务器搭建
-
文件准备
-
下载服务器源码
去官网下载服务器版本的源码。打开网址后选择Archive File选项卡,点击Download下载。
-
-
部署nextcloud
-
-
速度优化
- 安装PHP必要的扩展服务
- 配置缓存
- 设置伪静态
- 更改数据库安全等级
- 设置PHP FMP的PATH路径
- 解除文件区块大小限制
- 调整nginx参数
- 调整php参数
- 配置定时任务
-
配置家庭影音系统
-
配置SMB服务
nextcloud的网盘服务是使用webdav协议的,这种协议要使用MySQL数据库,肯定速度上拉跨,所以我打算使用samba做大文件传输,映射到电脑本地作为网盘使用。
-
安装samba
sudo apt install samba samba-common-bin
-
配置smb配置文件
sudo vim /etc/samba/smb.conf
smb.conf内容如下
[data] comment = external storage read only = no # 路径配置根据实际情况自行修改 path = /mnt/data/media valid users = ubuntu www root create mask = 0775 directory mask = 0775
添加共享用户并设置密码
sudo smbpasswd -a XXX # XXX替换为用户名
-
重启服务
sudo service smbd restart
SMB服务的配置到此结束,后续我将讲解如何访问。
-
-
配置DLNA服务
配置DLNA服务,让我们能够方便的在电视上播放网盘中的资料,这里我们室友miniDLNA软件完成配置。
- 下载软件
- 配置
- 重启服务
-
-
配置离线下载器
-
安装及配置aria2
-
安装aria2
sudo apt install aria2
-
配置aria2.conf
# 创建配置文件 sudo mkdir /etc/aria2 sudo vim /etc/aria2/aria2.conf
aria2.conf添加一下内容:
# 保存目录根据实际情况设置 dir=/home/fangqi/aria2_download disable-ipv6=true # 打开rpc的目的是为了给web管理端用 enable-rpc=true rpc-allow-origin-all=true rpc-listen-all=true rpc-listen-port=6800 continue=true # 创建aria2.session文件用于断点续传 input-file=/etc/aria2/aria2.session save-session=/etc/aria2/aria2.session max-concurrent-downloads=3
创建aria2.session文件
sudo touch /etc/aria2/aria2.session # 授予可读写权限 sudo chmod 777 /etc/aria2/aria2.session
-
创建服务,实现开机自启
这里我选择systemctl实现服务配置,配置方法相对直观简单。
# 创建session文件 cd /etc/systemd/system sudo vim aria2.service
填写内容如下
[Unit] Description=Aria2 Service After=network.target [Service] User= www ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf [Install] WantedBy=default.target
启动服务
sudo systemctl daemon-reload sudo systemctl start aria2.service # 查看服务状态是否正常 sudo systemctl status aria2.service
需要在宝塔面板中要放行6800端口才可以使用!!
-
-
配置aria2 web前端
web前端用于管理aria2,通过图形化界面完成离线下载,我选择使用 AriaNg完成配置。(当然web前端大家可以选择不用,可以使用chrome浏览器直接连接服务器完成离线下载任务)。
从AriaNg Realase下载相应的源码,然后按照配置nextcloud的方法配置AriaNg站点。
-
-
安装Docker平台
-
使用脚本安装Docker
安装Docker虚拟机之后,我们就方便的搭建Homeassistant了,至于我外什么不使用Docker安装nextcloud,因为使用Docker的话速文件传输度会大打折扣,这是我不能接收的,所以我直接在实体机上配置的nextcloud。但是Homeassistant不需要多么强大的性能,只要能程序跑就行了,所以我直接使用docker部署Homeassistant。
Docker安装可以使用一键安装脚本,非常方便。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
-
更改国内源
Docker官方镜像在国内出奇的慢,这是我无法忍受的,索性直接更换为国内源。
# 修改daemon.json文件,没有的话就新建一个 sudo vim /etc/docker/daemon.json # 添加如下内容 { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } # 重启Docker让配置生效 sudo systemctl daemon-reload sudo service docker restart
-
配置Portainer容器
虽然我们完成了Docker的安装,但是Docker是没有图形化界面来管理的。为了方便的管理Docker,我们要先安装Portainer容器用于方便的管理Docker虚拟机。
# 从云端拉取镜像到本地 # portainer已经被弃用,新版开始区分商业版和个人版,个人版为portainer-ce sudo docker pull portainer/portainer-ce # 创建并启动容器 sudo docker run -d -p 8080:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer portainer/portainer-ce # 8080:9000是把9000的内部端口映射到8080上,所以我们要从8080端口访问portainer,此处可以根据实际情况修改
现在我们可以通过浏览器访问portainer了,在浏览器输入:192.168.XX.XX:8080来访问portainer管理平台。
-
-
安装Homeassistant
- 安装Homeassistant+Supervisor
- 解决国内无法联网问题
- 配置Homeassistant与米家等平台的互联
-
系统的一些个性化设置
-
关于固定树莓派的ip地址
1.方法一,路由器配置
2.方法而,树莓派配置
-
尽请期待......
-