Code Monkey home page Code Monkey logo

gonelist's Introduction

GONEList

Build Status Latest Release All Releases Download

这是一款使用 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和本地目录
  • 「webdav」,支持使用webdav协议对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.ymldocker-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
# page_title 是在浏览器标签栏的名字
page_title: GONEList

# gonelist 服务设置,不建议修改
server:
  ReadTimeout: 60
  WriteTimeout: 60
  bind_global: true  # 是否绑定到全局(0.0.0.0),如果使用 nginx 转发可以设置为 false
  dist_path: ./dist/ # 前端文件路径,请不要修改
  gzip: true         # 是否开启 gzip 加速, 默认开启
  port: 8000         # 应用监听的端口
  site_url: http://localhost:8000 # 不建议修改,在启动后会自适应调整
  enable_upload: false  # 是否开启上传功能

# 网盘挂载的类型,当前仅支持 onedrive
list_type: onedrive

# 权限配置
admin:
  # 是否允许客户端写入文件到onedrive服务端,写入包括创建文件夹,上传文件,删除文件
  enable_write: true
  # 写入权限的secret,前端升级权限时需要,建议更改默认secret
  secret: 123465

  # 大文件分片上传时得分片大小,默认为32MB,数字为1表示320kb
  upload_slice_size: 100

# 本地文件挂载配置,请谨慎挂载,挂载后在管理员权限下将拥有删除文件和上传文件的权限
local:
  # 是否启用本地文件挂载
  enable: false
  # 本地文件挂载的名称,即挂载目录在跟目录显示的名称
  name: local
  # 本地文件挂载的路径,请使用/而不是\\,支持绝对路径和相对路径
  # eg: 绝对路径 D:/Test  /root/test
  # eg: 相对路径 ./test  ../
  path: ./

# webdav配置
web_dav:
  # 是否启用webdav
  enable: false
  # webdav登录账号
  account: admin
  # webdav登录密码
  password: admin
  
# onedrive 设置选项
onedrive:
  # Remote name,可选 onedrive, chinacloud(世纪互联),在local开启下可输入local,仅挂载本地目录
  remote: onedrive

  # onedrive 的刷新模式,all,fresh 两种模式
  # all 模式下每次都自动刷新所有文件,默认配置
  # fresh 模式下,对文件数量极多的用户比较友好,只刷新 level 层的文件,其他文件夹在访问后延迟刷新
  model: all

  # model 为 fresh 才生效,onedrive 的获取层级,默认获取两层
  level: 2

  # 自动刷新时间,单位分钟
  refresh_time: 10

  # 提供 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

  # 子文件夹设置,比如你只想挂载你盘根目录下的 public 文件夹,就使用 /public
  folder_sub: /

  # 不建议修改,需要和应用中心设置的 redirect_url 一致
  redirect_url: http://localhost:8000/auth

  # 随意设置一个你喜欢的字符串,在 onedrive 认证时会使用
  state: 23333

  # 默认在当前文件夹下,不建议修改
  # token 实现了下次启动时不需要重新登陆验证的功能
  token_path:

  # 可以配置 CDN 加速重定向,url 前缀
  download_redirect_prefix:

  # 这是一个数组,可以对不同文件夹设置密码
  # 但还是推荐在需要设置密码的文件夹下创建 .password 文件
  # 在该文件中填写密码即可,文件格式最好是 UTF-8
  pass_list:
    - pass:
      path:
  #  - pass:
  #    path:

  # 上传文件时将会进行密钥验证,验证成功才能上传成功,首次允许建议修改
  upload_secret: 123465

  # 大文件分片上传时得分片大小,默认为32MB,数字为1表示320kb
  upload_slice_size: 100


Contributors

  • 开发:
  • logo 设计:

gonelist's People

Contributors

cugxuan avatar dependabot[bot] avatar huoxue1 avatar zhangguanzhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gonelist's Issues

不能在线播放视频?

onedrive和世纪互联均尝试绑定成功,可以正常下载,
但是在线播放一直是00:00。无法播放。视频是正常的mp4没有问题

