{"repo":"DJChanahCJD/OtterHub","free":true,"listed":false,"github":"https://github.com/DJChanahCJD/OtterHub","clone":"git clone https://github.com/DJChanahCJD/OtterHub.git","description":"基于 Cloudflare KV + Telegram Bot API 的免费私人云盘，稳定支持 100 MB 以内的文件 | A Serverless Personal Cloud Drive","language":"TypeScript","stars":150,"topics":["cloudflare","cloudflare-kv","cloudflare-pages","cloudflare-r2","telegram","telegram-bot","file-storage","free"],"license":"MIT","category":"chat-messaging","readme_excerpt":"OtterHub Stash your files like an otter 基于 Cloudflare KV + Telegram Bot API 的免费私人云盘 --- 👋 为什么有 OtterHub？ 现有基于 Cloudflare + Telegram 的文件存储方案，例如： - Telegraph-Image - CloudFlare-ImgBed 它们都很优秀，但要么偏向 图床与轻量分享 ，要么为了通用性引入了 较高的复杂度 ，并不完全适合 长期自用的私人云盘 。 OtterHub 的定位 像水獭一样，把文件悄悄藏好，需要时再拿出来 🦦 OtterHub 是一个 为个人使用场景定制 的私人云盘方案： - 基于 Cloudflare Pages + KV （最终一致性，上传后存在短暂同步延迟） - 使用 Telegram Bot 作为实际文件存储（本地开发使用 R2） - 通过 分片上传 突破 20MB 单文件限制 - 支持 HTTP Range ，适合视频 / 大文件访问 - 架构克制、状态最小化，优先长期可维护性 它不追求\"什么都支持\"，而是专注于 刚好够用、稳定、好维护 。 [!IMPORTANT] 体验站点：OtterHub Demo 账号： OtterHub 密码： 123456 限制：演示站的默认文件不可删，仅支持上传 ≤20MB 文件（1 小时自动清理） ✨ 核心能力 - 私人文件存储 ： - 支持图片 / 音频 / 视频 / 文档 - KV Key 按类型划分前缀 img: audio: video: doc: ，提升查询效率 - 提供回收站功能（30天后自动清除），支持恢复和永久删除 - 大文件支持 ： - 分片上传（≤20MB/片），已实测稳定上传并预览 100MB 文件，理论最大 1GB - 支持 HTTP Range，视频/音频按需加载，支持断点续传 - 实时预览 ： - 通过文件 URL 直接打开，无需下载 - 支持：图片 / 音频 / 视频 / 文本（txt、pdf 等） - 可控性能与流量 ： - 非 Range 请求走 Cloudflare Cache，Range 请求直出避免缓存污染 - 图片加载策略：默认 / 省流（ 5MB 不加载）/ 无图 - 安全与私密 ： - 密码登录（基于 JWT + Cookie） - NSFW 图片客户端检测（nsfw.js），安全模式下自动遮罩 - 基础管理功能 ：批量下载 / 删除，搜索 / 收藏 / 排序 / 标签 - Telegram 频道上传 ：频道 / 群内发送 ≤20MB 文件后自动注册到 OtterHub，并可回复直链 - AI 图片分析 ：网页端上传图片后可自动生成简要描述，便于图片检索（需配置 Workers AI binding，可在设置页关闭） --- 🚀 快速开始 前置要求 - Node.js 18+ - Cloudflare 账号（免费，部署需要） - Telegram Bot Token（生产默认存储需要；本地开发默认不需要） 本地开发 1. 安装依赖 2. 启动项目 第一次启动需要构建前端 npm run build （生成 frontend/out 供 Wrangler Pages Dev 使用），后续启动直接 npm run dev 即可。 3. 访问网站 - 前端： http://localhost:3000 - 后端： http://localhost:8788 (由 Wrangler 代理) [!TIP] 开发环境下密码为","default_branch":null,"files":null,"tree":[],"storefront":"/r/DJChanahCJD","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/DJChanahCJD/OtterHub/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}