介绍

ShareList 是一个易用的网盘工具,支持快速挂载 GoogleDrive、OneDrive ,可通过插件扩展功能。

安装

Sharelist支持多种安装方式。

脚本安装

脚本安装适合不熟悉NodeJs的用户。
执行命令后将自动安装NodeJs环境,并在当前目录(执行命令的目录)安装sharelist。
wget --no-check-certificate -qO- https://raw.githubusercontent.com/reruin/sharelist/master/netinstall.sh | bash
访问 http://localhost:33001 即可进入 WebDAV 目录 http://localhost:33001/webdav
sharelist自带更新脚本,在sharelist目录内执行 update.sh即可自动更新。
Sharelist需要NodeJS运行环境(>=8.0),一些早期的发行版可能无法被支持。此脚本不支持Windows。

手动安装

如果已有NodeJs环境,或者需要在windows下安装,可选择手动安装。
项目仓库克隆到本地,进入项目目录执行:
npm install npm install pm2 -g pm2 start app.js --name sharelist --env prod pm2 save pm2 startup
更新
bash update.sh

Docker

docker run -d -v /etc/sharelist:/sharelist/cache -p 33001:33001 --name="sharelist" reruin/sharelist

初始化

安装完成首次访问 http://localhost:33001地址,将进入初始化界面。

口令

这是个必填项,此口令用于登录sharelist的管理后台。

虚拟路径

指挂载内容,默认挂载了当前项目目录。
更多网盘挂载方式,参考 挂载源 部分。

后台管理

访问 http://localhost:33001/manage,填写口令即可进入后台管理。

切换语言

切换ShareList界面语言,默认使用访问者的系统语言。

主题

切换ShareList主题。

目录索引

默认启用。如果只提供下载功能,可禁用此项。
系统管理员处于登录状态时,此项始终为启用

详情预览

默认启用。支持文档、图片、音频、视频的在线预览。

显示README.md内容

默认启用。启用此项时,当前文件夹内的README.md文件将会被解析显示在页面底部。

下载限制

限制指定文件的下载权限。可使用正则表达式。例如:
  • 禁止所有文件下载 ^$
  • doc、pdf文件禁止下载 (?<!(doc|pdf))$
  • abc 路径下的文件禁止下载 ^((?!abc).)*$
  • 允许 def 路径下的文件下载 def(?=\/)

中转

一般而言,下载使用的是各自挂载源的直连下载。启用此项后,所有下载都将使用本机中转。 !> 某些挂载源因使用了Cookie的原因,会强制中转。

中转路径

设置需要使用中转的路径。留空表示所有。

中转服务器

如果不想使用本机中转,可在此处填写对应的中转服务器。当前支持:
  1. cloudflare
  1. Sharelist Proxy
ShareList 也支持配置多个中转服务器,只需用;分割即可,同时支持配置每个中转服务器的轮换权重。例如:https://upstream.com/|1;https://upstream2.com/|2上述表达式表示配置upstreamupstream2两台中转服务器,并按1:2分配请求。

目录缓存时长

单位 秒。ShareList内部会对文件夹数据进行缓存,设置此项可调整。

下载链接有效期

单位 秒。设置后,下载链接将在此时间段内有效。若要关闭此功能,请设置为0。

忽略文件类型

设置后对应类型的文件将不会显示。 例如忽略图片:jpg,png,gif,webp,bmp,jpeg
系统管理员处于登录状态时,可见所有文件。

忽略路径

设置后对应路径下的文件将不会显示。
系统管理员处于登录状态时,可见所有文件。

WebDAV路径

ShareList支持WebDAV导出,此处可设置访问路径。

SMB

ShareList支持SMB导出,此处可设置是否启用此功能。详细使用

自定义脚本

设置自定义脚本,脚本将插入在页面的末尾。你可以在此处定义统计代码。

口令

设置后台管理密码。

挂载源

sharelist通过插件支持多种挂载源。从
后台管理
  • >
虚拟路径
,选择挂载源,输入挂载的名称和挂载路径即可。
notion image

GoogleDrive ID

使用分享的文件ID挂载。 分享的文件ID 即是 挂载路径。

GoogleDrive API

官方API挂载
//应用ID/root?client_secret=应用机钥&redirect_uri=回调地址&refresh_token=refresh_token
/
建议填写/,ShareList将自动开启挂载向导,按指示操作即可。

天翼云盘

除了API挂载,其他三种情况在登录时可能遇到验证码,因此需要为sharelist配置 验证码识别 接口。

个人云

Cookie版,由 drive.189cloud.js 插件实现。
//用户名/初始文件夹ID?password=密码
建议填写/,ShareList将自动开启挂载向导,按指示填写用户名密码即可。

企业云

Cookie版,由 drive.189cloud.business.js 插件实现。
//用户名/初始文件夹ID?password=密码
建议填写/,ShareList将自动开启挂载向导,按指示填写用户名密码即可。

API挂载

//应用ID/初始文件夹ID?app_secret=应用机钥&redirect_uri=回调地址&access_token=access_token
建议填写/,ShareList将自动开启挂载向导,按指示操作即可。
access_token每隔30天需手动更新一次,到期前24小时内访问对应路径时会有更新提示。

和彩云

由 drive.caiyun.js 插件实现。
//用户名/初始文件夹ID?password=密码
建议挂载路径留空,ShareList将自动开启挂载向导,按指示填写用户名、密码、路径即可。
notion image
如果不需要挂载彩云根目录,请指定一个路径,例如/abc/def

蓝奏云

