Sharelist , 项目来源on Github

https://github.com/reruin/sharelist

介绍

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

使用说明

中文版

https://github.com/reruin/sharelist/blob/master/README.md

英文版

https://github.com/reruin/sharelist/blob/master/README-en.md


入门

安装

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

Heroku

Deploy

Kubesail

Deploy

初始化

安装完成首次访问 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
  2. 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导出,此处可设置是否启用此功能。详细使用

SMB 端口

设置SMB 端口,默认8445。

SMB 匿名访问

设置SMB是否支持匿名访问,默认支持。

验证码识别接口

设置打码接口。

自定义样式

设置自定义样式

自定义脚本

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

插件配置

口令

设置后台管理密码。

网站标题

设置网站标题。

虚拟路径

设置网盘挂载源。参考 挂载源 部分。


挂载源

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

Google Drive

GoogleDrive ID

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

GoogleDrive API

官方API挂载

//应用ID/root?client_secret=应用机钥&redirect_uri=回调地址&refresh_token=refresh_token   

  /   

建议填写/,ShareList将自动开启挂载向导,按指示操作即可。

OneDrive

新版 OneDrive V2 插件提供多种方式的挂载,适用于 家庭版 和 商业版(企业版/教育版)。请将挂载路径留空,访问后会开启挂载向导,按提示操作即可。

ShareList内置了应用ID和应用机密 用于自动挂载。感谢 yushangcl 提供世纪互联挂载应用。

使用自己提供的应用ID 和 应用机密 时,请将重定向URI设置为 https://reruin.github.io/sharelist/redirect.html查看中转页的代码

天翼云盘

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

个人云

Cookie版,由 drive.189cloud.js 插件实现。

//用户名/初始文件夹ID?password=密码

建议填写/,ShareList将自动开启挂载向导,按指示填写用户名密码即可。


企业云

Cookie版,由 drive.189cloud.business.js 插件实现。

//用户名/初始文件夹ID?password=密码 

建议填写/,ShareList将自动开启挂载向导,按指示填写用户名密码即可。


家庭云

Cookie版,由 drive.189cloud.home.js 插件实现。

填写/,ShareList将自动开启挂载向导,按指示填写用户名密码即可。


API挂载

//应用ID/初始文件夹ID?app_secret=应用机钥&redirect_uri=回调地址&access_token=access_token   

建议填写/,ShareList将自动开启挂载向导,按指示操作即可。

access_token每隔30天需手动更新一次,到期前24小时内访问对应路径时会有更新提示。

和彩云

由 drive.caiyun.js 插件实现。

//用户名/初始文件夹ID?password=密码 

建议挂载路径留空,ShareList将自动开启挂载向导,按指示填写用户名、密码、路径即可。

caiyun.png

如果不需要挂载彩云根目录,请指定一个路径,例如/abc/def

蓝奏云

蓝奏云

由 plugins/drive.lanzou.js 插件提供对 蓝奏云 的访问支持,可支持蓝奏自带的文件提取码功能。

folderId  
[email protected]

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:[email protected]:1222/path   
https://username:[email protected]:1222/?acceptRanges=none

注意:若服务端不支持断点续传,需追加acceptRanges=none

SFTP

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

//username:[email protected]: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?
refresh_token?

高级应用

目录加密

在需加密目录内新建 .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] 参数启动即可。
  2. 已安装Node环境时,可直接运行 npx @sharelist/proxy -t [TOKEN] -h [HOST]启动。
  3. Docker docker run sharelist/proxy -e t="[TOKEN]" -e h="[HOST]"

Sharelist Proxy默认工作在33009端口,可以使用-p [PORT]参数指定其他端口。


负载均衡

ShareList支持将请求发送到多个对等的网盘,实现负载均衡。

  1. 成功挂载对等网盘。
  2. 新增类型为负载均衡的挂载源,挂载路径为对等网盘的访问路径,用;分割多个路径地址。

例如,已经在http://localhost/ahttp://localhost/b路径上挂载了内容相同的两个网盘,需要将两者的请求其合并到http://localhost/c路径下,在后台虚拟路径处,选择LoadBalancer类型,挂载路径填写为/a;/b即可。

注意:负载目录建立后,其目标目录将被自动隐藏(管理员模式可见)。


Zeroconf

ShareList支持向其他系统申明服务。包括:

  1. Sharelist Web站点
  2. Sharelist WebDAV(Emby Zeroconf 浏览器可用)

SMB(实验功能)

ShareList尝试支持将挂载内容以SMB服务形式分享,需在后台管理处启用。暂只支持SMB1.0 且为只读模式。 默认的SMB连接信息

端口: 8445
路径: SL
用户名: admin
密码:后台管理密码

主题开发

ShareList使用的pug/jade作为模板引擎,目录位于 theme 文件夹内。

  1. 至少需要实现index/detail/manage/auth/custom 5个页面,分别对应 列表/详情/管理/授权密码/自定义 页面。
  2. 请直接使用绝对地址来引用资源(js/css),他们会直接路由到对应到模板下。

开发请参考默认主题


Nginx(Caddy)反向代理

使用反代时,请添加以下配置。

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}