成果展示
讨厌百度网盘,所以打算搭建个人网盘。 :!:
利用 OneDrive 提供的云存储服务和国内服务器运营商提供的云函数计算服务,可低成本搭建一个个人网盘。
目前网盘访问速度尚可,下载速度虽然一般,但至少比百度网盘快。 :smile:
效果展示:
功能:
- 支持游客查看文件以及下载文件;
- 可在线查看图片以及视频;
- 管理员登录后可上传&下载文件,游客可在 /images/ 目录上传文件,但是无法查看上传的文件,该目录可作为图床使用。
由于文件是存储在 OneDrive 的服务器中,使用科学上网工具下载文件也许速度会更快。
准备
前提:
- 你已经拥有OneDrive账号,或者你的组织有OneDrive账号。
如果没有:Office 365 E5 账号申请及永久续期教程 - 阿里云/腾讯云/华为云账号以及个人域名
- 已开通云函数服务,开通方式在各自运营商主页中搜索便知,或者百度。
阿里云云函数服务: 阿里云FC - 阅读教程以及下载将要用到的函数代码: OneManager-php
- 不管是腾讯还是阿里云的函数计算,都不是免费的,但是有免费的额度可供使用。[ 阿里云函数计算费用 ]。阿里提供 100 万次函数调用、100000CU-s 的免费额度(腾讯的免费额度也差不多),超出额度按照以下公式计算费用:
我会在下个月公布额度,以供大家参考。
Install
阅读以上提到的教程并按照不同环境使用不同方案安装,安装中遇到问题请在代码 git 中提交 issues 。注意阿里云案例中,绑定域名时一定要事先给域名添加一个 CNAME 的解析,并且绑定的域名必须在阿里云备案。CNAME的值为:
绑定域名后使用域名访问你的网盘,点击左上角的管理-->设置,平台变量可以先不用设置,点击下方的 添加 OneDrive 盘 按照提示开始安装。
安装后根据爱好修改平台变量。
变量设置
平台变量:
- adminloginpage : 设置此变量的值会使主页的登录按钮隐藏,登录后台页面时必须使用此变量的值,比如变量值为 admin ,登录后台网址就为 xxx.com/?admin 。这是网盘安全的一道重要防线,请务必修改!!!
- background : 设置网盘的背景图片。考虑到网盘加载速度,请优先考虑小体积图片。如果有中意的图片但是体积很大,建议先压缩一下:图片压缩
- customCss : 自定义CSS,会作用于每个页面。比如设置网页的图标:
<link rel="icon" href="https://joessem.com/usr/uploads/images/icon.jpg">
- customScript : 自定义js,作用于每个页面。比如 http 重定位到 https ,当然提前是你的域名有 SSL 证书。
<script type="text/javascript">
var targetProtocol = "https:";
if (window.location.protocol != targetProtocol)
window.location.href = targetProtocol + window.location.href.substring(window.location.protocol.length);
</script>
- customTheme : 引用非自带的主题,变量的值填写主题提供的 url 。
- disableChangeTheme : 0|1, 如果填写 1,游客将不能在主页修改主题,只能由管理员在后台修改。
- disableShowThumb : 0|1, 该值设置为 1 时用户将不能使用显示缩略图的功能。
- hideFunctionalityFile : 0|1, 设置为 1 隐藏某些文件但是不限制这些文件的功能。
- passfile : 设置密码文件名,比如 password.txt ,只要在某个文件目录下存在这个文件,那么这个文件目录就是加密的,游客必须输入密码才能访问,密码为 password.txt 中的文本内容。
- sitename : 网盘(主页)的标题。
- theme : 主题选择。
- timezone : 时区设置。
OneDrive 盘变量:
- diskname : 绑定多个网盘此盘的名称。
- domain_path : 此变量可以设置每个访问域名访问的目录,比如 xx1.com:/root1/|xx2.com:/root2/ ,如果用户访问的链接是xx1.com,那么他看到的是 /root1/ 目录下的文件,xx2.com 访问的是 /root2/ 目录下的文件。
- domainforproxy : 使用 sharepoint 的代理。
- downloadencrypt : 0|1,设置为 1时加密目录中的文件不需要密码就能下载。
- guestup_path : 该值的内容为某条路径。游客的上传路径或者图床路径,不设置该值时该目录的文件会正常显示,设置后该页面只有上传按钮,不显示文件。管理员登录才能显示。
- public_path : 该盘显示的根目录,默认为 /
注意:游客每次只能上传单个文件。
[su_note note_color="#ececeb"]常与同好争高下,不与傻瓜论短长。[/su_note]