阿里的服务器到期了,也没钱再续,于是原来的网盘系统 Cloudreve 就废弃了。由于原来的后端储存使用的是微软的 OneDrive,便想着再找一个无需主机就能实现 OneDrive 文件共享的程序,本来想使用 Oneindex
的,但是原作者已经删库了,并且已经多年未更新了,只好放弃。不过最近在逛 GitHub 的时候,偶然发现了 OneManager-php 这个只需要 PHP
环境便能部署运行的程序,于是便试着搞一搞。
程序界面
前期准备
本文主要分为两种方式来讲解如何搭建
- 腾讯云
SCF 云函数
+ 自定义域名 ( 推荐,国内访问速度快 ) Heroku
+Cloudflare
( 不推荐,各种小问题,以及自定义域名需要绑定信用卡 )
准备网盘
阿里云盘
阿里新出的网盘,新用户注册大概会有 1T 左右的空间吧,内测用户 2T ~ 8T 大小的都有。这个网盘目前还行,不限速,但说不好过一段时间会不会变的和百度网盘一样恶心 ( 我觉得大概率会 )。
OneDrive
OneDrive 账号,最好储存为 5T 大小的那种。这方面的教程百度上一搜一大把,这里不做过多阐述,我这里使用的是 Microsoft 365 E5 开发者账号。当然个人版账号也是可以的,只是空间通常仅为 15G,自行斟酌。
注册云服务商账号
腾讯云 SCF 云函数 方式部署
注册腾讯云
这个没啥好说的,注册就完了。注册域名
非必要,仅自定义域名时需要填写。腾讯云也时不时的有一些免费买域名的活动,也可以考虑考虑。自定义域名需要域名已实名认证并备案
Heroku + Cloudflare 方式部署
- 注册 Heroku
注意:
- 注册时最好注册两个账号,因为 Heroku 免费套餐每月只能运行 550 小时,两个账号可实现全月不间断运行
- 注册时可能需要使用代理访问,否则无法通过谷歌人机验证
- 注册 CloudflareCloudflare 账号这玩意应该是人手一个了,就不细说了
服务部署
腾讯云 SCF 云函数
SCF 新增限制,环境变量整体 最大4KB,所以 最多添加4个盘
前往 腾讯云 SCF 管理页面
点击左侧的
函数服务
,然后点击新建
在创建方式里选择
模板创建
,然后在模糊搜索里输入onedrive
选中
OnedriveWithSCF
,点击下一步函数名称
、地域
及描述
可随意更改在触发器配置处请检查
集成响应
是否开启点击完成后在左侧点击
触发管理
页面下的访问路径
进入程序配置
Heroku + Cloudflare
该方法已不推荐使用
Heroku 端部署
前往 OneManager-php 项目的 GitHub 仓库并 Fork( 这里的 Fork 并非强制性要求 )
点击 Readme.md 中的
Deploy to Heroku
按钮跳转到 Heroku 后在
App name
栏中输入程序名称这里输入的内容即为将部署程序的子域名前缀
输入完成后点击
Deploy app
部署成功后点击
View
即可进入配置页面
Cloudflare 端部署
其实到此为止程序已经部署成功了,已经可以访问 Heroku
为你分配的域名来访问了,但是要想实现 24 小时不间断访问,则需要再注册一个 Heroku 账号并执行上述操作,并确保两个网址的内容一致,然后借助 Cloudflare Workers
来实现
进入
Workers
在脚本输入框中粘贴以下内容并将两个 Heroku 账号中程序部署的网址填入下方单双日
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66// 单日
const SingleDay = '第一个网址'
// 双日
const DoubleDay = '第二个网址'
// 一切给CF代理,true/false
const CFproxy = true
// 由于heroku不绑卡不能自定义域名,就算绑卡后https也不方便
// 另外免费套餐每月550小时,有些人不够用
// 于是在CF Workers使用此代码,分单双日拉取不同heroku帐号下的相同网页
// 只改上面,下面不用动
addEventListener('fetch', event => {
let nd = new Date();
if (nd.getDate()%2) {
host = SingleDay
} else {
host = DoubleDay
}
if (!CFproxy) {
let url=new URL(event.request.url);
if (url.protocol == 'http:') {
url.protocol = 'https:'
response = Response.redirect(url.href);
event.respondWith( response );
} else {
url.hostname=host;
let request=new Request(url,event.request);
event.respondWith( fetch(request) )
}
} else {
event.respondWith( fetchAndApply(event.request) );
}
})
async function fetchAndApply(request) {
let response = null;
let url = new URL(request.url);
if (url.protocol == 'http:') {
url.protocol = 'https:'
response = Response.redirect(url.href);
return response;
}
url.host = host;
let method = request.method;
let body = request.body;
let request_headers = request.headers;
let new_request_headers = new Headers(request_headers);
new_request_headers.set('Host', url.host);
new_request_headers.set('Referer', request.url);
let original_response = await fetch(url.href, {
method: method,
body: body,
headers: new_request_headers
});
response = new Response(original_response.body, {
status: original_response.status,
headers: original_response.headers
})
return response;
}填写完成后点击保存并部署即可看到 Cloudflare 给你提供的子域
至此教程完成
程序配置
安装
跳转到安装页面点击开始安装
选择简体中文再点击新建
API Key
点击 Reveal 后复制
API Key
再输入后台管理密码
必须输入,否则后期无法进入后台
确认后进入主页面左上角进入后台添加盘
输入标签及显示名称
选择你的 OneDrive 对应的版本
各种 A1,A1P,E3,E5 均为国际版
点击确认后跳转至微软账号登陆界面
登录成功后如图所示
更新
云函数部署方式更新
Clone
仓库最新代码到本地1
git clone https://github.com/qkqpttgf/OneManager-php.git
- 点击左侧
函数管理
页面上方的函数代码
- 在
提交方法
处选择本地上传 zip 包
- 点击上传选择刚 Clone 到本地的 zip 包并点击
部署
Heroku 部署方式更新
该部署方式已不推荐使用
Heroku
将会从代码仓库自动拉取最新代码并部署
其他方面
自定义域名
腾讯云 SCF 部署方式
- 登陆你的域名管理面板,添加
cname
解析,地址为你刚刚创建的SCF 的外链地址
- 在
SCF 控制台
左侧点击触发管理
- 点击
API 服务名
右侧的链接跳转到API 网关
- 在
通用 API 列表
的右侧点击编辑
- 在路径中改为
/
- 然后点击
立即完成
后点击发布服务
- 然后选择到
自定义域名
后点击新建
- 在
域名
处填写你刚添加的域名,若有证书也可开启 HTTPS 访问
Heroku 部署方式
Heroku
的自定义域名需要借助 CloudFlare Workers
来实现,有点麻烦,实在想自定义域名的朋友们可参考下面这篇文章
程序美化
程序默认主题的界面实在是不太美观,这里建议点击右下角来选择你认为合适的主题
我选择的是 renexmoe
主题,并对这个主题做出了一些修改。若你也想自定义主题或开发一套新主题,则需要前文提到的 Fork
该仓库,并将 Heroku
部署源改为你的仓库
当修改完成并推送至 GitHub
后即可点击 Deploy Branch
按钮更新程序部署