本文通过树莓派3b挂载外置的硬盘,并将其中的资源实时映射到互联网。

最终效果

将树莓派挂载的硬盘资源,同步展示到互联网_互联网

别人找你要资源,直接甩一个网址过去,纯粹无广告,比市面上任何云盘都方便且好用。

为什么要用树莓派?

任何一台可以联网的电脑,都可以充当本文树莓派的角色, 但树莓派的优势在于,省电,且运行Linux可以常年不关机,极端情况下,即使断电了,用充电宝也能维持树莓派供电。另外,树莓派所有数据都在本地,即使遇到类似B站云服务器爆炸,或者被被黑客攻击,数据也不会丢失。

你用的哪一款树莓派?刷的哪款镜像?

我使用的是树莓派3b, 刷的OpenWrt这款开源路由器镜像, 详细刷的步骤以前出过教程 将树莓派3B刷成OpenWrt软路由,成为魔法WiFi上网的强大路由器 https://v2fy.com/p/2021-02-06-pi3-1612603909000/

为了提升存储容量,我还挂了一块1TB的机械硬盘。

将树莓派挂载的硬盘资源,同步展示到互联网_互联网_02树莓派

如何便捷的往树莓派挂载的硬盘里,增删资源?

由于树莓派刷了OpenWrt的镜像,再加上我自己添加的一块外置网卡,树莓派已经是一个路由器了,我们只要通过无线接入树莓派路由器,就能对树莓派挂载的硬盘资源进行增删。

具体的操作步骤是,接入树莓派路由器网络,然后通过浏览器开启内置的ftp服务

将树莓派挂载的硬盘资源,同步展示到互联网_互联网_03开启FTP

windows添加ftp网络位置

将树莓派挂载的硬盘资源,同步展示到互联网_互联网_04windows添加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
将树莓派挂载的硬盘资源,同步展示到互联网_互联网_05pm2安装成功
  • 全局安装 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
  • 运行成功
将树莓派挂载的硬盘资源,同步展示到互联网_互联网_06
  • 访问 frp.v2fy.com

一个实时同步本地硬盘数据到互联网的服务,就搭建完成了

将树莓派挂载的硬盘资源,同步展示到互联网_互联网_07将树莓派挂载的硬盘资源,同步展示到互联网_互联网