程序简介

GONEList是由编写golang+vue的基于onedrive的在线网盘,具有跨平台等特性,构造简单。本次构建使用的是系统是64 位 Ubuntu 18.04,Linux系统一般都可以兼容对应的操作。

效果展示:https://gonelist.cugxuan.cn

前端: https://github.com/Sillywa/gonelist-web

后端: https://github.com/cugxuan/gonelist-doc

文档地址: https://gonelist-doc.cugxuan.cn/

功能特性

  • 「跨平台」,兼容 Linux/Windows/MacOS 等多个平台
  • 「极速部署」,下载对应程序,修改配置即可前后端一键部署
  • 「直链下载」,文件直链下载,下载不消耗服务器流量
  • 「自动刷新」,自动刷新缓存,可自定义时间
  • 「自定义目录」,支持将 onedrive 的某个目录作为根目录
  • 「在线播放」,支持在线播放音频和视频,在线浏览图片
  • 「海量文件」,支持单目录下上千个文件,正常使用
  • 「多平台」,支持个人版、教育账号、世纪互联等
  • 「README」,支持页面添加 README
  • 「加密目录」,支持给目录加密
  • 「登陆缓存」,登陆 onedrive 之后会有缓存,下次直接启动无需登录

注:支持绝大部分教育账号,部分 教育账号 因为需要管理员同意无法使用

下载程序

Github-Release 或者 gonelist-release 中对应的包,Linux 系统下载 gonelist_linux_amd64.tar.gz,直接运行即可启动,以 Linux 系统本地启动为例:

  1. $ wget https:
  2. $ tar -zxf gonelist_linux_amd64.tar.gz && cd gonelist_linux_amd64/

如果你是更新,那么请先删除原本的压缩包。

创建 MicroSoft 应用

如果您的 整个网盘以及微软账号 里面没有任何隐私资料,可以直接使用我们的默认 client_id 和 client_secret(解压后 config.json 自带默认设置),直接跳转到 修改配置信息,否则请申请自己单独的应用来保护您的隐私安全。

(注:您可以通过 你已授予访问权限的应用和服务 来管理自己许可的应用)

打开 注册应用程序 的链接 ( 世纪互联版的点击这里 ),登陆后选择「注册应用程序」,输入「名称」,选择「任何组织目录中的账户和个人」(注意这里不要看位置选择而是看文字,部分人可能是中间那个选项,不要选成单一租户或者其他选项,否则会导致登陆时出现问题),输入重定向 URL 为 http://localhost:8000/auth,「注册」即可

file

注册好应用程序之后,选择「证书和密码」,点击「新客户端密码」,输入一串密码,选择时间为「永久」,点击「添加」:

(注:在添加之后输入的密码之后会消失,请记录下来 client_secret 的值)

file

选择「API 权限」,点击 「MicroSoft Graph」,在「选择权限」中输入 file,勾选 「Files.read」

(注:Files.read 是只读最小权限,图中权限较大,也同样可以),点击「确定」

file

在 config 中还有一项是客户端 id,在概述中记录下即可,至此我们的 client_id 和 client_secret 都已经拿到了:

file

修改配置信息

在第一步完成之后,进入到了 gonelist_linux_amd64 文件夹,在 config.json 文件中有许多可以配置的地方,建议填入自己的 client_id 以及 client_secret,folder_sub 可以设置 GONEList 的根目录是从 onedrive 的什么地方开始:

  1. {
  2. "client_id": "16e320f7-e427-4612-88da-f3d03e944d40",
  3. "client_secret": "lURpL3U@bBlmJ0:_dnU.LeLOGNGdVT30",
  4. "redirect_url": "http://localhost:8000/auth",
  5. "state": "23333",
  6. "token_path": "",
  7. "download_redirect_prefix": "",
  8. "server": {
  9. "port": 8000,
  10. "refresh_time": 10,
  11. "site_url": "http://localhost:8000",
  12. "folder_sub": "/",
  13. "dist_path": "./dist/",
  14. "bind_global": true
  15. },
  16. "china_cloud": {
  17. "enable": false,
  18. "client_id": "2b54b127-b403-42a3-8b55-d25f3119aa13",
  19. "client_secret": "a0CGqBT3f_8U5gztxKjxR-LNW-ZnTe.m"
  20. },
  21. "pass_list": [
  22. {
  23. "path": "",
  24. "pass": ""
  25. }
  26. ]
  27. }

启动和终止应用

  1. $ ./gonelist_linux_amd64
  2. $ nohup ./gonelist_linux_amd64 >nohup.log 2>&1 &
  3. $ ps -ef | grep go
  4. root 21020 20947 0 20:08 pts/3 00:00:00 ./gonelist_linux_amd64
  5. $ kill 21020

浏览器打开 http://localhost:8000 即可访问,如果你是部署在服务器,可以使用 http://yoursite:8000 访问。打开后会跳转登陆页面,授予权限:

file

如果是在本地部署,登陆成功会跳转到首页,此时已经完成部署。如果登陆后一直没有反应,可能是因为文件夹数量过多导致,建议设置「子文件夹」选项
如果是在服务器部署,登陆成功会跳转到http://localhost:8000/auth?code=xxx,将当前网址改成 http://yoursite:8000/auth?code=xxx 再回车等待文件加载后,会自动跳转你的网站 http://yoursite:8000

反向代理和 HTTPS

反向代理的意思就是把 8000 端口的内容映射到一个 host
下面这个例子就是你可以通过访问 http://gonelist.cugxuan.cn 来达到访问 http://gonelist.cugxuan.cn:8000http://cugxuan.cn:8000) 一样的效果

  1. upstream gonelist_pool {
  2. server 127.0.0.1:8000;
  3. }
  4. server {
  5. listen 80;
  6. server_name gonelist.cugxuan.cn;
  7. location / {
  8. proxy_set_header Host $host;
  9. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  10. proxy_pass http:
  11. }
  12. }

如果你的域名申请了 HTTPS 证书,可以通过 nginx 反向代理。建议将 config.json 中的 bind_global 设置为 false(作用就是不会让外部通过 http 访问),然后修改 nginx 设置,以我的 https://gonelist.cugxuan.cn,腾讯云的免费证书为例:

  1. $ cd /etc/nginx/sites-enabled
  2. $ vi gonelist.cugxuan.cn

在 nginx 配置文件中写入下面内容,然后 $ nginx 启动或 $ nginx -s reload 重启即可

  1. server {
  2. listen 80;
  3. server_name gonelist.cugxuan.cn;
  4. rewrite ^(.*) https:
  5. error_page 500 502 503 504 /50x.html;
  6. location = /50x.html {
  7. root html;
  8. }
  9. }
  10. upstream gonelist_pool {
  11. server 127.0.0.1:8000;
  12. }
  13. server {
  14. listen 443;
  15. server_name gonelist.cugxuan.cn;
  16. ssl on;
  17. ssl_certificate tecent-ssl/gonelist.cugxuan.cn/Nginx/1_gonelist.cugxuan.cn_bundle.crt;
  18. ssl_certificate_key tecent-ssl/gonelist.cugxuan.cn/Nginx/2_gonelist.cugxuan.cn.key;
  19. ssl_session_timeout 5m;
  20. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  21. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  22. ssl_prefer_server_ciphers on;
  23. location / {
  24. proxy_set_header Host $host;
  25. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  26. proxy_pass http:
  27. }
  28. }