Skip to content

ilolioo/bsimgbed

Repository files navigation

bsimgbed

✨ 简单易用的个人图床系统,基于 Nuxt.js 构建 ✨

License bsimgbed

功能特性快速开始配置说明API 文档常见问题

功能特性

🖼️ 图片管理

  • 多种上传方式:支持点击、拖拽、粘贴上传,支持多图批量上传
  • URL 上传:支持从 URL 直接下载图片到本地图库
  • 瀑布流展示:响应式瀑布流布局,自适应不同屏幕尺寸
  • 图片预览:支持大图预览,显示图片详细信息
  • 批量操作:支持批量选择、批量删除图片
  • 回收站:软删除机制,支持清空回收站释放空间

🔐 权限控制

  • 公共/私有上传:支持访客上传和登录后私有上传两种模式;可为每个用户单独配置可上传文件大小
  • API Key 管理:在「我的」中创建、自定义名称、设为默认、刷新或删除;普通用户最多 2 个 Key
  • IP 黑名单:支持手动或自动拉黑恶意 IP

🛡️ 内容安全

  • NSFW 检测:支持多种鉴黄服务(nsfwdet.com 公益、elysiatools.com 公益、自建 nsfw_detector 开源)
  • 自动处理:违规图片会被标记为违规,可选自动将上传者 IP 加入黑名单
  • 违规管理:统计页可查看内容安全统计与违规图片,支持管理员查看、取消违规标记或删除

📦 多种存储

  • 存储方式:支持本地磁盘、WebDAV、Telegram、FTP、SFTP、S3 等多种存储方式

📊 数据统计

  • 存储统计:实时统计活跃图片数、存储空间占用
  • 分类统计:区分公共上传和私有上传数量
  • 内容安全统计:检测图片总数、违规图片数、违规率

🔔 通知推送

  • 多种通知方式:支持 Webhook、Telegram、Email、Server酱
  • 事件通知:登录通知、图片上传通知、鉴黄检测结果通知
  • 自定义模板:Webhook 支持自定义请求体模板

⚙️ 系统设置

  • 应用配置:自定义应用名称、Logo、全局背景图片
  • 公告系统:支持弹窗和横幅两种公告展示形式
  • 上传配置:可配置允许的格式、文件大小限制、WebP 压缩等
  • 频率限制:支持配置同一 IP 的请求频率限制

🎨 界面特性

  • 深色模式:支持亮色/深色主题切换
  • 响应式设计:完美适配桌面端和移动端
  • 毛玻璃效果:支持背景图片毛玻璃模糊效果

快速开始

Docker Compose 部署(推荐)

# 1. 创建 bsimgbed 目录
mkdir -p /opt/bsimgbed && cd /opt/bsimgbed


# 2. 下载docker-compose.yml文件
wget https://raw.githubusercontent.com/ilolioo/bsimgbed/refs/heads/main/docker-compose.yml

# 使用 docker-compose
docker compose up -d

Docker run部署

docker run -d --name bsimgbed -p 5198:5198 -v ./db:/app/db -v ./uploads:/app/uploads ghcr.io/ilolioo/bsimgbed:latest

手动部署

# 安装依赖
pnpm install

# 开发模式
pnpm dev

# 构建生产版本
pnpm build

# 启动生产服务
node .output/server/index.mjs

首次使用

首次启动时系统没有管理员账户,访问任意页面会跳转到 初始化页(/setup),在此页注册首个账号即为管理员。创建成功后使用该账号登录即可。

数据持久化

  • db/ - 数据库文件(NeDB)
  • uploads/ - 上传的图片文件

使用 Docker 部署时,请确保挂载数据目录:

volumes:
  - ./data:/app/data
  - ./uploads:/app/uploads

API 文档

完整 API 说明与示例请登录后台,进入 系统设置 → API文档 查看。以下为常用接口摘要:

方法 路径 说明
POST /api/upload/public 公共上传(multipart/form-data,无需认证;需在后台开启公共上传;单张大小受公共配置限制)
POST /api/upload/private 私有上传(请求头 X-API-Key;支持 multipart/form-data 或 JSON+Base64;可选 bucketId;单张大小受用户单独设置或私有配置限制)
POST /api/upload/url URL 上传(需 X-API-Key,请求体 {"url": "图片地址"},可选 bucketIdreturnBase64showOnHomepage
POST /api/upload/urls 批量 URL 上传(需 X-API-Key,请求体 {"urls": ["url1", "url2", ...]}, 可选 bucketIdshowOnHomepage

认证说明:私有上传、URL 上传、批量 URL 均需在请求头携带 X-API-Key(或在浏览器内使用登录后的 Cookie)。API Key 在顶栏 「我的」 中创建、编辑名称、设为默认、刷新或删除;普通用户最多 2 个 Key。管理员可在 用户管理 编辑用户时查看与管理该用户的 ApiKey。

上传成功后返回示例:

{
  "success": true,
  "message": "上传成功",
  "data": {
    "id": "文档ID",
    "uuid": "文件UUID",
    "filename": "uuid.webp",
    "format": "webp",
    "size": 123456,
    "width": 1920,
    "height": 1080,
    "url": "/i/uuid.webp",
    "uploadedAt": "2025-01-01T00:00:00.000Z"
  }
}

图片访问地址{站点根地址} + data.url,即 {站点根地址}/i/{uuid}.{格式},例如 https://your-domain.com/i/xxx.webp

常见问题

Q: 如何重置管理员密码?

删除 db/admin.db 文件后重启服务,系统会重新创建默认账户。

Q: 如何备份数据?

备份 db和uploads 目录即可,包含所有数据库文件和上传的图片。

Q: 支持哪些图片格式?

默认支持:JPEG、JPG、PNG、GIF、WebP、AVIF、SVG、BMP、ICO、APNG、TIFF

开源协议

Apache-License2.0

About

bsimgbed 是一个二开easyimg的简单易用的个人图床应用,支持本地磁盘、WebDAV、Telegram 等多种存储方式,可自由切换无需重启。提供公共/私有 API、API Key 管理、内容安全与通知等能力,适合自建图床与图片管理。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors