- 多种上传方式:支持点击、拖拽、粘贴上传,支持多图批量上传
- 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 的请求频率限制
- 深色模式:支持亮色/深色主题切换
- 响应式设计:完美适配桌面端和移动端
- 毛玻璃效果:支持背景图片毛玻璃模糊效果
# 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 -ddocker 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文档 查看。以下为常用接口摘要:
| 方法 | 路径 | 说明 |
|---|---|---|
| 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": "图片地址"},可选 bucketId、returnBase64、showOnHomepage) |
| POST | /api/upload/urls |
批量 URL 上传(需 X-API-Key,请求体 {"urls": ["url1", "url2", ...]}, 可选 bucketId、showOnHomepage) |
认证说明:私有上传、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。
删除 db/admin.db 文件后重启服务,系统会重新创建默认账户。
备份 db和uploads 目录即可,包含所有数据库文件和上传的图片。
默认支持:JPEG、JPG、PNG、GIF、WebP、AVIF、SVG、BMP、ICO、APNG、TIFF