由 plugins/drive.lanzou.js 插件提供对 蓝奏云 的访问支持,可支持蓝奏自带的文件提取码功能。
folderId password@folderId
folderId是分享链接中bxxxxxx部分。
支持自定路径,如:
s/aaa111
插件为 mp4/jpg 等禁止上传的格式提供解析支持,只需在文件名后附加ct后缀即可。以mp4为例,将xxx.mp4命名为xxx.mp4.ct后再上传,插件将自动解析为mp4文件。

本地文件

sharelist原生支持挂载本地文件。文件路径做为挂载路径即可。
注意:统一使用unix风格路径,例如 windows D盘 为 /d/

WebDAV

由 drive.webdav.js 插件实现,用于访问WebDAV服务。允许的挂载路径
https://webdavserver.com:1222/path https://username:password@webdavserver.com:1222/path https://username:password@webdavserver.com:1222/?acceptRanges=none
注意:若服务端不支持断点续传,需追加acceptRanges=none

SFTP

SFTP(SSH File Transfer Protocol),可通过SSH协议建立的安全连接来传输文件,由 drive.sftp.js 插件实现。
//username:password@server:port/path

Teambition

由 drive.teambition.js 插件实现。
挂载路径留空
挂载路径留空,ShareList将自动开启挂载向导,按指示填写用户名、密码、初始路径。
初始地址可用于选定 初始文件夹 或 初始项目。从官网访问到对应文件夹内,复制浏览器URL 作为初始路径即可。留空时默认为网盘根目录。
绑定网盘时:
https://www.teambition.com/pan/org/xxxxxxxxxx/space/xxxxxxxxxx/folder/xxxxxxxxxx
绑定项目时:
https://www.teambition.com/project/xxxxxx/works/xxxxxx
未适配国际版。

Baidu

挂载路径留空,ShareList将自动开启挂载向导,按指示操作即可。
免责申明: 此插件基于网盘开放平台 实现,点击查看文档,使用时请遵守使用协议
由于大文件(估测50M)无法直连下载,sharelist将强制中转。
大文件的实际下载速度可能受多方面因素影响。

Aliyun Drive

由 drive.aliyundrive.js 插件实现。 将挂载路径留空,ShareList将自动开启挂载向导,按指示填写refresh_token即可。
如何获取refresh_token?
notion image

目录加密

在需加密目录内新建 .passwd 文件,type为验证方式,data为验证内容。目前只支持用户名密码对加密(由auth.basic插件实现)。 例如:
type: basic data: - user1:111111 - user2:aaaaaa
user1用户可使用密码111111验证,user2用户可使用密码aaaaaa验证。请参考example/secret_folder/.passwd

虚拟目录

在需创建虚拟目录处新建目录名.d.ln文件。 其内容为挂载标识:挂载路径指向本地/root的虚拟目录
fs:/root
指向GoogleDrive的某个共享文件夹虚拟目录
gd:0BwfTxffUGy_GNF9KQ25Xd0xxxxxxx
系统内置了一种单文件虚拟目录系统,使用yaml构建,以sld.ln作为后缀保存。参考 example/sharelist_drive.sld.ln

cf-worker中转

复制 cf-worker 脚本,修改HOST为sharelist的访问地址,TOKEN为管理后台的访问口令。以此为内容创建cf worker,之后将cf-worker地址(https://**.workers.dev) 保存到后台配置->中转服务器中。
注意,由于Cloudflare限制,HOST必须是使用标准端口(80,443)的域名地址,例如 http://example.com/,因而你需要为运行ShareList服务的IP做域名解析,同时修改其运行端口为80或443(可在app/config.js中修改),强烈建议使用nginx进行代理。

sharelist-proxy中转

Sharelist Proxy可支持更加自由的中转方式,支持多种安装方式。
  1. 此页面 可下载对应版本的中转程序。以 -t [TOKEN] -h [HOST] 参数启动即可。
  1. 已安装Node环境时,可直接运行 npx @sharelist/proxy -t [TOKEN] -h [HOST]启动。
  1. Docker docker run sharelist/proxy -e t="[TOKEN]" -e h="[HOST]"
Sharelist Proxy默认工作在33009端口,可以使用-p [PORT]参数指定其他端口。

负载均衡

ShareList支持将请求发送到多个对等的网盘,实现负载均衡。
  1. 成功挂载对等网盘。
  1. 新增类型为负载均衡的挂载源,挂载路径为对等网盘的访问路径,用;分割多个路径地址。
例如,已经在http://localhost/ahttp://localhost/b路径上挂载了内容相同的两个网盘,需要将两者的请求其合并到http://localhost/c路径下,在后台虚拟路径处,选择LoadBalancer类型,挂载路径填写为/a;/b即可。
注意:负载目录建立后,其目标目录将被自动隐藏(管理员模式可见)。

Zeroconf

ShareList支持向其他系统申明服务。包括:
  1. Sharelist Web站点
  1. Sharelist WebDAV(Emby Zeroconf 浏览器可用)

SMB(实验功能)

ShareList尝试支持将挂载内容以SMB服务形式分享,需在后台管理处启用。暂只支持SMB1.0 且为只读模式。 默认的SMB连接信息
端口: 8445 路径: SL 用户名: admin 密码:后台管理密码

主题开发

ShareList使用的pug/jade作为模板引擎,目录位于 theme 文件夹内。
  1. 至少需要实现index/detail/manage/auth/custom 5个页面,分别对应 列表/详情/管理/授权密码/自定义 页面。
  1. 请直接使用绝对地址来引用资源(js/css),他们会直接路由到对应到模板下。
开发请参考默认主题

Nginx

proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Range $http_range; proxy_set_header If-Range $http_if_range; proxy_no_cache $http_range $http_if_range;
如果使用上传功能,请调整 nginx 上传文件大小限制。
client_max_body_size 8000m;

Caddy

header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} header_upstream X-Forwarded-Proto {scheme}
badge