目前飞牛并没有对外分享功能,后期肯定会出,但总得先找个替代品先用着吧
本次我们使用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来查看关键信息
|