Pages

Friday, 24 November 2023

Raspberry + 外接硬盘 用内网穿透WebDav, 作公网 NAS

 

准备工作

  • Raspberry(别的支持 docker 的软路由 / 家庭服务器等也可以)
  • cloudflare 账号(用 cloudfalre tunnel)
  • 用作 nas 的硬盘(插到 raspberry 上的外接硬盘,需要自供电,raspberry 的电量带不动不插电的移动硬盘)

初期

注意本教程安装的 OMV NAS 系统,不能有桌面 UI,安装系统的时候请选择没有桌面的 lite 版本系统。如果选择了有桌面的系统,我们也需要卸载。可以执行以下命令卸载完全各种桌面:

sudo apt purge xserver* lightdm* raspberrypi-ui-mods vlc* lxde* chromium* desktop* gnome* gstreamer* gtk* hicolor-icon-theme* lx* mesa*
sudo apt autoremove

安装 OMV

https://www.openmediavault.org/

openmediavault 是一个免费的十分优秀的 NAS 管理系统,我们可以用来装在 raspberry 上的。

安装:

wget -O - https://raw.githubusercontent.com/OpenMediaVault-Plugin-Developers/installScript/master/install | sudo bash

安装过程会很慢,可能最长 30 分钟,根据你的机器配置决定的。安装完成后,他还会更改内网 IP 地址,所以需要你重新用 ipscanner 去扫描下新的内网 IP 地址是多少。

默认用户名为 admin,默认密码为 openmediavault

初始化磁盘

建议是用一个全新的磁盘来,或者已经备份好数据的,因为我们需要格式化硬盘到 EX4。

在磁盘中,选中你挂载的磁盘,选中高亮以后,点击擦除,然后确定,使用快速擦除即可。

擦除完成后,关闭那个擦除小窗口即可。

然后创建文件系统,就是挂载上硬盘。

在文件系统中,选择挂载文件系统

选择 EXT4

然后在设备中选中刚刚格式化完的磁盘,并保存。

耐心等待文件系统创建并挂载成功。

默认应该是会自动挂载上的,如果没有挂载上的话,就手动挂载下该磁盘即可。如果有需要应用的设置,选择保存并应用即可。

共享文件夹

创建一个共享文件夹,这里一般默认就是用挂载的硬盘根目录了。文件系统选择挂载好的磁盘,相对路径留空,权限保持默认(管理员和用户有读写权限),然后保持并应用即可。

SMB

我们可以先开个 SMB 测试下内网效果怎么样。服务 - SMB - 共享里可以添加刚刚共享的文件夹,然后公开选择允许访客,两个继承都需要勾选上。保持并应用。

然后在 SMB - 设置中,开启 SMB 服务,接下来,电脑上可以在 我的电脑 - 添加磁盘映射,然后输入设置的用户名和密码登录访问,可以测试下读写更改文件等权限是否正常。

WebDav

这里使用的是 docker 搭建的一个 webdav 服务。我们先安装 docker。

在系统 - omv-extras-Docker 中可以直接安装 docker,有需要的还可以安装下 Portainer(docker 的一个 web
管理面板,个人觉得挺方便的)

博主用的是 https://hub.docker.com/r/ugeek/webdav 这个 docker 的 webdav 程序,他支持 raspberry 就很友好。

普通 amd64 安装就

docker pull ugeek/webdav:amd64

如果是 raspberry 这样的 arm64 就用以下命令安装

docker pull ugeek/webdav:arm

然后运行 docker 配置如下(amd64 的配置):
其中 8096 是随意设置的端口,可以自行更改。把 <你的硬盘挂载路径> 更换成你的硬盘实际挂载路径,可以在 存储器 - 共享文件夹 - 绝对路径 那里找到,直接复制路径即可。时区马德里是作者写的,懒得改了,影响不大。

docker run --name webdav \
--restart=unless-stopped \
-p 8096:80 \
-v <你的硬盘挂载路径>:/media \
-e USERNAME=<设置个webdav用户名> \
-e PASSWORD=<设置个webdav密码> \
-e TZ=Europe/Madrid \
-e UDI=1000 \
-e GID=1000 \
-d ugeek/webdav:amd64

或者运行(arm64,raspberry 的配置):

其中 8096 是随意设置的端口,可以自行更改。把 <你的硬盘挂载路径> 更换成你的硬盘实际挂载路径,可以在 存储器 - 共享文件夹 - 绝对路径 那里找到,直接复制路径即可。时区马德里是作者写的,懒得改了,影响不大。

docker run --name webdav \
--restart=unless-stopped \
-p 8096:80 \
-v <你的硬盘挂载路径>:/media \
-e USERNAME=<设置个webdav用户名> \
-e PASSWORD=<设置个webdav密码> \
-e TZ=Europe/Madrid \
-e UDI=1000 \
-e GID=1000 \
-d ugeek/webdav:arm

运行以后,webdav 就会在 8096 端口运行,输入 raspberry 的内网 ip:8096 就可以访问 webdav 了。

配合 cloudflare tunnel 的内网穿透 8096 端口(协议选择 http 即可,即 http://localhost:8096),我们就可以直接在公网访问 webdav 了。

WebDav 软件

Windows 用 RaiDrive,可以直接挂载 webdav 到本地磁盘里,就和 SMB 映射硬盘类似。记得用了 cf 的隧道后,就是走的 https 和 443 端口了,不要填 http 和 80 端口,会连不上的。

Linux 可以直接添加网络位置

Mac 上,转到 Finder > 前往 > 连接服务器,输入 Webdav 地址连接。

安卓可以用 ES 文件浏览器访问。

如果遇到 webdav 软件没有读 / 写权限的问题,可以去 存储器 - 共享文件夹 下,选中共享的文件夹,然后调整特权访问控制列表

拓展

博主为了进一步的同步,让谷歌云盘与 webdav 随时双向同步数据了。

博主是买了个 multcloud 永久会员,添加了我的 google drive workspace 无限空间云盘和 webdav,然后让他们俩互相双向同步。请不要学习博主去买 multcloud,我只是为了贪图能转移百度云盘才买的。rclone 更香!而且免费,就是需要一个服务器(有 raspberry 了也算是一个服务器了)和一点点配置。

结语

就此一个能在公网访问的家庭 NAS 就搭建好了。

博主考虑过 frp,但是相较于 cloudflare 的简单上手,还是更倾向与 cloudflare 了。对于 cloudfalre 的 smb 公网访问,觉得配置会比较繁琐,不如 Webdav 来的直接,配置好了哪里都能用,不需要再额外下载 cloudflared 了。至于其他基于 tcp 的协议就也同样不做考虑了,还是基于 http 的 webdav 最香。

不过 webdav 在处理大文件的时候还是有可能会出点问题的。不过我觉的日常使用上已经足够了。

总的来说,这么一个低成本高效率的家庭 nas 就这么做好了

No comments:

Post a Comment