介绍
ShareList 是一个易用的网盘工具,支持快速挂载 GoogleDrive、OneDrive ,可通过插件扩展功能。
许可
Apache-2Copyright (c) 2018-present, Reruin
安装
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

Kubesail
初始化
安装完成首次访问
http://localhost:33001
地址,将进入初始化界面。口令
这是个必填项,此口令用于登录sharelist的管理后台。
网站标题
自定义的网站标题。
虚拟路径
指挂载内容,默认挂载了当前项目目录。
更多网盘挂载方式,参考 挂载源 部分。
后台管理
访问
http://localhost:33001/manage
,填写口令即可进入后台管理。常规
切换语言
切换ShareList界面语言,默认使用访问者的系统语言。
主题
切换ShareList主题。
目录索引
默认启用。如果只提供下载功能,可禁用此项。
系统管理员处于登录状态时,此项始终为
启用
。详情预览
默认启用。支持文档、图片、音频、视频的在线预览。
显示README.md内容
默认启用。启用此项时,当前文件夹内的README.md文件将会被解析显示在页面底部。
开放上传
默认禁用。
下载限制
限制指定文件的下载权限。可使用正则表达式。例如:
- 禁止所有文件下载
^$
- doc、pdf文件禁止下载
(?<!(doc|pdf))$
- abc 路径下的文件禁止下载
^((?!abc).)*$
- 允许 def 路径下的文件下载
def(?=\/)
中转
一般而言,下载使用的是各自挂载源的直连下载。启用此项后,所有下载都将使用本机中转。 !> 某些挂载源因使用了Cookie的原因,会强制中转。
中转路径
设置需要使用中转的路径。留空表示所有。
中转服务器
如果不想使用本机中转,可在此处填写对应的中转服务器。当前支持:
ShareList 也支持配置多个中转服务器,只需用
;
分割即可,同时支持配置每个中转服务器的轮换权重。例如:https://upstream.com/|1;https://upstream2.com/|2
上述表达式表示配置upstream
和upstream2
两台中转服务器,并按1:2分配请求。目录缓存时长
单位 秒。ShareList内部会对文件夹数据进行缓存,设置此项可调整。
链接缓存时长
同上。
下载链接有效期
单位 秒。设置后,下载链接将在此时间段内有效。若要关闭此功能,请设置为0。
忽略文件类型
设置后对应类型的文件将不会显示。 例如忽略图片:
jpg,png,gif,webp,bmp,jpeg
系统管理员处于登录状态时,可见所有文件。
忽略路径
设置后对应路径下的文件将不会显示。
系统管理员处于登录状态时,可见所有文件。
WebDAV路径
ShareList支持WebDAV导出,此处可设置访问路径。
SMB
ShareList支持SMB导出,此处可设置是否启用此功能。详细使用
SMB 端口
设置SMB 端口,默认8445。
SMB 匿名访问
设置SMB是否支持匿名访问,默认支持。
验证码识别接口
设置打码接口。
自定义样式
设置自定义样式
自定义脚本
设置自定义脚本,脚本将插入在页面的末尾。你可以在此处定义统计代码。
插件配置
口令
设置后台管理密码。
网站标题
设置网站标题。
虚拟路径
设置网盘挂载源。参考 挂载源 部分。
挂载源
sharelist通过插件支持多种挂载源。从
后台管理
- >
虚拟路径
,选择挂载源,输入挂载的名称和挂载路径即可。

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 提供世纪互联挂载应用。
天翼云盘
除了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将自动开启挂载向导,按指示填写用户名、密码、路径即可。
如果不需要挂载彩云根目录,请指定一个路径,例如
/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?

高级应用
目录加密
type: basic
data:
- user1:111111
- user2:aaaaaa
虚拟目录
在需创建虚拟目录处新建
目录名.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可支持更加自由的中转方式,支持多种安装方式。
- 此页面 可下载对应版本的中转程序。以 -t [TOKEN] -h [HOST] 参数启动即可。
- 已安装Node环境时,可直接运行
npx @sharelist/proxy -t [TOKEN] -h [HOST]
启动。
- Docker
docker run sharelist/proxy -e t="[TOKEN]" -e h="[HOST]"
。
Sharelist Proxy默认工作在33009端口,可以使用
-p [PORT]
参数指定其他端口。负载均衡
ShareList支持将请求发送到多个对等的网盘,实现负载均衡。
- 成功挂载对等网盘。
- 新增类型为
负载均衡
的挂载源,挂载路径为对等网盘的访问路径,用;
分割多个路径地址。
例如,已经在
http://localhost/a
和http://localhost/b
路径上挂载了内容相同的两个网盘,需要将两者的请求其合并到http://localhost/c
路径下,在后台虚拟路径处,选择LoadBalancer类型,挂载路径填写为/a;/b
即可。注意:负载目录建立后,其目标目录将被自动隐藏(管理员模式可见)。
Zeroconf
ShareList支持向其他系统申明服务。包括:
- Sharelist Web站点
- Sharelist WebDAV(Emby Zeroconf 浏览器可用)
SMB(实验功能)
ShareList尝试支持将挂载内容以SMB服务形式分享,需在后台管理处启用。暂只支持SMB1.0 且为只读模式。 默认的SMB连接信息
端口: 8445
路径: SL
用户名: admin
密码:后台管理密码
主题开发
ShareList使用的pug/jade作为模板引擎,目录位于 theme 文件夹内。
- 至少需要实现index/detail/manage/auth/custom 5个页面,分别对应 列表/详情/管理/授权密码/自定义 页面。
- 请直接使用绝对地址来引用资源(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}