Golang-based Onedrive List - 极易部署的 Onedrive List 服务。
https://github.com/cugxuan/gonelist
这是一款使用 golang + vue 编写的基于 onedrive 的在线共享网盘
效果展示:https://gonelist.cugxuan.cn
后端项目地址:https://github.com/gonelist/gonelist
前端项目地址:https://github.com/gonelist/gonelist-web
详细文档地址:https://gonelist-doc.cugxuan.cn
有问题请提 issue,也可以进入 QQ 群交流,群号:1083165608
功能特性
- 「跨平台」,兼容 Linux/Windows/MacOS 等多个平台
- 「极速部署」,下载对应程序,修改配置即可前后端一键部署
- 「直链下载」,文件直链下载,下载不消耗服务器流量
- 「自动刷新」,自动刷新缓存,可自定义时间
- 「自定义目录」,支持将 onedrive 的某个目录作为根目录
- 「在线播放」,支持在线播放音频和视频,在线浏览图片
- 「海量文件」,支持单目录下上千个文件,正常使用
- 「多平台」,支持个人版、教育账号、世纪互联等
- 「README」,支持页面添加 README
- 「加密目录」,支持给目录加密
- 「登陆缓存」,登陆 onedrive 之后会有缓存,下次直接启动无需登录
- ...
注:支持绝大部分教育账号,部分 教育账号 因为需要管理员同意无法使用
安装配置
实体服务安装教程
如果您的整个微软账号和 onedrive 网盘内,没有隐私内容,可以按照下面的流程快速配置体验效果,完整的下载安装流程请看 安装文档
快速配置体验
下载 Github Release 或者 gonelist-release 中对应的包,Linux 系统下载 gonelist_linux_amd64.tar.gz,直接运行即可启动,以 Linux 系统本地启动为例
// 下载对应的安装包,也可下载 gonelist-release 中的包,下面命令不一定是最新版本
$ wget https://github.com/cugxuan/gonelist/releases/download/v0.5.3/gonelist_linux_amd64.tar.gz
$ tar -zxf gonelist_linux_amd64.tar.gz && cd gonelist_linux_amd64
$ ./gonelist_linux_amd64
打开 http://localhost:8000 按照提示登录后即可。如果是在本地部署,登陆成功会跳转到首页,此时已经完成部署。
如果是在服务器部署,登陆成功会跳转到 http://localhost:8000/auth?code=xxx ,将当前网址改成 http://yoursite:8000/auth?code=xxx 再回车等待文件加载后,会自动跳转你的网站 http://yoursite:8000 。如果登陆后一直没有反应,可能是因为文件夹数量过多导致,建议设置「子文件夹」选项
默认情况下读取当前路径的 config.yml 作为配置文件,或加参数 --conf=dir1/file.yml 指定配置文件路径
实体systemd服务安装
视频教程(包含了Azure应用程序的配置) https://www.bilibili.com/video/BV1PA411t7Jw/
docker运行
视频教程 https://www.bilibili.com/video/BV1Vz4y1R7EK/
直接使用项目的docker-compose.yml去docker-compose up -d即可,建议把配置文件放在一个文件夹里,把文件夹挂载进去,否则直挂文件 docker 挂载的是 inode。 如果是群晖的 docker 上运行的话会不支持 docker 的 command 似乎,可以把配置文件的目录挂载到容器里,例如/etc/config,创建容器的时候加上环境变量CONF_PATH=/etc/config/config.yml。 token_path 写/etc/config/,然后创建容器的最后地方的Entrypoint和命令空着
.
├── config
│ └── config.yml
└── docker-compose.yml
config.yml
如果需要修改配置,在配置文件中填对应内容即可
# gonelist 配置文件,注意配置字段和信息中间有个空格
# name 表示你的站点的名字,会显示在每个页面的左上角
name: GONEList
# Remote name,可选 onedrive, chinacloud
remote: onedrive
# onedrive 的获取层级,默认获取两层
level: 2
# 提供 onedrive 的应用配置,建议自己创建应用
client_id: 16e320f7-e427-4612-88da-f3d03e944d40
client_secret: lURpL3U@bBlmJ0:_dnU.LeLOGNGdVT30
# 提供 chinacloud 的应用配置,建议自己创建应用
#client_id: 2b54b127-b403-42a3-8b55-d25f3119aa13
#client_secret: a0CGqBT3f_8U5gztxKjxR-LNW-ZnTe.m
# 不建议修改,需要和应用中心设置的 redirect_url 一致
redirect_url: http://localhost:8000/auth
# 随意设置一个你喜欢的字符串,在 onedrive 认证时会使用
state: 23333
# 默认在当前文件夹下,不建议修改
# token 实现了下次启动时不需要重新登陆验证的功能
token_path:
# 可以配置 CDN 加速重定向,url 前缀
download_redirect_prefix:
# gonelist 服务设置,不建议修改
server:
ReadTimeout: 0
WriteTimeout: 0
bind_global: true
dist_path: ./dist/
# 子文件夹设置,比如你只想挂载你盘根目录下的 public 文件夹,就使用 /public
folder_sub: /
gzip: true # 是否开启 gzip 加速, 默认开启
port: 8000
# 自动刷新时间
refresh_time: 10
site_url: http://localhost:8000 # 不建议修改,在启动后会自适应调整
# 这是一个数组,可以对不同文件夹设置密码
# 但还是推荐在需要设置密码的文件夹下创建 .password 文件
# 在该文件中填写密码即可,文件格式最好是 UTF-8
pass_list:
- pass:
path:
# - pass:
# path:from https://github.com/gonelist/gonelist
--------------------------------------------
OneList - Written in GoLang
- 支持 国际版, 个人免费版(家庭版), 中国版(世纪互联).
- 支持同时列出多个盘的目录.(同时挂载多个网盘或单个网盘挂载成多个
SubPath,要求每个SubPath唯一) - 支持文件夹内超过 200 个项目
- 支持后台自动刷新缓存.
- 支持路径中含有特殊字符.
- 支持使用不同目录使用不同账户密码加密(HTTP 401).
- 支持隐藏目录和文件(跳过缓存).
- 支持自定义 ClientID 和 SecretKey .
- 数据储存在内存中,响应更加迅速.
授权
通过下面URL登录 (右键新标签打开)
国际版, 个人版(家庭版)
中国版(世纪互联)
添加配置文件
# 国际版
OneList -a "url" -s "/onedrive01"
# 个人版(家庭版)
OneList -ms -a "url" -s "/onedrive02"
# 中国版(世纪互联)
OneList -cn -a "url" -s "/onedrive03"
# 在浏览器地址栏中获取以 http://loaclhost 开头的整个url内容
# 将获取的完整url内容替换命令中的 url 三个字母
# 每次产生的 url 只能用一次, 重试请重新获取 url
# 可以一个盘内的多个文件夹分别映射到多个`SubPath`上
# 此操作将会自动添加的配置文件
# 提示 Success! Add config. '/path/to/config.json' 则成功
修改配置文件
[
{
// 如果是家庭版或者个人免费版, 此项应为 true.
"MSAccount": false,
// 如果是中国版(世纪互联), 此项应为 true.
"MainLand": false,
// 授权令牌
"RefreshToken": "1234564567890ABCDEF",
// 单配置文件中,此项要唯一.将此OneDrive中设置为`RootPath`目录映射在`http://127.0.0.1:5288/onedrive` 下.
// (只推荐一个盘位的时候使用根目录"/".)
"SubPath": "/onedrive",
// 读取OneDrive的某个目录作为根目录. (支持根目录"/")
"RootPath": "/Test",
// 隐藏OneDrive目录中的文件夹和文件, 条目间使用 "|" 分割. (跳过缓存设置的条目.)
"HidePath": "/Test/Obj01|/Test/Obj02",
// 使用用户名和密码加密OneDrive目录. 目录和用户名密码间使用 "?" 分割, 用户名密码使用 ":" 分割, 条目间使用 "|" 分割. 无效条目将跳过.
"AuthPath": "/Test/Auth01?user01:pwd01|/Test/Auth02?user02:pwd02",
// 缓存刷新间隔.(所有项目中的刷新时间取最小值为有效刷新间隔)
"RefreshInterval": 900
}
]
使用
Usage of OneList:
-a string
// 初始化配置文件,添加新配置
Setup and Init auth.json.
-bind string
// 绑定IP地址(公网: 0.0.0.0)
Bind Address (default "127.0.0.1")
-port string
// 绑定端口(HTTP:80)
Port (default "5288")
-s string
// 设置 SubPath 项, 需要与 -a 一起使用.
Set SubPath. [unique per account] (default "/")
-c string
// 配置文件
Config file. (default "config.json")
-t string
// Index.html 目录样式文件
Index file. (default "index.html")
-json
// 开关
// 数据以 json 形式输出当前目录数据
Output json.
-cn
// 开关
// 授权中国版(世纪互联), 需要此参数.
OneDrive by 21Vianet.
-ms
// 开关
// 授权个人版(家庭版), 需要此参数.
OneDrive by Microsoft.
-C string
// 覆写所有预置的 Client ID. (不建议新手使用此参数)
Set Client ID. [Overwrite all clientId]
-S string
// 覆写所有预置的 Secret Key. (不建议新手使用此参数)
Set Secret Key. [Overwrite all secretKey]
-P string
// 设置反代域名.此设置将全部流量定向到某个服务器或CDN,用于隐藏全局域名或者加速.
// 每组以";"相间隔. 源域名与目标域名以"|"间隔. 可以设置多组.
// 默认为空,使用时不要带中括号. (不建议新手使用此参数)
Set Proxy Domain. ["x.sharepoint.com|domain.com;x.sharepoint.cn|domain.cn;..."]
运行
# 保证 config.json 和 index.html 同目录, 直接运行.
$ OneList
# 监听公网 80 端口
$ OneList -bind 0.0.0.0 -port 80
注意
- 在初次缓存过程中或者打开空文件夹, 会提示 No Found.
- 请使用 UTF-8 编码模式手动编辑 config.json 文件.
Nginx 反代配置
location ^~ /onedrive/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:5288;
}
后台运行及开机自启
# /path/to/OneList 为OneList的完整路径
# 后台运行
nohup /path/to/OneList -bind 0.0.0.0 -port 80 >/dev/null 2>&1 &
# 开机自启并后台运行
编辑 /etc/crontab 文件, 并添加下面一行并多按几个回车. (有些系统不留空行会出现意外)
@reboot root nohup /path/to/OneList -bind 0.0.0.0 -port 80 >/dev/null 2>&1 &
Client/Secret (~ 2299/12/31)
# 国际版: 78d4dc35-7e46-42c6-9023-2d39314433a5| ZudGl-p.m=LMmr3VrKgAyOf-WevB3p50
# 中国版: dfe36e60-6133-48cf-869f-4d15b8354769| H0-1:6.Sb8:WCW/J-c]K@fddCt[i0EZ2
# ReplyURL: http://localhost/onedrive-loginfrom https://github.com/MoeClub/OneList/tree/master/Rewrite-------相关帖子: https://briteming.blogspot.com/2020/10/gonelist.html------------OneDrive目录列表程序OneList的使用方法
- 支持 国际版, 个人免费版(家庭版), 中国版(世纪互联).
- 支持同时列出多个盘的目录.(同时挂载多个网盘或单个网盘挂载成多个
SubPath,要求每个SubPath唯一) - 支持文件夹内超过 200 个项目
- 支持后台自动刷新缓存.
- 支持路径中含有特殊字符.
- 支持使用不同目录使用不同账户密码加密(HTTP 401).
- 支持隐藏目录和文件(跳过缓存).
- 支持自定义 ClientID 和 SecretKey .
- 数据储存在内存中,响应更加迅速.
授权
通过下面URL登录 (右键新标签打开)
国际版, 个人版(家庭版)
中国版(世纪互联)
安装OneList
#新建并进入OneList目录
mkdir /opt/OneList && cd $_
#64位系统下载
wget https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/amd64/linux/OneList
#32位系统下载
wget https://raw.githubusercontent.com/MoeClub/OneList//master/Rewrite/i386/linux/OneList
#arm架构下载
wget https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/arm/linux/OneList
#给予权限
chmod +x OneList添加配置文件
# 国际版
OneList -a "url" -s "/onedrive01"
# 个人版(家庭版)
OneList -ms -a "url" -s "/onedrive02"
# 中国版(世纪互联)
OneList -cn -a "url" -s "/onedrive03"
# 在浏览器地址栏中获取以 http://loaclhost 开头的整个url内容
# 将获取的完整url内容替换命令中的 url 三个字母
# 每次产生的 url 只能用一次, 重试请重新获取 url
# 可以一个盘内的多个文件夹分别映射到多个`SubPath`上
# 此操作将会自动添加的配置文件
# 提示 Success! Add config. '/path/to/config.json' 则成功.修改配置文件
[
{
// 如果是家庭版或者个人免费版, 此项应为 true.
"MSAccount": false,
// 如果是中国版(世纪互联), 此项应为 true.
"MainLand": false,
// 授权令牌
"RefreshToken": "1234564567890ABCDEF",
// 单配置文件中,此项要唯一.将此OneDrive中设置为`RootPath`目录映射在`http://127.0.0.1:5288/onedrive` 下.
// (只推荐一个盘位的时候使用根目录"/".)
"SubPath": "/onedrive",
// 读取OneDrive的某个目录作为根目录. (支持根目录"/")
"RootPath": "/Test",
// 隐藏OneDrive目录中的文件夹和文件, 条目间使用 "|" 分割. (跳过缓存设置的条目.)
"HidePath": "/Test/Obj01|/Test/Obj02",
// 使用用户名和密码加密OneDrive目录. 目录和用户名密码间使用 "?" 分割, 用户名密码使用 ":" 分割, 条目间使用 "|" 分割. 无效条目将跳过.
"AuthPath": "/Test/Auth01?user01:pwd01|/Test/Auth02?user02:pwd02",
// 缓存刷新间隔.(所有项目中的刷新时间取最小值为有效刷新间隔)
"RefreshInterval": 900
}
]使用
Usage of OneList:
-a string
// 初始化配置文件,添加新配置
Setup and Init auth.json.
-bind string
// 绑定IP地址(公网: 0.0.0.0)
Bind Address (default "127.0.0.1")
-port string
// 绑定端口(HTTP:80)
Port (default "5288")
-s string
// 设置 SubPath 项, 需要与 -a 一起使用.
Set SubPath. [unique per account] (default "/")
-c string
// 配置文件
Config file. (default "config.json")
-t string
// Index.html 目录样式文件
Index file. (default "index.html")
-json
// 开关
// 数据以 json 形式输出当前目录数据
Output json.
-cn
// 开关
// 授权中国版(世纪互联), 需要此参数.
OneDrive by 21Vianet.
-ms
// 开关
// 授权个人版(家庭版), 需要此参数.
OneDrive by Microsoft.
-C string
// 覆写所有预置的 Client ID. (不建议新手使用此参数)
Set Client ID. [Overwrite all clientId]
-S string
// 覆写所有预置的 Secret Key. (不建议新手使用此参数)
Set Secret Key. [Overwrite all secretKey]
-P string
// 设置反代域名.此设置将全部流量定向到某个服务器或CDN,用于隐藏全局域名或者加速.
// 每组以";"相间隔. 源域名与目标域名以"|"间隔. 可以设置多组.
// 默认为空,使用时不要带中括号. (不建议新手使用此参数)
Set Proxy Domain. ["x.sharepoint.com|domain.com;x.sharepoint.cn|domain.cn;..."]运行
# 保证 config.json 和 index.html 同目录, 直接运行.
$ OneList
# 监听公网 80 端口
$ OneList -bind 0.0.0.0 -port 80
注意
- 在初次缓存过程中或者打开空文件夹, 会提示 No Found.
- 请使用 UTF-8 编码模式手动编辑 config.json 文件.
Nginx 反代配置:
location ^~ /onedrive/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:5288;
}
开机自启
这里新建一个简单的systemd配置文件,适用CentOS 7、Debian 8+、Ubuntu 16+。
使用命令:
#设置你的运行监听端口,即你可以通过ip:端口访问程序,这里默认8000。
port="8000"
#将以下代码一起复制到SSH运行
cat > /etc/systemd/system/onelist.service <<EOF
[Unit]
Description=onelist
After=network.target
[Service]
Type=simple
ExecStart=/opt/OneList/OneList -bind 0.0.0.0 -port ${port}
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
#启动并设置开机自启
systemctl start onelist
systemctl enable onelist
卸载
#未设置开机自启
rm -rf /opt/OneList
#设置过开机自启
systemctl stop onelist
systemctl disable onelist
rm -rf /opt/OneList /etc/systemd/system/onelist.service

No comments:
Post a Comment