2022-02-22 Update 注意,此处已不再建议使用腾讯SCF创建无服务云函数,因为源作者未上传最新代码至腾讯,导致在Microsoft Secret验证401,如果还是想用腾讯的方案,需要去原作者下载最新代码的包并手动上传,这里建议访问原作者项目地址 https://github.com/qkqpttgf/OneManager-php
,寻找到适合你的部署方式。
本文主要讲述如何使用 SCF
(Serverless Cloud Function) 腾讯无服务器云函数,来搭建一个 OneDrive
个人网盘。
新建函数
选择 函数服务
登录腾讯云函数控制台
在上方选择地区后(未备案请选择 中国香港
),点击 新建
在 新建
页面的 模糊搜索
中输入 onedrive
,可以看到 OnedriveWithSCF
的模板,选择这个模板后,点击 下一步
在 基础配置
中,建议将函数名称改简短,后续需要以此路径访问,点击 完成
创建完成后,点击 触发管理
-> 创建触发器
触发方式选择 API网关触发
点击 提交
安装网盘
点击 访问路径
地址,进入安装页面
点击 开始安装程序
后,选择 新建 SecretId & SecretKey
点击 新建密匙
将生成的 SecretId
和 SecretKey
复制到安装页面中
填入后点击 确认
输入一个 密码
,用于管理员登录
点击左上角的 登录
并输入 密码
登录成功后,点击左上角的 管理
-> 设置
选择 添加盘
输入 标签
和 显示名称
,选择 MS: 国际版(商业版与个人版)
,点击 确认
此时页面会跳转到 Microsoft
登录页面,登录你想展示的 OneDrive
网盘账号即可
登录且后台跳转成功后,选择 Use Onedrive
成功显示网盘内容
绑定域名
设定自定义域名
选择左边的 服务
,点击你的网盘服务名 进入API网关页面
选择 自定义域名
,点击 新建
HTTP协议
HTTP
协议如下图配置即可
HTTPS
协议需要在腾讯云 申请/导入
一个证书(点击免费申请证书 ),且使用费用未知。
目前腾讯云有免费的代金券,可自动抵扣,请读者自行根据访问需求选择。
添加记录
添加完成后,复制 公网二级域名
,自行到域名服务商处添加此记录即可
添加完成后,访问 http://自定义域名/函数名称
即可
配置网盘
以下是网盘部分配置参数的说明,部分转载自 2bboy
adminloginpage
自定义登录地址,设置后就会隐藏登录按钮(有些主题本来就没有登录按钮),登录时需要手动在网盘地址后加上?你设置的值
进行登录。
比如设置为abc
,那么你只能通过http://xxx.com/xxx?abc
地址来登录 。所以一旦设置就要记住你设置的值,不然连你自己也没法知道登录地址那就麻烦了。
这个设置是为了防止别人通过默认的登录界面尝试登录你的网盘,设置本项后只要猜不到登录界面,即使别人知道登录密码也没用,多一道防护墙,让网盘更安全。
autoJumpFirstDisk
设置点击网盘标题时跳转到绑定的第一个盘还是当前绑定的网盘根目录。
background
自定义背景图片,填入一个图片的url地址,因为图片加载通常需要更多时间,为了速度考虑不建议放入大体积图片。
backgroundm
手机端显示的背景图片地址。
customCss
设置自定义css的地方,这里设置的css会作用于网盘所有页面。
比如我想隐藏语言选项框:
1 | <style>.changelanguage{display:none}</style> |
P.S. 部分主题测试无效,暂时不清楚原因
customScript
设置自定义js,会作用于所有页面。
比如设置http重定向到https:
1 | <script type="text/javascript"> |
P.S. 部分主题测试无效,暂时不清楚原因
customTheme
通过url的方式引用html主题,比如你可以通过设置下面的地址来使用我的主题。
disableChangeTheme
设置为1
后游客浏览时将不显示右下角的主题切换功能。
disableShowThumb
设置为1
后将不显示缩略图的按钮和功能,对于云函数用户来说,建议设为1
来关闭该功能,因为该功能可能点一下就是一分钱。
hideFunctionalityFile
设置为1
后,游客浏览网盘时就会看不到read.md,head.md,head.ofm,foo.omf这些文件,这些文件是干嘛的后面会说。
passfile
设置密码文件名,比如这里设置为password.txt,那么在某一个目录下新建一个password.txt文件,其中写入密码,这样任何人在浏览这个网盘目录时都需要输入相应密码后才能访问。
sitename
设置网站名称。
theme
切换主题。
timezone
设置时区,国内可设置为8。
以下是多盘配置
diskname
多盘在网盘界面显示的名称。
domain_path
当绑定多个域名时,可以使不同域名打开时访问不同目录。当然如果你只有一个域名也可以用,通过这种方式可以使当前域名访问一个指定子目录,和后面的public_path起到一样的作用。
下面是两个域名的设置方法,中间用|
隔开,如果有多个域名只设置一个域名时,未设置的域名好像也会只访问该目录,要访问根目录dirname设置为/
。
1 | domain1.com:/dir1name|domain2.com:/dir2name |
downloadencrypt
设置为1
时启用该功能,这样在设置了密码的目录下的文件虽然无法在网页端浏览,但可以通过具体的文件链接进行下载。
guestup_path
设置图床路径或者叫游客上传路径,设置后游客只能看到上传按钮看不到目录下的文件。
public_path
设置该盘的显示的根目录,默认为/
,换个说法就是可以显示指定的文件夹,默认显示全部。
比如我们只想将网盘下的public文件夹内容作为网盘,可以设置为/public/
。
有了这个功能,即使只有一个onedrive账号,我们也可以通过重复绑定同一个账号来生成多盘,然后每个盘的public_path设置为不同的路径,这样可以将一个盘的功能分开。
P.S. 还有一种特殊情况是我既想让游客上传文件,又想让游客看见上传后的文件目录,目前就只能通过这种方法将该目录设置到两个盘,一个盘作上传,一个盘作目录展示。
进阶配置
设置网站ico图标
将favicon.ico图片放在网盘根目录下,新版的html主题只需要在绑定的第一个盘下面设置就行了。
当然你也可以在customCss或customScript中进行全局设置:
1 | <link rel="icon" href="https://cloud.tencent.com/favicon.ico" type="image/x-icon"> |
刷新自动切换背景图片
这个是通过设置特殊的图片api来实现的,这些api每次刷新都会返回一张不同的图片,将后台background设置为这些api的url即可。
网上类似的api有很多,以下是群友收集的免费图片api:
1 | https://api.ixiaowai.cn/api/api.php (二次元动漫) |
利用index.html设置自定义页面
如果一个目录下有名为index.html的文件,则直接显示该文件,可以利用这个功能设置一个自定义页面或者用于隐藏一个特定页面,相当于部署了一个静态页面。
设置顶部和底部说明文字
在需要展示顶部说明的目录下新建一个head.md
文件,在文件里写入说明内容即可,这是一个markdown文件,可以使用markdown语言进行书写。
底部说明说明文字对应的是readme.md
文件,规则与顶部文字一样。
利用head.omf设置一言
head.omf作用和head.md一样,区别是他不支持markdonw语言,但是支持html语言,可以写入html、css、js内容。
在想展示一言的目录新建head.omf
文件,然后写入以下内容:
1 | <p id="hitokoto">:D 获取中...</p> |
以上是使用了https://developer.hitokoto.cn/ 的一言接口,你也可以尝试更换其他接口或者自建接口。
利用foot.omf设置Valine评论
使用Valine需要先注册LeanCloud并实名认证,然后新建应用获取AppID和AppKey。
具体过程参考:https://valine.js.org/quickstart.html
然后新建foot.omf
,写入以下内容(注意填入替换自己的AppID和AppKey):
1 | <script src='//cdn.jsdelivr.net/npm/valine/dist/Valine.min.js'></script> |
P.S. 如果对样式不满意,建议直接在omf文件写css美化。
提示
- 游客上传文件时只能单个上传,不能批量上传。
- 由于scf的缓存系统,在scf上进行某项改动后有时候不会立马生效,或者刷新后时而生效时而不生效,只要多等一会儿,等旧缓存自己失效就好了。
- php格式的主题为旧版主题,许多功能不支持,html格式的主题为新版主题,不同主题的作者更新频率和支持功能都可能不同,功能测试请以最新版本的默认主题为准。