利用now.sh容器搭建你的onedrive网盘

now.sh是一家提供免费容器的厂商,容器简单理解为虚拟机,不同的是容器只是模拟了软件所需要的环境,因而容器相比较而言显得更为轻便快捷。容器技术也是现在大火的技术之一。

先来看看now.sh为我们提供免费套餐:

  • 带宽流量:1G
  • 实例个数:3
  • 日志容量:100M
  • 单个文件最大:5M
  • 存储空间:1G

虽说一个容器将相当于一台云主机,但是上面列出的诸多限制让很多项目都没法正常展开。但是用来搭建onedrive网盘是绰绰有余了,oneindex项目申称不走服务器流量,所以1G宽带够了。

注册now账号

注册地址:zeit.co/signup

有一点需要注意的是,now.sh没有密码,全靠的是注册的邮箱验证来识别用户身份,这个记住会少走几个弯路。

安装nodejs

now.sh需要本地安装nodejs来进行操作。nodejs下载地址:https://nodejs.org/en/
考虑到很多人会直接使用自己的电脑进行操作,所以这里给出win系统的演示。linux系统类似,可作参考。

下载安装nodejs完毕后(安装时选项都为默认),使用win+R组合按键调出“运行”窗口并键入cmd回车,进入命令行界面。
请输入图片描述

输入npm -v,出现版本号即为安装成功。
请输入图片描述

拉取oneindex项目

oneindex项目托管在github上,下载oneindex项目源代码到本地有两种方法:

使用github提供的git工具

下载地址:https://git-scm.com,安装完毕后使用命令git clone https://github.com/malaohu/oneindex.git将源代码拉去到本地,目录名直接为oneindex

直接下载压缩文件到本地

进入网页:malaohu/oneindex.git下载源码压缩包zip到本地,之后解压缩,并将解压后的目录名更改为oneindex

安装now并配置

安装now工具

npm install -g now

配置now账户信息

now login

配置完毕后就会在当前目录下生成.now文件,里面包含着你的个人账户信息。

注意:这一步需要输入你在now注册的邮箱,并在收件箱里进行验证!不要傻傻等着为什么还没结束,原因是now没有密码,你需要验证邮件才行。

安装oneindex

进入oneindex目录(前面的源代码目录),新建文件now.json,内容为如下:

{
"version":1,
"type": "docker",
"features": {
"cloud": "v1"
}
}

注意:目前now平台升级到v2版本,其他网站上教程只适用v1版本已经落后了,现在搭建onedrive需要使用以上代码now.json文件保存完毕后,在当前目录(oneindex)下空白处:shift(按键)+右键,进入位于当前目录下的命令行。当然你会命令行,也可以使用cd命令更换到oneindex目录。

请输入图片描述

使用命令now部署oneindex
请输入图片描述

出现success表示部署成功。在该页面也可以看到该项目的访问地址。当然你也可以在now的面板查看实时动态及地址:https://zeit.co/dashboard之后便是oneindex的设置方法.

后续一些设置

部署完成后,容器默认会隔一段时间重启,容器重启会让你搭建的都白费。为了不让容器自己重启,请使用以下命令:

now scale oneindex-creahpgwao.now.sh 1

oneindex-creahpgwao.now.sh 为你的域名

为了方便访问,可以把前缀设置一个别名。取一个不重复且方便记忆。这里我使用的是room,你可以访问https://room.now.sh来看看我搭建的。
请输入图片描述

文件没有显示
该项目使用了缓存技术,如果上传文件后,网盘没有及时显示出现的情况,请在后台清除缓存或是重建缓存试试

出现空白页
如果一段时间以后,搭建的onedrive在线网盘出现空白页的情况,请更换ip访问试试,或是找到 /controller/AdminController.php 文件,删除以下代码:

if($_SERVER[‘HTTP_HOST’] == ‘localhost’){
$redirect_uri = ‘http://’.$_SERVER[‘HTTP_HOST’].get_absolute_path(dirname($_SERVER[‘PHP_SELF’]));
}else{
// 非https,调用ju.tn中转
$redirect_uri = ‘https://ju.tn/‘;
}

now提供的几个命令

  • now list //列出容器列表
  • now remove 容器名 //删除容器