Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
基于 Cloudflare 的 Serverless 聚合云盘。以 Telegram 为核心(支持 Webhook 直传与 2GB 扩展),并全面兼容 R2、S3、Discord 及 HuggingFace 等多存储后端。零成本构建你的全能私有数据金库。
| Date | Stars |
|---|---|
| 2026-07-31 | 718 |
| 2026-08-01 | 719 |
| 2026-08-02 | 722 |
| 2026-08-03 | 725 |
| 2026-08-04 | 725 |
| 2026-08-05 | 723 |
| 2026-08-06 | 723 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
<div align="center">
<img src="logo.png" alt="K-Vault Logo" width="140">
# K-Vault
> 免费图片/文件托管解决方案,支持 Cloudflare Pages + Docker 双模部署,并兼容多种存储后端
[English](README-EN.md) | **中文**
<br>



</div>
---
## 效果图
<p align="center">
<img src="demo/登录页面.webp" alt="登录页面" width="300" />
<img src="demo/首页上传页面.webp" alt="首页上传页面" width="300" />
<img src="demo/后台管理页面.webp" alt="后台管理页面" width="300" />
</p>
<p align="center">
<img src="demo/图片浏览页面.webp" alt="图片浏览页面" width="300" />
<img src="demo/WebDAV页面.webp" alt="WebDAV页面" width="300" />
</p>
## 功能特性
- **无限存储** - 不限数量的图片和文件上传
- **完全免费** - 托管于 Cloudflare,免费额度内零成本
- **免费域名** - 使用 `*.pages.dev` 二级域名,也支持自定义域名
- **多存储后端** - 支持 Telegram、Cloudflare R2、S3 兼容存储、Discord、HuggingFace、WebDAV、GitHub
- **Telegram Webhook 回链** - 机器人在频道/群接收文件后自动回复直链
- **KV 写入优化** - Telegram 可启用签名直链,显著降低 KV 读写消耗
- **内容审核** - 可选的图片审核 API,自动屏蔽不良内容
- **多格式支持** - 图片、视频、音频、文档、压缩包等
- **在线预览** - 支持图片、视频、音频、文档(pdf、docx、txt)格式的预览
- **分片上传** - 支持最大 100MB 文件(建议配合 R2/S3/WebDAV/GitHub,Telegram 网页上传按平台限制处理)
- **访客上传** - 可选的访客上传功能,支持文件大小和每日次数限制
- **API Token 认证** - 支持 `curl` / ShareX / 脚本等程序化上传与调用
- **多种视图** - 网格、列表、瀑布流多种管理界面
- **存储分类** - 直观区分不同存储后端的文件
- **双模部署** - 保留 Cloudflare Pages 部署,同时新增 Docker 自托管(`docker compose up -d`)
- **动态存储配置管理** - 支持在管理端通过 API 对存储配置进行新增/编辑/删除/测试/设为默认
- **可插拔设置存储(Docker)** - 基础站点设置可使用 `sqlite`(默认)或 Redis 协议后端(Upstash / Redis / KVrocks)
- **前端路径简化** - 以根路径页面为主流程(`/`、`/admin.html`、`/webdav.html`)
- **GitHub Actions 镜像构建** - 主分支/Tag 自动构建并推送单镜像 `ghcr.io/katelya77/k-vault`
---
## 部署方式
K-Vault 只保留两类正式部署方式:
1. **Cloudflare Pages 部署**:使用 Cloudflare Pages 静态页面 + Pages Functions,适合免费额度、边缘函数、Cloudflare KV/R2 场景。
2. **Docker 部署**:使用单镜像 `ghcr.io/katelya77/k-vault:latest`,适合 VPS/NAS/内网部署,也适合 WebDAV、S3、GitHub、HuggingFace 等多存储后端长期自托管。
两种部署方式使用同一套根目录页面和同一组主入口:
- 上传首页:`/`
- 管理后台:`/admin.html`
- WebDAV 页面:`/webdav.html`
- 管理/API 接口:`/api/*`
- 普通上传:`POST /upload`
- API Token 上传:`/api/v1/upload`
- 文件直链/分享:`/file/*`、`/share/*`、`/s/*`
Docker 版本由 Nginx 在容器内代理到 Node API,对外仍是一个端口,因此用户看到的 UI、管理后台、WebDAV 页面、API Token 上传和多存储配置流程应与 Cloudflare Pages 部署保持一致。
### 方式一:Cloudflare Pages 部署
适合想使用 Cloudflare 免费托管、KV、R2 和 Pages Functions 的用户。
1. **Fork 本仓库**
2. **创建 Pages 项目(推荐 Git 集成)**
- 登录 [Cloudflare Dashboard](https://dash.cloudflare.com)
- 进入 `Workers 和 Pages` → `创建应用程序` → `Pages` → `连接到 Git`
- 选择 Fork 的仓库
- 构建设置按下面填写:
| 项目 | 值 |
| :--- | :--- |
| Framework preset | `None` / 不使用预设 |
| Root directory | 留空(仓库根目录) |
| Install command | 留空 |
| Build command | 留空 |
| Build output directory | 留空 |
| Deploy command | 留空 |
> 不要在 Pages Git 集成里填写 `npx wrangler deploy`。这是 Workers 部署命令,不是 Pages 部署命令;填错会出现 `The detected framework ("Hono") cannot be automatically configured` 一类错误。
> 本项目的 Cloudflare Pages 入口就是仓库根目录静态页面(`/`、`/admin.html`、`/webdav.html`)加 `functions/`。不要填写 `npm run build` 或 `frontend/dist`,否则会偏离当前根目录 UI 部署方式。
3. **绑定 KV(图片管理、分片任务、基础配置必需)**
- 进入 Cloudflare Dashboard → `Workers 和 Pages` → `KV`
- 创建命名空间,例如 `k-vault`
- 回到 Pages 项目 → `设置` → `函数` → `KV 命名空间绑定`
- 变量名必须填 `img_url`
4. **配置至少一个存储后端**
- 进入项目 `设置` → `环境变量`
- 先选择一个默认存储后端。Telegram 示例:
| 变量名 | 说明 | 必需 |
| :--- | :--- | :---: |
| `TG_Bot_Token` | Telegram Bot Token | ✅ |
| `TG_Chat_ID` | Telegram 频道 ID | ✅ |
| `BASIC_USER` | 管理后台用户名 | 可选 |
| `BASIC_PASS` | 管理后台密码 | 可选 |
也可以使用 R2、S3、Discord、HuggingFace、WebDAV、GitHub 等后端。对应变量见下方“存储配置”章节;改完环境变量后必须重新部署。
5. **重新部署**
- 修改环境变量或绑定后必须重新部署,运行中的部署不会自动读取新配置。
- 访问 `/api/status`,确认 `telegram`、`kv`、`r2` 等状态是否符合预期。
**可选:Wrangler Direct Upload**
如果你不使用 Git 集成,而是想从本地直接上传当前仓库根目录:
```bash
npm run pages:deploy -- --project-name <你的 Pages 项目名>
```
等价于执行 `npx wrangler pages deploy .`,直接上传仓库根目录。不要把 Direct Upload 项目和 Git 集成项目混用;CExcerpt of 26,345 characters
Read on GitHub123
Would you bet a product on this? Bounded 0–100 and slow moving.
Not classified yet. Classification runs as part of npm run ingest.