GitHub 文件服务器部署文档

GitHub 文件服务器部署文档
雨天狂奔GitHub 文件服务器部署文档
功能概述
- 通过 GitHub API 上传文件到 GitHub 仓库或 Gist
- 提供文件直链生成功能
- 支持文件管理界面查看上传记录
- 支持删除数据库记录
- 支持删除真实文件
- 支持API调用,详见 API 文档
部署步骤
1. 准备工作
- 一个 GitHub 账号
- 一个 Cloudflare 账号
- 一个有效的 GitHub Personal Access Token (需要
gist
和repo
权限)
2. 创建 Cloudflare Worker
- 登录 Cloudflare 控制台
- 进入 “Workers & Pages” 部分
- 点击 “Create application” → “Create Worker”
- 将 此仓库
gitfiles-plus.js
中的代码全部复制粘贴到 Worker 编辑器中
3. 配置环境变量
在 Worker 的 “Settings” → “Variables” 中添加以下环境变量:
变量名 | 描述 | 示例值 |
---|---|---|
GH_TOKEN | GitHub Personal Access Token | ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
GH_DB | D1 数据库绑定名称 (可选) | DB |
RAW_DOMAIN | 私有仓库文件直链域名 (可选) | raw.yourdomain.com |
4. 初始化数据库 (可选)
如果需要使用数据库记录上传历史:
- 在 Cloudflare 控制台创建 D1 数据库
- 将数据库绑定到 Worker (GH_DB 变量)
- 首次访问 Worker 会自动创建所需表结构
5. 部署
点击 “Save and Deploy” 按钮完成部署
API 文档
上传文件
端点: POST /api/upload
参数:
- upload-type: 必填,值为 gist 或 github
- files: 必填,上传的文件(可多个)
- gist-public: 可选,值为 on 或 off,仅当 upload-type 为 gist 时有效
- existing-gist: 可选,值为已存在的 Gist ID,仅当 upload-type 为 gist 时有效
- gh-user: 可选,值为 GitHub 用户名,仅当 upload-type 为 github 时有效
- gh-repo: 可选,值为 GitHub 仓库名,仅当 upload-type 为 github 时有效
- gh-branch: 可选,值为 GitHub 分支名,仅当 upload-type 为 github 时有效
- gh-path: 可选,值为 GitHub 仓库路径,仅当 upload-type 为 github 时有效
命令示例
Gist 上传
1
2
3
4
5
6
7curl -X POST \
-H "Authorization: Bearer YOUR_GH_TOKEN" \
-F "upload-type=gist" \
-F "gist-public=on" \
-F "files=@file1.txt" \
-F "files=@file2.png" \
http://your-domain.com/api/uploadGitHub 上传
1
2
3
4
5
6
7
8
9
10curl -X POST \
-H "Authorization: Bearer YOUR_GH_TOKEN" \
-F "upload-type=github" \
-F "gh-user=your_username" \
-F "gh-repo=your_repo" \
-F "gh-branch=main" \
-F "gh-path=/subdir" \
-F "files=@file1.txt" \
-F "files=@file2.txt" \
http://your-domain.com/api/upload
响应示例(200 OK):
1 | [ |
查询文件
端点: GET /api/qry
参数:
- page=1: 分页参数(默认第 1 页)
- all_pages=true: 查询所有页
命令示例
1 | # 查询第一页 |
响应示例(200 OK):
1 | [ |
删除记录
端点: DELETE /api/rec/{ids}
参数: ids: 逗号分隔的记录 ID,如:1,2,3
命令示例:
1 | curl -X DELETE "https://your-domain.com/api/rec/1,2,3" |
响应示例(200 OK):
1 | { |
删除文件及记录
端点: DELETE /api/del/{ids}
参数: ids: 逗号分隔的记录 ID,如:1,2,3
命令示例:
1 | curl -X DELETE \ |
响应示例(200 OK):
1 | { |
前端界面
1. 主界面 (/
)
- 支持多文件上传
- 支持拖放上传
- 可选择上传到 Gist 或 GitHub
- 显示上传结果
2. 文件管理界面 (/list
)
- 显示上传历史记录
- 支持搜索和分页
- 可删除数据库记录
注意事项
- GitHub API 有速率限制,请合理使用
- 私有仓库需要配置 RAW_DOMAIN 环境变量才能生成直链
- 上传到 GitHub 仓库需要确保 Token 有对应仓库的写入权限
- 文件大小限制取决于 Cloudflare Worker 的限制 (默认约 10MB)
- 暂未添加鉴权功能,切勿用于公益访问,待后期增加 api 鉴权
常见问题
Q: 上传失败显示 “Token 无效或权限不足 “
A: 检查 GH_TOKEN 是否有正确的权限 (gist 和 repo),并确保对目标仓库有写入权限
Q: 私有仓库直链无法访问
A: 需要先部署 cmliu/CF-Workers-Raw 项目,绑定自定义域名,然后在本项目设置 RAW_DOMAIN
环境变量,指向 raw 项目绑定的自定义域名
Q: 数据库记录不显示
A: 检查是否已正确绑定 D1 数据库到 Worker,并确保 GH_DB 变量名称匹配
#cloudflare #github
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果