之前做过几次公共图床的小活动,都是借用别人的图床。用得多了以后,就一直想做一个真正属于自己的图床。
之前因为发小项目没发到内板,被禁言了三天。也正好趁这几天继续把这个项目完善了一下。
我不是程序员,更多是站在普通用户的角度去打磨这个项目:上传要顺手,外链要好复制,公共上传要能控,相册和图片管理也要够直观。

项目简介
OU-Image Hosting,中文名 欧记图床,是一个面向个人创作者、开发者、小团队和自托管玩家的图床项目。
项目地址:https://github.com/cshaizhihao/ou-image-hosting
它不是网盘,也不是一次性临时上传脚本,而是一个偏长期使用的:
- 自托管图床
- 图片库
- 相册管理面板
- 公共上传入口
- S3 / Cloudflare R2 图片托管工具
一句话概括:
图片放在自己手里,上传、整理、分享都尽量舒服一点。
为什么要做这个项目
很多朋友玩 VPS、独服、小鸡久了以后,都会遇到类似的问题:
- 截图、教程图、博客图到底放哪里?
- 发论坛、写文章、写文档时,图片外链怎么稳定?
- 免费图床会不会删图、限流、压缩?
- 对象存储很好,但配置起来是不是太麻烦?
- 想自己搭一个图床,但不想同时折腾一堆脚本和配置?
所以有了 OU-Image Hosting / 欧记图床。
它的定位很明确:给 MJJ、博客作者、开发者和小团队用的轻量自托管图床面板。
核心功能
OU-Image Hosting 目前主要支持这些能力:
| 功能 | 说明 |
|---|---|
| 图片上传 | 支持拖拽、粘贴、URL 上传和公共上传 |
| 外链复制 | 支持 URL、Markdown、HTML、BBCode |
| 图片管理 | 支持搜索、筛选、收藏、回收站和批量操作 |
| 相册管理 | 支持创建相册、设置封面、填写描述 |
| 权限边界 | 支持管理员、子管理员、普通用户和访客 |
| 存储后端 | 支持本地存储、Amazon S3、Cloudflare R2、S3-compatible |
| 部署方式 | 支持 Docker Compose 一键部署 |
| 运维能力 | 支持更新、备份、恢复、回滚、诊断和日志查看 |
简单说,它就是一个自己可控的图床面板。
新手常见问题
为什么要自建图床?
主要是为了可控。
免费图床刚开始用起来很方便,但时间久了可能会遇到:图片被压缩、加载慢、外链失效、平台限制流量、平台改规则、图片管理不方便、迁移困难等问题。
自建图床的好处是:
- 数据在自己手里
- 可以接 Cloudflare R2 / S3
- 可以绑定自己的域名
- 可以控制公开和隐藏
- 可以备份、迁移、恢复
- 发论坛、写博客、写文档都更稳定
当然,自建也意味着你需要维护服务器和存储。它更适合已经有 VPS,或者准备长期折腾一点点自托管服务的朋友。
Cloudflare R2 适合做图床吗?
比较适合。
R2 的优势是对象存储成本低,而且没有传统 S3 那种公网出口流量费用,对个人图床、博客图床、论坛发图这类场景比较友好。
OU-Image Hosting 支持:
本地存储
Amazon S3
Cloudflare R2
S3-compatible
如果只是自己玩,可以先用本地存储。如果图片比较多,或者希望后续迁移方便,建议直接使用 R2 / S3。
公共上传会不会有风险?
会,所以公共上传一定要有边界。
项目里把后台和公共上传做了分离:
- 管理员后台是管理员自己的图片库
- 普通用户只能使用公共图床和查看自己的上传历史
- 游客上传不会混入管理员个人历史
- 公共上传可以配置限制
目前公共上传相关能力包括:速率限制、每日额度、人机验证、IP 封禁、审计记录、公开/隐藏切换、上传历史分页和批量删除。
如果不想被坏哥们塞满奇怪图片,刚开始部署时不要无限制开放公共上传,这是血的教训。
适合完全新手吗?
适合有一点点 VPS 基础的新手。
如果你会 SSH 登录服务器:
ssh root@服务器IP
并且能复制一条命令到服务器执行,就可以尝试。
如果遇到网站打不开,也可以先用内置诊断命令:
ouih doctor
它会检查 Docker、端口、DNS、HTTPS、磁盘、内存和配置这些常见问题。
一键安装
在服务器上执行:
curl -fsSL https://raw.githubusercontent.com/cshaizhihao/ou-image-hosting/main/install.sh | bash
安装器会自动处理:
- 系统依赖
- Docker 环境
- 项目配置
- 反向代理
- 服务启动
安装完成后,打开脚本提示里的访问地址,创建第一个管理员账号即可使用。
Cloudflare 用户提醒
如果你使用 Cloudflare 代理域名,建议提前确认:
DNS 已指向服务器 IP
SSL/TLS 设置为 Full (strict)
服务器放行 80 / 443 端口
无人值守安装示例:
curl -fsSL https://raw.githubusercontent.com/cshaizhihao/ou-image-hosting/main/install.sh \
| bash -s -- --yes --origin https://img.example.com --proxy cloudflare --port 3080
日常维护命令
安装完成后,可以使用:
ouih

