V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
irocket
V2EX  ›  分享创造

特别想给 v 友介绍下这个与众不同的图床,结果发现 v 站关闭了 referer

  •  
  •   irocket · 9 天前 · 1100 次点击

    16 图床

    花了点心思设计了这个图床,起名 16 图床

    先放网址

    避免太长不看,先放网址

    111666.best

    闪光点

    用了一些时间写了这个图床,自认为有很多可圈可点的地方

    • 颜值担当,UI 现代化,支持暗黑模式,设计感拉满
    • 操作丝滑,跟吃了德芙一样
    • 多重备份,分布式数据库,oss 冷备份,安全无忧
    • 全格式支持,前端预压缩预转码,减少卡顿
    • 校验位设计,超级耐打,天生就带着安全基因
    • 尊重隐私,不用登录,支持撤回,使用浏览器 IndexedDB 数据库

    无需登录

    首先,图床是不用登录的,这在你需要临时传图的时候很方便

    允许撤回且同步删除 CDN 缓存

    • 很多图床是不登录就不能撤回,万一误传了很麻烦,但我们可以在不登陆的情况下撤回图片,因为本地 IndexedDB 记录了你的凭据( token )
    • 有些图床删除了图片还能访问,是因为没有清除图片在 CDN 的缓存,我们的删除会同步清理对应的缓存记录
    • token 在首次打开网页会储存到浏览器本地数据库,也支持你自己定制 token 的字符串值

    简练的 API

    图床上有介绍 API 调用方式,方便开发者调用

    分布式数据库,皮实耐用

    使用rqlite做分布式数据库,理论上即使图床所在某个机房被毁灭数据都在其他地方有实时备份

    图片 URL 设计

    • 图片 URL 为随机产生,不含有时间信息,对隐私保护有一定的效果
    • 图片 URL 有签名校验位,能够减缓随机 url ddos 攻击产生额外数据库查询压力

    支持复制为 markdown/bbcode/直链

    点击就能复制,方便发帖使用

    技术栈

    • golang 主程序
    • rqlite 分布式数据库
    • cloudflare api ,用于清理缓存
    • cloudflare waf ,针对程序做进一步的配合,增强 ddos 抵抗
    • oss 冷备,b2/r2 ,这个只做冷备,不做热数据
    • 数据库定时 snapshot ,图片文件每月离线备份

    图床通过 referer 来阻止上传 NSFW 等违反 TOS 行为,发现 v 站关闭了 referer ,好可惜不能直接用到 v 站了

    另外本图床计划长期维护,不会随便跑路。稳定性是最大的追求。

    15 条回复    2024-06-18 14:28:16 +08:00
    w4ngzhen
        1
    w4ngzhen  
       9 天前
    大佬好,请问这个图床纯用爱发电么?
    irocket
        2
    irocket  
    OP
       9 天前
    @w4ngzhen
    图床不打算挂广告,永远会保持这个免费状态
    未来也许会支持高级用户 SaaS CName 域名过来,但免费的功能不会变
    运营成本对我来说没多少,域名已经续费了 10 年,图床也不需要特别高配的服务器
    maymay5
        3
    maymay5  
       9 天前
    就在几天前,我发布了一条一样的,原因倒不是我想开发,而是有台闲置的服务器,并且续费了 3 年,想分享给社区,毕竟吃灰也是费钱,做的也是图床,结果一天就快给我把硬盘塞满了,最后我总结了一个结论

    * 用爱发电太赞了,但是一定要有限制,比如我强烈建议 OP 关闭 API ,允许游客不限次数上传,并且做到永久保存,就已经是大善人了
    aagaguai
        4
    aagaguai  
       9 天前
    我也在几个月前发布了
    irocket
        5
    irocket  
    OP
       9 天前
    @maymay5
    感谢 v 友提醒,不过有每日的频率和数量限制,不用担心储存占满这种初级问题
    至于内容违规的问题,图床不允许查看直链,只能嵌入网页查看,并且有拉黑 referer 的机制,每日有风险识别归类处理的定时任务
    mokeyjay
        6
    mokeyjay  
       9 天前
    有国内 CDN 吗?
    irocket
        7
    irocket  
    OP
       9 天前
    @aagaguai
    哈哈,图床是练手项目重灾区,也是很实用的基础设施
    不过这个图床是经过精心设计的,算是真的解决了很多痛点,现在用户量已经不错了
    irocket
        8
    irocket  
    OP
       9 天前
    @mokeyjay
    国内 CDN 成本不允许,这个图床主打一个使用体验和追求稳定,速度上没有什么特别优势,Cloudflare 免费版
    zoharSoul
        9
    zoharSoul  
       9 天前
    可以开源自建嘛
    OWLS
        10
    OWLS  
       9 天前
    经历过几次微博图床 XXX 之后,心有余悸。
    要么投靠外国大树,要么自建了。
    caola
        11
    caola  
       9 天前
    我也做过类似的,但只有一个 mysql 主库,文件 url 也是一串随机名称,只是用了 kvrocks (硬盘版 redis) 缓存对应的硬盘保存的目录路径和对应的文件信息。
    irocket
        12
    irocket  
    OP
       8 天前
    @zoharSoul 不可以,一是架构略微复杂,搭建非阉割版比较麻烦,二是不想承担不可控的程序滥用风险
    irocket
        13
    irocket  
    OP
       8 天前
    @OWLS 国外大树没毛病,但很多自建的用户坚持不了多久,而且可能因为各种原因丢失数据
    irocket
        14
    irocket  
    OP
       8 天前
    @caola 随机是好事,看一下我那个校验位的设计,比如前 x 位是校验位,根据某种排列哈希算法计算出来。在查询数据库前先检查校验,不对的话就不用查数据库了,防止有人用随机 url 回源 ddos 你
    OWLS
        15
    OWLS  
       8 天前
    @irocket 是的。所以怕丢数据的用户一般都选择付费。兄弟,你该商业化了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1270 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:33 · PVG 07:33 · LAX 16:33 · JFK 19:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.