之前博客已经跑在一台安卓手机上了。既然这台手机本来就 24 小时在线,那干脆再给它加一个更实用的功能:私人学习资料网盘。
现在入口是:
主要用来放课程 PPT、教材 PDF、作业资料、考试复习文档,还有一些平时从桌面和聊天记录里扒出来的学习文件。它不是公开资源站,更像是给自己准备的长期资料仓库。
架构
整体结构很简单:
| |
手机本地跑 Alist,资料实际存在 /sdcard/StudyArchive。外部访问不直接暴露手机端口,而是通过 Cloudflare Tunnel 转发到公网域名。
这样做的好处是:
- 不需要公网 IP
- 不需要在路由器上开端口
- 手机只主动连 Cloudflare
- 网盘地址稳定
- 和博客一样都挂在自己的域名下面
安全
这个网盘没有裸奔。
外层用了 Cloudflare Access,访问 drive.september.win 时会先要求邮箱验证码。通过之后才会进入 Alist 自己的登录页。
也就是说现在是两层:
| |
Alist 的游客访问也关掉了,游客按钮也从页面里隐藏了。文件接口未登录时会返回 401。
这点很重要,因为学习资料虽然不是什么商业机密,但里面可能混着作业、论文、准考证、课程名单之类的东西,不能随便暴露在公网。
资料整理
这次顺手把电脑里的学习资料整理了一遍。
大致扫了这些地方:
| |
最后手动整理成几个分类:
| |
最后传到手机上一共大约 1.1GB,230 个文件。
网页外观
Alist 默认界面有点朴素,所以换了一套社区美化主题,又稍微改了一下:
- 背景图使用博客同款背景
- favicon 和头像使用博客头像
- 左上角改成
September Archive - 加了一个上传入口
- 友链页面也挂上了网盘入口
现在它看起来更像博客的一部分,而不是一个突兀的单独服务。
上传方式
目前上传有两种方式。
一种是直接登录网页,在网盘里上传文件。
另一种是本地先整理好文件夹,然后打包传到手机,再解压到:
| |
这次大批量传输的时候,普通 scp 走 Cloudflare SSH 隧道太慢,所以最后用了临时下载隧道:电脑开一个本地 HTTP 服务,再用 Cloudflare quick tunnel 暴露给手机下载。下载完成后校验 SHA256,再在手机端解压。
虽然过程有点绕,但对大文件比一堆小文件逐个 scp 稳得多。
为什么不用现成网盘
不是不能用 OneDrive、百度网盘、阿里云盘这些服务,只是它们不太像“自己的资料库”。
我想要的是:
- 域名是自己的
- 文件放在哪里自己知道
- 目录结构自己控制
- 上传下载没有额外客户端绑架
- 可以和博客、服务器、自动化脚本继续联动
这也是自建服务最有意思的地方:它不一定更省事,但更可控。
后续计划
后面还可以继续加几件事:
- WebDAV,同步 Obsidian 或 Zotero
- 自动备份到另一台电脑或对象存储
- 给 PDF 和文档做全文搜索
- 做一个学习资料索引页
- 按课程自动生成目录
- 给重要资料加冷备份
目前第一版已经够用了。旧手机继续发光发热,博客和网盘都跑在上面,也算是一个小型个人资料中心了。