分享一个无需服务器开源自建图床程序,支持一键部署到 Cloudflare Pages 平台,支持图片管理,兼容 picgo - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
airka
V2EX    开源软件

分享一个无需服务器开源自建图床程序,支持一键部署到 Cloudflare Pages 平台,支持图片管理,兼容 picgo

  •  2
     
  •   airka 2023-01-19 10:37:17 +08:00 4246 次点击
    这是一个创建于 996 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Telegraph-Image

    开源免费图片托管解决方案,Flickr/imgur 替代品。基于无服务器 Sererless 技术,使用 Cloudflare Pages 和 Telegraph 。

    项目 Github 地址:https://github.com/cf-pages/Telegraph-Image

    Demo: https://im.gurl.eu.org

    如何部署

    提前准备

    你唯一需要提前准备的就是一个免费的 Cloudflare 账户

    手把手教程

    简单 3 步,即可部署本项目,拥有自己的图床

    1.下载或 Fork 本仓库 (注意:目前请使用 fork ,在使用下载#14部署存在问题)

    2.打开 Cloudflare Dashboard ,进入 Pages 管理页面,选择创建项目,如果在第一步中选择的是 fork 本仓库,则选择连接到 Git 提供程序,如果第一步中选择的是下载本仓库则选择直接上传 1

    最后一步,按照页面提示输入项目名称,选择需要连接的 git 仓库(第一步选择的是 fork )或是上传刚刚下载的仓库文件(第一步选择的是下载本仓库),点击部署站点即可完成部署

    特性

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

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

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

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

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

    绑定自定义域名

    在 pages 的自定义域里面,绑定 cloudflare 中存在的域名,在 cloudflare 托管的域名,自动会修改 dns 记录 2

    开启图片审查

    1.请前往 https://moderatecontent.com/ 注册并获得一个免费的用于审查图像内容的 API key

    2.打开 Cloudflare Pages 的管理页面,依次点击设置环境变量添加环境变量

    3.添加一个变量名称ModerateContentApiKey为你刚刚第一步获得的API key,点击保存即可

    注意:由于所做的更改将在下次部署时生效,你或许还需要进入部署页面,重新部署一下该本项目

    开启图片审查后,因为审查需要时间,首次的图片加载将会变得缓慢,之后的图片加载由于存在缓存,并不会受到影响 3

    限制

    1.由于图片文件实际存储于 Telegraph ,Telegraph 限制上传的图片大小最大为 5MB

    2.由于使用 Cloudflare 的网络,图片的加载速度在某些地区可能得不到保证

    3.Cloudflare Function 免费版每日限制 100,000 个请求(即上传或是加载图片的总次数不能超过 100,000 次)如超过可能需要选择购买 Cloudflare Function 的付费套餐,如开启图片管理功能还会存在 KV 操作数量的限制,如超过需购买付费套餐

    开启图片管理功能

    图片管理功能,默认是关闭的,如需开启请部署完成后前往后台依次点击设置->函数->KV 命名空间绑定->编辑绑定->变量名称填写:img_url KV 命名空间 选择你提前创建好的 KV 储存空间,开启后访问 http(s)://你的域名 /admin 即可打开后台管理页面

    变量名称 KV 命名空间

    img_url 选择提前创建好的 KV 储存空间

    开启图片管理登录验证功能

    后台管理页面的登录验证功能,默认也是关闭的,如需开启请部署完成后前往后台依次点击设置->环境变量->为生产环境定义变量->编辑变量 添加如下表格所示的变量即可开启登录验证

    变量名称 值 BASIC_USER = <后台管理页面登录用户名称> BASIC_PASS = <后台管理页面登录用户密码>

    当然你也可以不设置这两个值,这样访问后台管理页面时将无需验证,直接跳过登录步骤,这一设计使得你可以结合 Cloudflare Access 进行使用,实现支持邮件验证码登录,Microsoft 账户登录,Github 账户登录等功能,能够与你域名上原有的登录方式所集成,无需再次记忆多一组后台的账号密码,添加 Cloudflare Access 的方式请参考官方文档,注意需要保护路径包括 /admin 以及 /api/manage/*

    一些注意事项:

    Cloudflare KV 每天只有 1000 次的免费写入额度,每有一张新的图片加载都会占用该写入额度,如果超过该额度,图片管理后台将无法记录新加载的图片

    每天最多 100,000 次免费读取操作,图片每加载一次都会占用该额度(在没有缓存的情况下,如果你的域名在 Cloudflare 开启了缓存,当缓存未命中时才会占用该额度),超过黑白名单等功能可能会失效

    每天最多 1,000 次免费删除操作,每有一条图片记录都会占用该额度,超过将无法删除图片记录

    每天最多 1,000 次免费列出操作,每打开或刷新一次后台 /admin 都会占用该额度,超过将进行后台图片管理

    绝大多数情况下,该免费额度都基本够用,并且可以稍微超出一点,不是已超出就立马停用,且每项额度单独计算,某项操作超出免费额度后只会停用该项操作,不影响其他的功能,即即便我的免费写入额度用完了,我的读写功能不受影响,图片能够正常加载,只是不能在图片管理后台看到新的图片了。

    如果你的免费额度不够用,可以自行向 Cloudflare 购买 Cloudflare Workers 的付费版本,每月$5 起步,按量收费,没有上述额度限制

    另外针对环境变量所做的更改将在下次部署时生效,如更改了环境变量,针对某项功能进行了开启或关闭,请记得重新部署。

    17 条回复    2023-01-21 05:42:58 +08:00
    xiaoao
        1
    xiaoao  
       2023-01-19 11:18:39 +08:00
    很好 我用的 b2+cl 缓存
    KMpAn8Obw1QhPoEP
        2
    KMpAn8Obw1QhPoEP  
       2023-01-19 11:23:14 +08:00 via Android
    嗯 readme 里有张示例图片不错 我朋友说想要原图
    Kevinyy
        3
    Kevinyy  
       2023-01-19 12:04:15 +08:00
    同上
    airka
        4
    airka  
    OP
       2023-01-19 12:27:44 +08:00
    @enchilada2020 你说的是这张吗? https://im.gurl.eu.org/file/022b6e054100d7ffecaef.jpg
    其实 readme 里面展示了图片的文件名,稍微拼接一下 url 就能获得图片了
    airka
        5
    airka  
    OP
       2023-01-19 12:28:52 +08:00
    @Kevinyy 其实 readme 里面展示了图片的文件名,稍微拼接一下 url 就能获得图片了
    vazo
        6
    vazo  
       2023-01-19 12:33:32 +08:00
    Demo 域名被墙?
    forelegance
        7
    forelegance  
       2023-01-19 12:39:56 +08:00
    一直用 linx-server ,感觉够简单,够轻量。
    QUC062IzY3M1Y6dg
        8
    QUC062IzY3M1Y6dg  
       2023-01-19 13:18:11 +08:00
    请教,我这里开启了 KV 命名空间绑定,打开 /admin 还是报错,是我命名出错了吗?

    https://tg-images.pages.dev/file/f23110335157616009e02.png
    https://tg-images.pages.dev/file/1ed78e43ea12dc49b690c.png
    estk
        9
    estk  
       2023-01-19 13:31:50 +08:00 via iPhone
    https://im.gurl.eu.org/file/9ab20debcf9ac53fe826b.jpg
    照道理做文件床也行吧,不一定图片
    itechify
        10
    itechify  
    PRO
       2023-01-19 13:52:54 +08:00 via Android
    哇,下次试试
    Droog
        11
    Droog  
       2023-01-19 14:53:00 +08:00
    非常好用,谢谢!
    chancat
        12
    chancat  
       2023-01-19 17:02:36 +08:00 via Android
    这都好久的东西了,玩烂算球
    zuoshoufantexi
        13
    zuoshoufantexi  
       2023-01-20 07:09:47 +08:00 via Android
    留着备用。
    airka
        14
    airka  
    OP
       2023-01-20 15:00:24 +08:00
    @shuxhan 修改环境变量或是添加绑定后请尝试重新部署一下
    airka
        15
    airka  
    OP
       2023-01-20 15:01:14 +08:00
    @estk 是的但是 telegraph 限制文件大小 5M ,5M 做文件储存的话就太小了
    airka
        16
    airka  
    OP
       2023-01-21 05:42:03 +08:00
    @vazo 是的,部分地区,部分运营商无法正常访问
    airka
        17
    airka  
    OP
       2023-01-21 05:42:58 +08:00
    @forelegance 后面会推出支持部署到自己的 linux 服务器上的版本,无需依赖 cloudflare ,敬请期待
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1104 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:09 PVG 02:09 LAX 11:09 JFK 14:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86