基于 CloudFlare Pages 的开源文件托管解决方案(图床/文件床/网盘)

2025-04-25 13 0

一、概述

免费文件托管解决方案,具有上传、管理、读取、删除等全链路功能,覆盖文件全生命周期,支持鉴权、目录、图片审查、随机图等各项特性。 image.png

二、功能介绍

覆盖大多数文件格式:支持绝大多数常见图片、视频、动图等,同时也支持其他大多数格式的文件

支持多种存储渠道:支持 Telegram Bot, Cloudflare R2, S3 等多种存储渠道一键切换

Telegram Bot渠道:上传文件大小限制为20MB,提供客户端和服务端压缩功能

Cloudflare R2渠道:上传大小不限,但超过免费额度会扣费,详见Pricing | Cloudflare R2 docs

上传方式多样:支持多种上传方式(拖拽点击、粘贴)(Web/API)

  • 粘贴上传支持文件和URL
  • 支持批量上传(不限同时选择文件数量,但为了保证稳定性,同时处于上传状态的文件最多为10个)
  • 上传显示实时上传进度
  • Web和API端上传图片,均可直接展示在管理页面中
  • 过大图片在前端进行压缩,提升上传稳定性和加载性能;支持自定义压缩质量,自定义开启前后端压缩功能
  • 支持指定上传目录

多样化复制

支持整体复制和单独复制(整体复制即将所有链接通过换行串联起来后复制)

  • 支持MarkDown、HTML、BBCode和原始链接四种格式复制
  • 上传完成后直观展示四种格式链接
  • 支持设置自定义链接前缀,便于接入三方CDN服务

支持身份认证、防滥用

  • 支持Web和API上传认证(感谢hl128k)
  • 支持访问域名限制(感谢hl128k)
  • 支持上传IP统计,支持禁止指定IP上传
  • 支持页面自定义

背景自定义

  • 页面背景支持单图、自定义多图轮播、bing随机图轮播等多种模式
    • 背景透明度、切换时间支持自定义

网站信息自定义

  • 自定义图床名称和Logo
  • 自定义网站标题和Icon
  • 页脚传送门自定义
  • 支持页脚隐藏

以及原版所有特性

1.无限图片储存数量,你可以上传不限数量的图片

2.无需购买服务器,托管于 Cloudflare 的网络上,当使用量不超过 Cloudflare 的免费额度时,完全免费

3.无需购买域名,可以使用 Cloudflare Pages 提供的*.pages.dev的免费二级域名,同时也支持绑定自定义域名

4.支持图片审查 API,可根据需要开启,开启后不良图片将自动屏蔽,不再加载

5.支持后台图片管理,可以对上传的图片进行在线预览,添加白名单,黑名单等操作

三、部署

注意修改完环境变量,重新部署才能生效,见3.1章最后一节;版本更新方式,也请见3.1章最后一节

3.1.1前期准备

根据所需开通的渠道进行以下准备 开通Telegram Bot渠道:Telegram的TG_BOT_TOKEN和TG_CHAT_ID

TG_BOT_TOKEN和TG_CHAT_ID的获取方式 开通Cloudflare R2渠道:新建一个Cloudflare R2存储桶,前提是需要绑定支付方式。

Cloudflare R2渠道开通方式 S3 API渠道:在服务提供商处,准备S3_ACCESS_KEY_ID、S3_SECRET_ACCESS_KEY、S3_BUCKET_NAME、S3_ENDPOINT等必须参数。(常见服务提供商密钥获取教程参见:CloudFlare-ImgBed常用S3存储配置教程 – yunsen2025的小窝)

3.1.2部署教程(第一种方法)

根据自己需求部署在CloudFlare或服务器上,需准备一个Cloudflare账户,然后按照以下步骤即可完成部署。

  1. Fork 本仓库

  2. 打开 Cloudflare Dashboard,进入 Pages 管理页面,选择创建项目,选择连接到 Git 提供程序 image.png

3.按照页面提示输入项目名称,选择需要连接的 git 仓库,点击开始设置

  1. 填写项目名称,构建命令填写npm install,点击保存并部署 image.png

  2. 绑定KV数据库:创建一个新的KV数据库 image.png


image.png

进入项目对应设置->绑定->添加->KV 命名空间->变量名称,填写img_url,KV命名空间选择刚才创建好的KV数据库

  1. 重试部署:前往项目管理界面->部署->最新一次部署后面的···->重试部署

  2. 根据所需存储渠道进行相关设置:

Cloudflare R2渠道:

将前面新建的存储桶绑定到项目(和KV绑定地方一样),名称为img_r2 image.png 若要启用 R2 渠道的图像审查,请进入 项目管理页面->系统设置->上传设置 处设置 R2 的公开访问链接,值为前面记下的R2存储桶公网访问链接

其他渠道:进入项目管理页面https://你的域名/systemConfig#upload,按照页面提示将3.1中获取的渠道参数填写到对应渠道中,保存设置即可

3.1.2.2部署于服务器(第二种方法)

如果Cloudflare的有限访问次数不能满足你的需求,并且你拥有自己的服务器,可以参照3.1.2.2节的教程在服务器上模拟Cloudflare的环境,并开放对应的端口访问服务。

注意由于服务器操作系统、硬件版本复杂多样,相关教程无法确保适合每一位用户,遇到报错请尽量利用搜索引擎解决,无法解决也可以提issue寻求帮助。

  1. 安装服务器操作系统对应的node.js,经测试v22.5.1版本可以正常使用。(安装教程自行search)

  2. 切换到项目根目录,运行npm install,安装所需依赖。

  3. 在项目根目录下新建wrangler.toml配置文件,其内容为项目名称,环境变量等。(详情参见官方文档Configuration - Wrangler (cloudflare.com)) 配置文件样例:

    name = "cloudflare-imgbed"
    compatibility_date = "2024-07-24"
  4. 在项目根目录下运行npm run start,至此,正常情况下项目已经成功部署。项目默认支持通过服务器本地模拟的R2存储上传,可通过管理端系统设置页面进行其他设置。程序默认运行在8080端口上,使用nginx等服务器反代127.0.0.1:8080即可外网访问服务。如需修改端口,可在package.json中修改start脚本的port参数(如下)。

    "scripts": {
    "ci-test": "concurrently --kill-others \"npm start\" \"wait-on http://localhost:8080 && mocha\"",
    "test": "mocha",
    "start": "npx wrangler pages dev ./ --kv \"img_url\" --r2 \"img_r2\" --port 8080 --persist-to ./data"
    }

正常启动,控制台输出如下:

image.png

四、界面演示

image.png image.png image.png

相关文章

LibreTV – 免费在线视频搜索与观看平台
搭建RustDesk中继服务器 打造自己专属远程桌面协助工具
解决独角数卡安装的时候出现HTTPS-ERROR

发布评论