常用命令:
ouih status 查看服务状态
ouih logs 查看运行日志
ouih update 更新项目
ouih doctor 检查 Docker、端口、DNS、HTTPS、磁盘、内存和配置
ouih backup 创建备份
ouih restore 恢复备份
ouih rollback 回退最近一次成功更新
ouih url 查看访问地址
ouih dir 查看安装目录
ouih uninstall 卸载服务
网站打不开时,建议先跑:
ouih doctor
新手基本使用流程
1. 准备一台服务器
建议准备:
一台 VPS
一个域名,非必须但推荐
服务器开放 80 / 443 端口
SSH 登录权限
如果准备用 Cloudflare R2,也可以提前准备好 R2 存储桶和访问密钥。
2. 配置域名解析
如果你有域名,可以添加一条 DNS 记录:
img.example.com -> 你的服务器 IP
Cloudflare 用户建议把 SSL/TLS 设置为 Full (strict),并确认服务器 80 / 443 端口放行。
3. 执行安装命令
SSH 登录服务器后执行:
curl -fsSL https://raw.githubusercontent.com/cshaizhihao/ou-image-hosting/main/install.sh | bash
脚本会自动安装并启动服务。



4. 创建管理员账号
打开安装完成后的访问地址,首次进入时创建第一个管理员账号。

创建完成后,就可以进入后台使用图床功能。

5. 上传图片
进入后台后,可以上传图片。支持:
拖拽上传
粘贴上传
URL 上传
公共上传
也支持 HEIC / HEIF,以及 JPEG/HEIC + MOV Live Photo 动态片段这类图片场景。

6. 复制外链
上传完成后,可以一键复制:
URL
Markdown
HTML
BBCode
无论是发论坛、写博客,还是写 Markdown 文档,都会方便很多。
7. 管理图片和相册
后台可以对图片做整理:
搜索
筛选
收藏
回收站
批量操作
也可以创建相册:
设置封面
填写描述
批量加入图片
从图片详情返回原相册
8. 开放公共上传
如果你想给别人使用,可以开启公共上传。
建议同时配置:
速率限制
每日额度
人机验证
IP 封禁
审计记录

技术栈
项目主要使用:
Next.js 15
React 19
Radix UI
CSS Modules
Fastify
TypeScript
Sharp
Docker Compose
Caddy
Vitest
Playwright
GitHub Actions
推荐使用场景
比较适合:
- 经常写博客的人
- 经常发论坛帖子的人
- 想自己掌控图片外链的人
- 想用 Cloudflare R2 / S3 做图床的人
- 想给小团队提供图片上传入口的人
- 想要一个轻量图片库和相册面板的人
- 喜欢自托管服务的 MJJ
不太适合:
- 想要完整网盘的人
- 想要企业级 DAM 资产管理系统的人
- 不想维护任何服务器的人
- 只想临时传一张图就走的人
OU-Image Hosting 目前定位就是:简单、轻量、自托管,偏个人和小团队使用的图床面板。
安全边界
后台和公共上传默认分开。
普通注册用户只能使用公共图床和查看自己的上传历史;游客上传不会混入管理员个人历史,也不会误进后台。
后台不会展示用户密码,只提供重置入口。
公共上传建议配合限制使用,尤其是开放给外部用户时,不建议无限制裸奔。
文档和体验地址
项目文档包括:
部署文档
备份与恢复
安全模型
发布说明
图床体验地址:https://you1.gay/
开源地址:https://github.com/cshaizhihao/ou-image-hosting
欢迎 Star,也欢迎 Fork 二创。如果你正好需要一个自己的图床,希望这个项目能帮你少折腾一点。