Docker 编译运行 404

执行步骤
1.clone 项目
2.修改config.json
3.修改docker-compose.yaml挂载配置文件
4.编译
5.查看日志,显示debug模式,配置文件导入成功
6.浏览器访问:显示404 page not found

缓存刷新时无法正常使用,若文件很多,则对使用影响显著

缓存刷新时无法正常使用,实测1分钟约刷新1万个文件。由于刷新间隔最大设置为60分钟(超过60分钟则刷新的链接失效),若存储海量文件,则不能使用的时间占比很明显,会影响正常的使用。如存储10万个文件,则每小时至少有1/6时间系统处于无响应状态。
请问是否可以避免这种情况?希望刷新过程中程序仍然保持正常响应。我看到release里面写到TODO优化缓存刷新方式,是否是针对这个问题?谢谢!

[Feature]手动刷新缓存

希望可以增加手动刷新缓存的按钮。一方面可以减小服务器压力,一方面可以实时看到文件更新。

0.5.3docker 配置未做任何修改,报错

我是用watchtower定期拉的 latest标签,这个0.5.2的时候不清楚是不是改过配置文件格式,当时就没法用了重新根据新的示例改了自己的配置文件,可以用了,最近自动拉了个新的latest,然后又报错了。这下看不懂为什么了。看样子我觉得是代码里请求写错了?
直接贴报错的话有个斜杠不显示,我贴图看看

1

使用docker run运行出错emmm不知道哪里命令不对

docker run -d -p 8000:8000 --name gonelist --restart=unless-stopped -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro -v /home/gonelist/config/:/etc/config/ -e token_path=/etc/config/ -e CONF_PATH=/etc/config/config.json zhangguanzhang/gonelist:latest

[Question]部署完成之后所有文件下载请求都提示:10002 未找到对应项目

onedrive版本: 国际版
gonelisrt版本: v0.5.5
linux版本: centos7
项目地址: https://record.retroxz.xyz/

部署完成后,可以正常加载列表,但无法进行文件下载。

// 20220402224809
// https://record.retroxz.xyz/d/EchoLive/%E5%89%AA%E8%BE%91%E7%89%87%E6%AE%B5-21641569-20200511-224914-%E3%80%90rabi-ribi%E3%80%91%E5%85%94%E5%A5%B3%E7%8B%BC%E5%B0%84%E5%B0%84%E5%B0%84.flv

{
  "code": 10002,
  "msg": "未找到对应项目"
}

[Feature] Multilingual support

Do you have plans to implement multiple languages? I am willing to contribute to English, Korean, French and Traditional Chinese translations.

Linux arm64版本

请问老哥release里面的Linux arm是64位版本吗?我有一台比较特殊的设备,可以运行cloudreve的Linux arm64版本,然而运行gonelist的Linux arm就提示illegal instruction。
可惜我不会编译,如果不是Linux arm64的话,下次发布可否再编译一个版本呢?|・ω・`)
如果是Linux arm64的话,我就自认倒霉(´;ω;`)

同学,您这个项目引入了39个开源组件,存在1个漏洞,辛苦升级一下

检测到 gonelist/gonelist 一共引入了39个开源组件,存在1个漏洞

漏洞标题:Gin-Gonic Gin 环境问题漏洞
缺陷组件:github.com/gin-gonic/[email protected]
漏洞编号:CVE-2020-28483
漏洞描述:Gin-Gonic Gin是Gin-Gonic团队的一个基于Go语言的用于快速构建Web应用的框架。
github.com/gin-gonic/gin 全部版本存在安全漏洞,该漏洞源于可以通过设置X-Forwarded-For头来欺骗客户端的IP。
影响范围:(∞, 1.7.7)
最小修复版本:1.7.7
缺陷组件引入路径:gonelist@->github.com/gin-gonic/[email protected]

另外还有几个漏洞,详细报告:https://mofeisec.com/jr?p=ad9eed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.