logo NodeSeekbeta

【二开发布】欧记图床 R2

大家好,我基于 cshaizhihao/ou-image-hosting(欧记图床,MIT 协议)做了个二开版,先感谢原作者 @cshaizhihao 的好项目 🙏 原帖

📦 仓库:https://github.com/Ethan2258/ou-image-hosting
🏷️ 最新版本:v1.0.0-r2.2

为什么要二开

原版后台虽然能填 S3 / R2 的配置,但当前存储只能是本地。R2 只是个「复制目的地」,上传、看图都还是走服务器硬盘。我想让图片完全不占 VPS 空间,就动手改了。

主要改动

☁️ 三种存储都能设为当前存储

  • 本地存储、Amazon S3、Cloudflare R2 任选一个,后台点「设为当前存储」就能切换
  • 切到 R2 / S3 后,原图、缩略图、编辑后的版本、Live Photo 视频都直接写进存储桶,服务器上一个文件都不留
  • 切换前会先测一次连接,连不上就不切,不会切完才发现图全挂了
  • 老图不用搬:读图时先找本地,找不到自动去 R2 / S3 取;以后切回本地,远端的老图也照样能打开
  • 在回收站永久删除图片时,存储桶里的文件也会一起删,不会留垃圾

🏷️ 站内提示跟着存储方式走

  • 侧边栏、概览、上传页、存储中心、系统状态显示的都是你当前用的存储,不会再出现「用着 R2 却写着本地存储运行中」
  • 系统状态检查会直接探测当前的存储桶能不能访问

🔒 安全更新

  • 原版依赖里有 Next.js 的未授权远程代码执行等严重漏洞,这版已经升级修复(Next.js 15.5.26、Fastify 5.12.5、Sharp 0.35.4 等),依赖安全审计 0 个漏洞
  • ⚠️ 原版在公网跑着的朋友,建议尽快升级

🤖 自动跟进上游

  • 每 6 小时自动合并原作者的更新,有新内容就自动发布新版本
  • 每个版本都会同时打包 Docker 镜像(GHCR,公开可拉取)

安装

全新安装:

curl -fsSL https://raw.githubusercontent.com/Ethan2258/ou-image-hosting/main/install.sh | bash

从原版切换过来(数据不动,把代码来源换成这个仓库再升级就行;默认安装目录是 ~/ou-image-hosting,改过的换成你自己的路径):

git -C ~/ou-image-hosting remote set-url origin https://github.com/Ethan2258/ou-image-hosting.git
ouih update

升级后进后台「存储」页,填好 R2 配置 → 测试连接 → 点「设为当前存储」就完事了。原来的本地图片不用管,照样能打开;想彻底清空本地,可以先用「数据迁移」把图同步到 R2,再删本地文件。

R2 大概多少钱

  • 每月 10 GB 存储免费流量永久免费,超出后存储 $0.015/GB·月
  • 个人图床基本一直在免费额度内。S3 流量费比较贵,更推荐 R2

需要注意

  • 图床自带的备份只打包服务器本地的文件,存在 R2 / S3 里的图不在备份里,需要的话请开启存储桶自己的版本控制
  • R2 我自己线上一直在用;S3 走的是同一套接口,也有自动化测试覆盖,但我没在真实 AWS 上长期跑过,欢迎大家反馈
  • R2 存储桶不需要开公开访问,图片是经过你的服务器转发出去的,桶保持私有更安全

遇到问题欢迎在仓库提 Issue 或者直接回帖,觉得有用的话点个 ⭐ 就更好了~

  • 支持!

  • 火山帮,硬邦邦

  • 明天放假我去试试 xhj005 xhj005

  • 想起了我自己vibe的图床,已经完工很久了现在还没部署起来...

  • 还有什么需要的功能也可以说,我会在额度没用完的时候尽力的

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有71760位seeker

🎉欢迎新用户🎉