| 
 | 
目前飞牛并没有对外分享功能,后期肯定会出,但总得先找个替代品先用着吧 
本次我们使用Alist网盘,实现无ipv4公网的分享功能 
原理飞牛搭建本地Alist网盘,云服务器也搭建Alist网盘挂载本地飞牛搭建的Alist网盘,其中lucky负责穿透获取公网地址动态更新云服务器上的Alist网盘 
实现起来很简单,算是上篇帖子的后续,很多先前步骤这里直接省略,不清楚的去看上一篇帖子,必要条件必须满足, 
 
第一步应用中心安装下Alist网盘,自行安装略过 
安装完成后添加本地存储,把你需要共享的目录挂载下,完成后先试试能不能访问 
 
第二步开启Alist网盘https访问,修改下Alist配置文件 
下边是我的配置参考下
 - vim /vol1/@appdata/alist3/config.json
  -   "scheme": {
  -     "address": "0.0.0.0",   // 要监听的 http/https 地址,默认为 0.0.0.0
  -     "http_port": -1,        // 监听的 http 端口,默认的 '5244',如果你想禁用 http,将其设置为 '-1'
  -     "https_port": 5244,       // https 端口监听,默认的 '-1',如果你想启用 https,将其设置为非 '-1'
  -     "force_https": false,   // 是否强制使用 HTTPS 协议,如果设置为 true ,则用户只能通过 HTTPS 访问该网站
  -     "cert_file": "relay.subtlelonging.com.crt",  // 证书文件路径
  -     "key_file": "relay.subtlelonging.com.key",    // 证书密钥文件路径
  -     "unix_file": "",         // Unix 监听套接字文件路径,默认的空的,如果你想使用 Unix socket,将其设置为非空
  -     "unix_file_perm": ""     // Unix 监听套接字文件,设置为合适的权限
  -   },
 
  复制代码 记得准备SSL证书路径替换自己的,修改完先停用再启动下应用, 
如果出现启动后又自动停用就是配置文件不正确,现在加上https试试能不能访问 
 
第三步云服务器安装Alist网盘 
打开1panel面板-应用中心-云存储即可看到Alist网盘直接安装 
安装结束进入容器终端设置密码或者生成一个随机密码
 - 生成随机密码:./alist admin random
  - 手动设置密码:./alist admin set NEW_PASSWORD
 
  复制代码 打开容器列表看看Alist容器内部ip地址是多少,记下来 
现在去创建一个反向代理网站,填写域名,代理地址就是刚才记下来Alist容器的地址,端口默认5244 
 
 
创建完成后申请SSL证书开启https访问,现在去试试刚创建的Alist网盘能不能访问 
可以正常访问了就登录进去,添加一个存储,驱动选择Alist v3 
其他的随便写一下,后面会远程更新这些信息,然后保存 
 
 
 
第四步lucky添加一条穿透规则,参考如下图(添加动态域名申请证书之类的上一篇帖子有,这里略过了) 
 
 
 
自定义脚本如下: 
 - NEW_PORT=${port}
  
 - TOKEN=$(curl --silent --header "Content-Type: application/json" \
  -     --request POST --data '{"username":"admin", "password":"******"}' \
  -     "https://pan.subtlelonging.com/api/auth/login" | grep -o '"token":"[^"]*"' | sed 's/"token":"//;s/"//')
  
 - echo "获取的 Token: $TOKEN"
  
 - ADDITION_JSON=$(cat <<EOF
  - {
  -     "root_folder_path": "/",
  -     "url": "https://relay.subtlelonging.com:$NEW_PORT",
  -     "meta_password": "",
  -     "username": "admin",
  -     "password": "******",
  -     "token": "$TOKEN",
  -     "pass_ua_to_upsteam": true
  - }
  - EOF
  - )
  
 - ADDITION_STRING=$(echo "$ADDITION_JSON" | jq -c . | sed 's/\\/\\\\/g; s/"/\"/g')
  
 - echo "等待一分钟..."
  - sleep 60
  
 - RESPONSE=$(curl --silent --location --request POST "https://pan.subtlelonging.com/api/admin/storage/update" \
  -     --header "Authorization: $TOKEN" \
  -     --header "Content-Type: application/json" \
  -     --data '{
  -         "id": 1,    
  -         "mount_path": "/",
  -         "order": 0,
  -         "driver": "AList V3",   
  -         "remark": "", 
  -         "cache_expiration": 1,
  -         "status": "work",    
  -         "web_proxy": false,
  -         "webdav_policy": "302_redirect",
  -         "down_proxy_url": "",
  -         "order_by": "name",    
  -         "extract_folder": "",
  -         "order_direction": "asc",
  -         "enable_sign": false,    
  -         "addition": "'"$ADDITION_STRING"'"
  -     }')
  
 - echo "更新存储配置的响应: $RESPONSE"
  
 - RELOAD_RESPONSE=$(curl --silent --location --request POST "https://pan.subtlelonging.com/api/admin/storage/load_all" \
  -     --header "Authorization: $TOKEN")
  
 - echo "重新加载所有存储的响应: $RELOAD_RESPONSE"
 
  复制代码 需要修改的:替换自己云服务器绑定的网盘域名有三处,我这里是https://pan.subtlelonging.com 
                   替换lucky穿透地址绑定的域名,我这里是https://relay.subtlelonging.com 
                   替换云服务器Alist和飞牛Alist的登录账户和密码,有两个别搞混淆了 
                   替换挂载路径,这个根据自己来,我这里是根目录/ 
添加穿透规则完成后,等待1分钟查看下穿透日志,你会看到和我一样的信息 
 
 
恭喜你已经成功了,验证下 
现在访问下Alist网盘看看本地文件夹已经挂载成功 
 
 
随便点个视频播放试试,没问题可以播放 
 
 
 
随机点个文件鼠标放在下载按钮上,注意看左下角的链接,指向的是我们lucky穿透后绑定的域名,即飞牛本地搭建的Alist网盘 
 
 
 
所以访问网盘最终下载流量都是走我们本地带宽上行而非云服务器,而云服务器本身承担的流量仅仅只是用来展示文件所消耗的,很小可以忽略不计 
 
备注:预计可能出现的问题应该是在自定义脚本这里,如果出错,可以通过一些Web测试工具先测试下通过了再写进去,比如我这里使用Postman来查看关键信息 
 
 
 
 |   
 
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 
 
  
 |