1

变相实现飞牛分享文件的一种方式

发表于:2024-10-16 15:21:24 攻略分享 219
目前飞牛并没有对外分享功能,后期肯定会出,但总得先找个替代品先用着吧
本次我们使用Alist网盘,实现无ipv4公网的分享功能
原理飞牛搭建本地Alist网盘,云服务器也搭建Alist网盘挂载本地飞牛搭建的Alist网盘,其中lucky负责穿透获取公网地址动态更新云服务器上的Alist网盘
实现起来很简单,算是上篇帖子的后续,很多先前步骤这里直接省略,不清楚的去看上一篇帖子,必要条件必须满足,

第一步应用中心安装下Alist网盘,自行安装略过
安装完成后添加本地存储,把你需要共享的目录挂载下,完成后先试试能不能访问

第二步开启Alist网盘https访问,修改下Alist配置文件
下边是我的配置参考下
  1. vim /vol1/@appdata/alist3/config.json
  2.   "scheme": {
  3.     "address": "0.0.0.0",   // 要监听的 http/https 地址,默认为 0.0.0.0
  4.     "http_port": -1,        // 监听的 http 端口,默认的 '5244',如果你想禁用 http,将其设置为 '-1'
  5.     "https_port": 5244,       // https 端口监听,默认的 '-1',如果你想启用 https,将其设置为非 '-1'
  6.     "force_https": false,   // 是否强制使用 HTTPS 协议,如果设置为 true ,则用户只能通过 HTTPS 访问该网站
  7.     "cert_file": "relay.subtlelonging.com.crt",  // 证书文件路径
  8.     "key_file": "relay.subtlelonging.com.key",    // 证书密钥文件路径
  9.     "unix_file": "",         // Unix 监听套接字文件路径,默认的空的,如果你想使用 Unix socket,将其设置为非空
  10.     "unix_file_perm": ""     // Unix 监听套接字文件,设置为合适的权限
  11.   },
复制代码
记得准备SSL证书路径替换自己的,修改完先停用再启动下应用,
如果出现启动后又自动停用就是配置文件不正确,现在加上https试试能不能访问

第三步云服务器安装Alist网盘
打开1panel面板-应用中心-云存储即可看到Alist网盘直接安装
安装结束进入容器终端设置密码或者生成一个随机密码
  1. 生成随机密码:./alist admin random
  2. 手动设置密码:./alist admin set NEW_PASSWORD
复制代码
打开容器列表看看Alist容器内部ip地址是多少,记下来
现在去创建一个反向代理网站,填写域名,代理地址就是刚才记下来Alist容器的地址,端口默认5244


创建完成后申请SSL证书开启https访问,现在去试试刚创建的Alist网盘能不能访问
可以正常访问了就登录进去,添加一个存储,驱动选择Alist v3
其他的随便写一下,后面会远程更新这些信息,然后保存



第四步lucky添加一条穿透规则,参考如下图(添加动态域名申请证书之类的上一篇帖子有,这里略过了)



自定义脚本如下:

  1. NEW_PORT=${port}

  2. TOKEN=$(curl --silent --header "Content-Type: application/json" \
  3.     --request POST --data '{"username":"admin", "password":"******"}' \
  4.     "https://pan.subtlelonging.com/api/auth/login" | grep -o '"token":"[^"]*"' | sed 's/"token":"//;s/"//')

  5. echo "获取的 Token: $TOKEN"

  6. ADDITION_JSON=$(cat <<EOF
  7. {
  8.     "root_folder_path": "/",
  9.     "url": "https://relay.subtlelonging.com:$NEW_PORT",
  10.     "meta_password": "",
  11.     "username": "admin",
  12.     "password": "******",
  13.     "token": "$TOKEN",
  14.     "pass_ua_to_upsteam": true
  15. }
  16. EOF
  17. )

  18. ADDITION_STRING=$(echo "$ADDITION_JSON" | jq -c . | sed 's/\\/\\\\/g; s/"/\"/g')

  19. echo "等待一分钟..."
  20. sleep 60

  21. RESPONSE=$(curl --silent --location --request POST "https://pan.subtlelonging.com/api/admin/storage/update" \
  22.     --header "Authorization: $TOKEN" \
  23.     --header "Content-Type: application/json" \
  24.     --data '{
  25.         "id": 1,   
  26.         "mount_path": "/",
  27.         "order": 0,
  28.         "driver": "AList V3",   
  29.         "remark": "",
  30.         "cache_expiration": 1,
  31.         "status": "work",   
  32.         "web_proxy": false,
  33.         "webdav_policy": "302_redirect",
  34.         "down_proxy_url": "",
  35.         "order_by": "name",   
  36.         "extract_folder": "",
  37.         "order_direction": "asc",
  38.         "enable_sign": false,   
  39.         "addition": "'"$ADDITION_STRING"'"
  40.     }')

  41. echo "更新存储配置的响应: $RESPONSE"

  42. RELOAD_RESPONSE=$(curl --silent --location --request POST "https://pan.subtlelonging.com/api/admin/storage/load_all" \
  43.     --header "Authorization: $TOKEN")

  44. echo "重新加载所有存储的响应: $RELOAD_RESPONSE"
复制代码
需要修改的:替换自己云服务器绑定的网盘域名有三处,我这里是https://pan.subtlelonging.com
​                   替换lucky穿透地址绑定的域名,我这里是https://relay.subtlelonging.com
​                   替换云服务器Alist和飞牛Alist的登录账户和密码,有两个别搞混淆了
​                   替换挂载路径,这个根据自己来,我这里是根目录/
添加穿透规则完成后,等待1分钟查看下穿透日志,你会看到和我一样的信息


恭喜你已经成功了,验证下
现在访问下Alist网盘看看本地文件夹已经挂载成功


随便点个视频播放试试,没问题可以播放



随机点个文件鼠标放在下载按钮上,注意看左下角的链接,指向的是我们lucky穿透后绑定的域名,即飞牛本地搭建的Alist网盘



所以访问网盘最终下载流量都是走我们本地带宽上行而非云服务器,而云服务器本身承担的流量仅仅只是用来展示文件所消耗的,很小可以忽略不计

备注:预计可能出现的问题应该是在自定义脚本这里,如果出错,可以通过一些Web测试工具先测试下通过了再写进去,比如我这里使用Postman来查看关键信息



收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

发表回复