telegraph-Image:搭建你的专属开源图床

telegraph-Image:搭建你的专属开源图床

点击标题即可打开Github源项目链接

Demo

https://img.lianli.us.kg

账号:blog123

密码:blog123


介绍

图床是一个在互联网上储存图片的空间,图床的人通常都是一些在网上分享博客的人,使用图床的人通常采用Markdown的方式去编辑文字。目前有许多获得图床的途径非常多,通常分为收费的和免费的。
该文章讲述通过 Telegraph-Image 与赛博菩萨Cloudflare提供的 Pages、D1等,搭建一个专属于你自己的开源图床!


优点

  • 无限图片储存数量,你可以上传不限数量的图片,but,单张图片不能超过5MB
  • 无需服务器,托管于Cloudflare的网络上,当使用量不超过Cloudflare的免费额度时,完全免费
  • 无需域名,可以使用Cloudflare Pages提供的*.pages.dev的免费二级域名,同时也支持绑定自定义域名
  • 支持图片审查API,可根据需要开启,开启后不良图片将自动屏蔽,不再加载
  • 支持后台管理,日志管理,查看访问前20的Referer、IP、img,可以对上传的图片进行在线预览,添加白名单,黑名单等操作

让我们开始学习如何部署叭!!!


部署教程

  1. Pages部署telegraph-Image项目
  • 打开telegraph-Image项目仓库,先给作者点击Star后再点击Fork!可以增加成功率哦!!!手动狗头🤭

  • 回到 WorkersPages > 概述 > 创建 > Pages > 连接到Git > 选择telegraph-Image项目 > 在Set up builds and deployments部分中,Framework preset(框架)Next.js,保存并部署即可


  1. 绑定自定义域
  • 这里推荐优先使用已经转入CF的域名,并开启小黄云。如果你没有域名,也可以退而求其次使用CNAME方式使用免费域名接入自定义域

  • 回到 Workers和Pages/telegraph-Image项目 > 设置 > 函数 > 放置 > 制作 > 智能 > 保存


  1. 创建管理后台
  • 3.1 回到 Workers 和 Pages > D1 > 创建数据库 > 仪表盘 > 数据库名称为img(名称可取任意值,建议为img) > 创建

  • 3.2 进入img数据库 > 控制台 > 粘贴以下代码后 > 点击执行 > 等待提示此查询已成功执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DROP TABLE IF EXISTS tgimglog;
CREATE TABLE IF NOT EXISTS tgimglog (
`id` integer PRIMARY KEY NOT NULL,
`url` text,
`referer` text,
`ip` varchar(255),
`time` DATE
);
DROP TABLE IF EXISTS imginfo;
CREATE TABLE IF NOT EXISTS imginfo (
`id` integer PRIMARY KEY NOT NULL,
`url` text,
`referer` text,
`ip` varchar(255),
`rating` text,
`total` integer,
`time` DATE
);
  • 3.3 配置Cloudflare R2,前往后台依次点击设置>函数>R2 存储桶绑定>编辑绑定>变量名称填写IMGRS 命名空间 选择你提前创建好的R2 存储桶绑定

  • 3.4 回到 Workers 和 Pages / telegraph-Image项目 > 设置 > 函数 > D1 数据库绑定 > 变量名IMG > img数据库 > 点击保存

  • 3.5 回到 Workers 和 Pages / telegraph-Image项目 > 设置 > 环境变量 > 为生产环境定义变量 > 变量内容如下:

    • 变量名BASIC_USER,值为你的后台管理员用户名

    • 变量名BASIC_PASS,值为你的后台管理员密码

    • 无需审查违规内容可跳过这一步

      • 打开ModerateContent API申请页面,输入你的邮箱后点击SUBMIT
      • 前往你的邮箱将 ModerateContent.com Sup 邮件内的 API Key 复制出来
      • 变量名ModerateContentApiKey,值为你的 API Key
  • 3.6 设置兼容性标志,前往后台依次点击设置>函数>兼容性标志>配置生产兼容性标志 填写 nodejs_compat

  • 3.7 回到 Workers 和 Pages /telegraph-Image项目 > 部署 > 点击右下角省略号 > 重试部署即可

How To Use

例如:你的 Pages自定义域 为img.123456.com

  • https://img.123456.com图床上传使用地址
  • https://img.123456.com/admin图床后台管理地址
  • https://123456.com/list图床访问日志

变量说明

环境变量

变量名称
PROXYALLIMG反向代理所有图片(默认为false)
BASIC_USER<后台管理页面登录用户名称>
BASIC_PASS<后台管理页面登录用户密码>
ModerateContentApiKey<审查图像内容的API key>
RATINGAPI<自建的鉴黄api >
CUSTOM_DOMAINhttps://your-custom-domain.com (自定义加速域名)
TG_BOT_TOKEN (必需)123468:AAxxxGKrn5 (从 @BotFather)
TG_CHAT_ID (必需)-1234567 (频道的ID,TG Bot要是该频道或群组的管理员)

鉴黄api部署

ModerateContentApiKey 请前往 [https://moderatecontent.com/] (https://moderatecontent.com/)注册免费获取API key

TG_BOT_TOKEN

Telegram的TG_BOT_TOKENTG_CHAT_ID

首先需要拥有一个Telegram账户,然后按照以下步骤获取TG_BOT_TOKENTG_CHAT_ID

  1. @BotFather发送/newbot,按照提示输入bot的备注、用户名等信息。成功创建后获得TG_BOT_TOKEN

  1. 创建一个新的频道(Channel),进入新建的频道,选择频道管理,将刚才创建的机器人设为频道管理员。

获取ID机器人 @VersaToolsBot

TG_CHAT_ID为目标对话的唯一标ID或目标频道的用户名(eg: @channelusername),当目标对话为个人或私有频道是只能是ID,当为公开频道或群组是可以为目标频道的用户名(eg: @channelusername

  1. @VersaToolsBot发消息,按步骤操作获取TG_CHAT_ID(频道ID)


Thanks Giter