MENU

OneDrive搭建个人网盘

August 15, 2020 • 阅读: 4094 • 笔记&折腾



成果展示

讨厌百度网盘,所以打算搭建个人网盘。 :!:
利用 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]

Last Modified: February 6, 2021