{"id":18018897,"url":"https://github.com/0-rtt/telegraph","last_synced_at":"2025-05-15T03:04:58.547Z","repository":{"id":229912409,"uuid":"776622024","full_name":"0-RTT/telegraph","owner":"0-RTT","description":"基于 Cloudflare Worker 和 Pages 的图床/视频床/文件床，轻松实现无服务器部署！","archived":false,"fork":false,"pushed_at":"2025-04-11T06:32:39.000Z","size":244,"stargazers_count":792,"open_issues_count":2,"forks_count":310,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-14T01:54:39.634Z","etag":null,"topics":["cloudflare","cloudflare-workers","image","serverless","telegraph","workers"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0-RTT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-24T02:21:07.000Z","updated_at":"2025-04-13T08:57:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"ae44af92-f839-466a-975a-61d90f53356a","html_url":"https://github.com/0-RTT/telegraph","commit_stats":{"total_commits":95,"total_committers":2,"mean_commits":47.5,"dds":"0.010526315789473717","last_synced_commit":"c8bf3bd2d61ecbab5888813f24bb88413d591ddc"},"previous_names":["0-rtt/telegraph"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0-RTT%2Ftelegraph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0-RTT%2Ftelegraph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0-RTT%2Ftelegraph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0-RTT%2Ftelegraph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0-RTT","download_url":"https://codeload.github.com/0-RTT/telegraph/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248809032,"owners_count":21164895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare","cloudflare-workers","image","serverless","telegraph","workers"],"created_at":"2024-10-30T05:06:40.686Z","updated_at":"2025-04-14T01:54:43.998Z","avatar_url":"https://github.com/0-RTT.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"🎉基于R2储存的图床/视频床/文件床项目已完成，欢迎部署测试👉[JSimages](https://github.com/0-RTT/JSimages)\n\n# 介绍\n基于 Cloudflare Worker 和 Pages 以及TG_BOT的图床/视频床/文件床服务\n\n## 功能特点\n\n- 可选的访客验证功能\n- 可选的图片压缩功能（默认开启）\n- 可选的文件大小限制（默认20MB）\n- 支持查看本地历史记录\n- 支持所有文件格式上传\n- 支持多文件上传和粘贴上传\n- 支持批量操作和显示上传时间\n- Cloudflare Cache API 缓存支持\n- 基于 Telegram Bot API 的文件存储\n\n## 更新日志\n\n\u003e **最近更新**: 2024-12-18\n\u003e - 更新管理界面样式\n\u003e - 移除前端的文件类型和文件大小限制\n\u003e - 通过环境变量控制上传文件的大小\n\n\u003cdetails\u003e\n\u003csummary\u003e历史更新记录\u003c/summary\u003e\n\n### 2024-12-18\n- 更新管理界面样式\n- 移除前端的文件类型和文件大小限制\n- 通过环境变量控制上传文件的大小\n\n### 2024-12-17\n- 在前端新增一个压缩按钮，用于控制压缩功能，默认状态为开启。\n\n### 2024-12-13\n- 通过哈希校验来避免重复上传。\n- 调整压缩率为0.75，同时去除分辨率限制。\n- 给删除接口 `/delete-images` 添加了认证检查。\n\n### 2024-11-29\n#### 管理页面\n- 新增全选和复制功能\n- 删除前进行二次确认\n- 优化资源加载逻辑\n- 禁用视频文件自动播放\n#### 首页\n- 修复粘贴上传时不显示移除按钮的问题\n\n### 2024-11-21日\n- 优化上传体验，默认开启压缩，加快文件上传速度\n  - 如需关闭，请将代码的238行修改为```enableCompression: false```\n\n### 2024-11-01\n- 修复上传后无法加载的问题\n\n### 2024-10-19\n- 修复webp无法上传的BUG\n- 优化数据库结构，[查看迁移教程](https://github.com/0-RTT/telegraph/releases/tag/v2.0)\n\n### 2024-09-29\n- 优化缓存功能，采用 Cloudflare Cache API 缓存支持\n\n### 2024-09-25\n- 修复GIF文件上传的问题，感谢 [nodeseek](https://www.nodeseek.com/) 用户 [@Libs](https://www.nodeseek.com/space/7214#/general) 提供的思路\n- Telegraph接口移到了telegraph分支，main分支为TG_BOT接口，可以通过直接fork仓库部署到pages\n\n### 2024-09-23\n- 修复链接失效的问题，支持视频文件上传\n\n### 2024-09-14\n- Telegraph接口上传的文件有**时效性**，建议使用TG_BOT上传\n\n### 2024-09-13\n- 支持通过TG_BOT上传到频道\n\n### 2024-09-12\n- 已修复，可正常上传到telegraph\n\n### 2024-09-06\n\u003e ~~2024年9月6日起 telegra.ph 禁止了上传媒体文件，此项目终结。~~\n\n\u003c/details\u003e\n\n## 部署步骤\n\n### 1. 变量说明\n需要在 Cloudflare Workers 中配置以下环境变量:\n\n| 变量名 | 说明 | 必填 | 示例 |\n|--------|------|------|------|\n| DOMAIN | 自定义域名 | 是 | example.workers.dev |\n| DATABASE | D1 数据库绑定变量名称 | 是 | DATABASE |\n| TG_BOT_TOKEN | Telegram Bot Token | 是 | 123456789:ABCdefGHIjklMNOpqrsTUVwxyz |\n| TG_CHAT_ID | Telegram 频道/群组 ID | 是 | -100xxxxxxxxxx |\n| USERNAME | 管理员用户名 | 是 | admin |\n| PASSWORD | 管理员密码 | 是 | password123 |\n| ADMIN_PATH | 管理后台路径 | 是 | admin |\n| ENABLE_AUTH | 访客验证（设置为 true 开启，不设置或设置为 false 则关闭） | 否 | false |\n| MAX_SIZE_MB | 单文件最大支持大小（单位：MB，默认值为 20） | 否 | 20 |\n\n### 2. 创建 Telegram Bot\n1. 在 Telegram 中找到 [@BotFather](https://t.me/BotFather)\n2. 发送 `/newbot` 命令创建新机器人\n3. 按照提示设置机器人名和用户名\n4. 保存获得的 Bot Token (格式为`123456789:ABCdefGHIjklMNOpqrsTUVwxyz`)\n   - 这个 Token 将用作环境变量 `TG_BOT_TOKEN`\n\n### 3. 创建 Telegram 频道或群组\n1. 创建一个新的频道或群组\n2. 将你的 Bot 添加为管理员\n3. 获取频道/群组 ID：\n   - 发送频道内的任意消息给 [@getidsbot](https://t.me/getidsbot)\n   - 在 Origin chat 下找到对应的 ID (格式为 `-100xxxxxxxxxx`)\n   - 这个 ID 将用作环境变量 `TG_CHAT_ID`\n\n### 4. 创建 D1 数据库\n1. 登录 [Cloudflare Dashboard](https://dash.cloudflare.com)\n2. 进入 `Workers \u0026 Pages` → `D1 SQL 数据库`\n3. 点击 `创建` 创建数据库\n   - 数据库名称可自定义，例如`images`\n   - 建议选择数据库位置为 `亚太地区`，可以获得更好的访问速度\n4. 创建数据表:\n   - 点击数据库名称进入详情页\n   - 选择 `控制台` 标签\n   - 执行下 SQL 语句:\n```sql\nCREATE TABLE media (\n    url TEXT PRIMARY KEY,\n    fileId TEXT NOT NULL\n);\n```\n\n### 5. 创建 Worker\n1. 进入 `Workers \u0026 Pages`\n2. 点击 `创建`\n3. 选择 `创建 Worker`\n4. 为 Worker 设置一个名称\n5. 点击 `部署` 创建 Worker\n6. 点击继续处理项目\n\n### 6. 配置变量和机密\n1. 在 Worker 的 `设置` → `变量和机密` 中\n2. 根据需要逐个点击 `添加` 添加以下变量\n   - DOMAIN\n   - TG_BOT_TOKEN\n   - TG_CHAT_ID\n   - USERNAME\n   - PASSWORD\n   - ADMIN_PATH\n   - ENABLE_AUTH（可选）\n   - MAX_SIZE_MB（可选）\n3. 点击 `部署`\n\n### 7. 绑定数据库\n1. 在 Worker 设置页面找到 `设置` → `绑定`\n2. 点击 `添加` 添加以下变量名称\n   - DATABASE\n3. 点击 `部署`\n\n### 8. 绑定域名\n1. 在 Worker 的 `设置` → `域和路由`\n2. 点击 `添加` → `自定义域`\n3. 输入你在Cloudflare绑定的域名\n4. 点击 `添加域`\n5. 等待域名生效\n\n### 9. 部署代码\n1. 进入你的worker项目 → 点击编辑代码\n2. 将 `_worker.js` 的完整代码复制粘贴到编辑器中\n3. 点击 `部署`\n\n## 部署步骤参考：\n\n\u003e ⚠️ 以下图片里的仅供参考，Cloudflare 面板可能会更新，具体操作请以上方文字教程为准。\n\n\u003e 💡另外可以参考 nodeseek用户@sdo888的[图文教程](https://www.nodeseek.com/post-196832-1)\n\n### Worker 部署示例\n\n#### 1、初始化数据库\n![image](https://kycloud3.koyoo.cn/20241007ae0fa202410070917194587.png)  \n\n![image](https://kycloud3.koyoo.cn/202410074b824202410070851275140.png)  \n \n![image](https://kycloud3.koyoo.cn/20241007917fa202410070852019143.png)  \n \n![image](https://kycloud3.koyoo.cn/20240829426e2202408291111415611.png)  \n\n![image](https://kycloud3.koyoo.cn/202408290028f20240829111205448.png)  \n\n#### 2、创建worker\n![image](https://kycloud3.koyoo.cn/202408295c74a202408291112222566.png)\n\n![image](https://kycloud3.koyoo.cn/20240829b4a21202408291118209822.png)\n\n#### 3、设置自定义域名\n![image](https://kycloud3.koyoo.cn/20240829d5fe4202408291113048235.png)\n\n![image](https://kycloud3.koyoo.cn/20240829f9ecc202408291113197734.png)\n\n![image](https://kycloud3.koyoo.cn/2024082997a84202408291113394516.png)\n\n![image](https://kycloud3.koyoo.cn/202408294223e202408291114234528.png)\n\n![image](https://kycloud3.koyoo.cn/202408294def5202408291113564340.png)\n\n#### 4、设置变量\n![image](https://kycloud3.koyoo.cn/2024092389dc0202409232021524424.png) \n\n#### 5、将_worker.js中的代码复制粘贴到编辑器中\n![image](https://kycloud3.koyoo.cn/202408299f1cf202408291115372291.png)\n\n![image](https://kycloud3.koyoo.cn/2024082995808202408291115555979.png)\n\n#### 6、点击部署即可\n![image](https://kycloud3.koyoo.cn/20240829a4d5f202408291117024227.png)\n\n## Pages部署教程：\n\n#### 1、初始化数据库\n![image](https://kycloud3.koyoo.cn/20241007ae0fa202410070917194587.png)  \n\n![image](https://kycloud3.koyoo.cn/202410074b824202410070851275140.png)  \n \n![image](https://kycloud3.koyoo.cn/20241007917fa202410070852019143.png)  \n \n![image](https://kycloud3.koyoo.cn/20240829426e2202408291111415611.png)  \n\n![image](https://kycloud3.koyoo.cn/202408290028f20240829111205448.png)  \n\n#### 2、部署到pages\n\n![image](https://kycloud3.koyoo.cn/20241007f786a202410070857578208.png)\n\n- 2.1 下载_worker.js，打包成zip上传到pages\n\n![image](https://kycloud3.koyoo.cn/2024100790232202410070900405992.png)\n\n- 2.2 通过fork本仓库部署到pages\n![image](https://kycloud3.koyoo.cn/20241007d7bf6202410070902287155.png)\n![image](https://kycloud3.koyoo.cn/20241007a4b2f202410070902288891.png)\n\n#### 3、设置变量\n![image](https://kycloud3.koyoo.cn/2024092389dc0202409232021524424.png) \n\n#### 4、设置自定义域名。\n![image](https://kycloud3.koyoo.cn/202409068f76a202409061718122696.png)  \n\n![image](https://kycloud3.koyoo.cn/20240906b79a6202409061719043430.png)  \n\n![image](https://kycloud3.koyoo.cn/20240906188f8202409061720032928.png)  \n\n#### 5、重新部署生效刚刚配置的自定义域名和变量\n\n![image](https://kycloud3.koyoo.cn/202409066761e202409061721281588.png)  \n\n![image](https://kycloud3.koyoo.cn/2024090677f2320240906172317323.png)  \n\n![image](https://kycloud3.koyoo.cn/202409065c29920240906172451915.png)  \n\n## 开源协议\n\nMIT License\n\n## 💰赞助商\n\n- [NodeSupport](https://github.com/NodeSeekDev/NodeSupport)\n- [![yxvm_support.png](https://kycloud3.koyoo.cn/20250411e0a01202504111413152588.png)](https://yxvm.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0-rtt%2Ftelegraph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0-rtt%2Ftelegraph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0-rtt%2Ftelegraph/lists"}