本文通过树莓派3b挂载外置的硬盘,并将其中的资源实时映射到互联网。
最终效果
别人找你要资源,直接甩一个网址过去,纯粹无广告,比市面上任何云盘都方便且好用。
为什么要用树莓派?
任何一台可以联网的电脑,都可以充当本文树莓派的角色, 但树莓派的优势在于,省电,且运行Linux可以常年不关机,极端情况下,即使断电了,用充电宝也能维持树莓派供电。另外,树莓派所有数据都在本地,即使遇到类似B站云服务器爆炸,或者被被黑客攻击,数据也不会丢失。
你用的哪一款树莓派?刷的哪款镜像?
我使用的是树莓派3b, 刷的OpenWrt这款开源路由器镜像, 详细刷的步骤以前出过教程 将树莓派3B刷成OpenWrt软路由,成为魔法WiFi上网的强大路由器 https://v2fy.com/p/2021-02-06-pi3-1612603909000/
为了提升存储容量,我还挂了一块1TB的机械硬盘。
如何便捷的往树莓派挂载的硬盘里,增删资源?
由于树莓派刷了OpenWrt的镜像,再加上我自己添加的一块外置网卡,树莓派已经是一个路由器了,我们只要通过无线接入树莓派路由器,就能对树莓派挂载的硬盘资源进行增删。
具体的操作步骤是,接入树莓派路由器网络,然后通过浏览器开启内置的ftp服务
windows添加ftp网络位置
服务端配置
服务端我用Nginx的stream 对frp进行了转发,Nginx将指向frp.v2fy.com的请求,转向绑定端口8081的Nginx服务,而8081端口的Nginx服务,将请求转发到绑定8080端口的frp服务端程序
配置文件 /etc/nginx/nginx.conf 的内容为
#user nginx;
worker_processes 1;
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
stream {
map $ssl_preread_server_name $backend_name {
frp.v2fy.com frp_v2fy_com;
}
upstream frp_v2fy_com {
server 127.0.0.1:8081;
}
server {
listen 443 reuseport;
listen [::]:443 reuseport;
proxy_pass $backend_name;
ssl_preread on;
}
}
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
charset utf-8,gbk;
client_max_body_size 20m;
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /etc/nginx/conf.d/*.conf;
}
配置文件 /etc/nginxconf.d/frp.v2fy.com.conf 的内容为
server {
server_name frp.v2fy.com;
listen 80;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 8081 ssl http2;
listen [::]:8081 ssl http2;
server_name frp.v2fy.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
ssl_certificate "/etc/nginx/ssl/frp.v2fy.com/fullchain.cer";
ssl_certificate_key "/etc/nginx/ssl/frp.v2fy.com/frp.v2fy.com.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
配置完成后,我用acme.sh脚本,为frp.v2fy.com 域名添加了自动续期的https证书配置,具体步骤可查看以往的博客 零依赖!使用acme.sh设置nginx多个https证书自动更新,无限续期https证书 https://v2fy.com/p/2021-06-27-nginx-https-1624774964000/
进入 /opt/ 目录,下载frp安装包并解压
cd /opt/
wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_386.tar.gz
tar zxvf https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_386.tar.gz
进入 /opt/frp_0.37.0_linux_386, 将frps.ini 内容修改为
[common]
bind_port = 7000
vhost_http_port = 8080
通过 ./frps -c frps.ini 就可启动 frp的服务端了
但这样运行并不稳定,关闭终端服务端进程也就关闭了
我们需要安装pm2 用于创建一个守护frp服务端程序运行的脚本
npm install pm2 -g
将启动脚本写入文件,并赋予运行权限
echo './frps -c frps.ini' > start_frps.sh
使用pm2守护运行服务端脚本
pm2 start start_frps.sh
更详细的步骤可以查看往期博客 比坚果云更好用!无需上传!用frp内网穿透将当前桌面或图片文件夹实时分享到互联网 https://v2fy.com/p/2021-07-05-frp-1625488942000/
树莓派(客户端)配置
- 全局安装pm2
pm2可守护frp客户端程序运行
npm install pm2 -g
- 全局安装 http-server
http-server 可在树莓派开启一个http服务,处理fcp服务端转发过来的请求
npm install http-server -g
- 编写http-server 启动命令, 并使用pm2守护运行
cd /opt/
echo 'http-server /mnt/sda1/frp -a 0.0.0.0 -p 8080' > start_hs.sh
chmod 755 start_hs.sh
pm2 start start_hs.sh
- 下载frp到树莓派/opt 目录, 并解压
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_arm64.tar.gz
tar zxf frp_0.37.0_linux_arm64.tar.gz
- 进入 解压后的 frp 目录, 编辑 frpc.ini
[common]
server_addr = 服务器ip
server_port = 7000
[web]
type = http
local_port = 8080
custom_domains = frp.v2fy.com
- 编写frpc的启动脚本, 并使用pm2 守护运行
cd /opt/frp_0.37.0_linux_arm64
echo "frpc -c frpc.ini" > start_frpc.sh
chmod 755 start_frpc.sh
pm2 start start_frpc.sh
- 运行成功
- 访问 frp.v2fy.com
一个实时同步本地硬盘数据到互联网的服务,就搭建完成了