在网上看到别人博客的图片加载飞快,知道是图床的功劳后,自己也想搞一个。但服务器贵,免费图床又怕跑路,限制还多。其实,利用 Cloudflare 就能白嫖一个无限图床。今天我们就来动手试试,看下效果到底如何!
一、优点
· 无限图片储存数量,你可以上传不限数量的图片
· 无需购买服务器,托管于 Cloudflare 的网络上,当使用量不超过 Cloudflare 的免费额度时,完全免费
· 无需购买域名,可以使用 Cloudflare Pages 提供的 *.pages.dev 的免费二级域名,同时也支持绑定自定义域名
· 支持图片审查 API,可根据需要开启,开启后不良图片将自动屏蔽,不再加载
· 支持后台图片管理,日志管理,查看访问前 20 的 Referer、IP、img,可以对上传的图片进行在线预览,添加白名单,黑名单等操作
二、利用 Cloudflare Pages 部署
- 打开上方Telegraph-Image项目链接,点击 Use this template 按钮创建一个新的代码库(Fork 到自己的 GitHub)。
- 登录到 Cloudflare 控制台。
- 在左侧菜单栏中,选择 计算 -> Workers 和 Pages,点击 创建项目 -> 连接到 Git,选择你刚才创建的存储库。
- 在 设置构建和部署 部分中:
· 项目名称:填入你喜欢的名字(例如 photo,后续将部署到 photo-xxx.pages.dev)。
· 生产分支:选 main。
· 构建设置:框架预设 选择 Next.js 即可(构建命令和输出目录会自动填充,无需手动修改)。 - 点击 保存并部署。
三、设置环境变量 & 开启图片管理功能
· 创建 D1 数据库:在 Cloudflare 左侧菜单找到 存储和数据库 -> D1 SQL 数据库,创建一个新的数据库。
· 执行 SQL 命令创建表(在控制台输入框粘贴下面语句执行即可,两条命令分别单独执行):
CREATE TABLE IF NOT EXISTS tgimglog (
`id` INTEGER PRIMARY KEY NOT NULL,
`url` VARCHAR(255),
`referer` VARCHAR(255),
`ip` VARCHAR(255),
`time` TEXT
);
CREATE TABLE IF NOT EXISTS imginfo (
`id` INTEGER PRIMARY KEY NOT NULL,
`url` VARCHAR(255),
`referer` VARCHAR(255),
`ip` VARCHAR(255),
`rating` VARCHAR(255),
`total` INTEGER,
`time` TEXT
);
· 设置兼容性标志:前往后台依次点击 设置 -> 函数 -> 兼容性标志 -> 配置生产兼容性标志。
· 填写 nodejs_compat。
· 前往后台点击 部署,找到最新的一次部署点 重试部署。
四、环境变量
前往项目后台的 设置 -> 环境变量,根据需求添加以下变量:
变量名称 说明 类型
PROXYALLIMG 反向代理所有图片(默认为 false) boolean
BASIC_USER 后台管理页面登录用户名称 string
BASIC_PASS 后台管理页面登录用户密码 string
ENABLE_AUTH_API 是否开启访客验证(默认为 false) boolean
REGULAR_USER 普通用户(访客验证) string
REGULAR_PASS 普通用户密码 string
ModerateContentApiKey 审查图像内容的 API key string
RATINGAPI 自建的鉴黄 api string
CUSTOM_DOMAIN 自定义加速域名 string
TG_BOT_TOKEN 123468:AAxxxGKrn5(从 @BotFather 获取) string
TG_CHAT_ID -1234567(频道的 ID,TG Bot 要是该频道或群组的管理员) string
五、TG_BOT_TOKEN 和 TG_CHAT_ID 获取
· TG_BOT_TOKEN:获取 ID 机器人 @VersaToolsBot。
· TG_CHAT_ID:为目标对话的唯一标 ID 或目标频道的用户名(eg: @channelusername)。当目标对话为个人或私有频道时只能是 ID,当为公开频道或群组时可以为目标频道的用户名(eg: @channelusername)。
六、最后
至此,一个免费的图床就搭好了。速度嘛,晚高峰也还行,至少比自己买小水管服务器舒服。
