🖼️ 一个简约扁平化风格的图片托管服务 🖼️
支持拖拽上传和多种链接格式生成
╔══════════════════════════════════════╗
║ 🎨 简约设计 📱 响应式 🔐 安全认证 ║
║ ⚡ 快速上传 🔗 多种链接 ⏰ 定时清理 ║
╚══════════════════════════════════════╝
- ✨ 简约扁平化设计 - 现代化的用户界面
- 🖱️ 拖拽上传 - 支持直接拖拽图片到页面上传
- 🎯 多格式支持 - 支持 JPG、PNG、GIF、BMP、WEBP、SVG、TIFF、ICO
- 🔗 多种链接格式 - 自动生成信息页链接、直链、HTML代码、Markdown代码
- ⏰ 自动删除功能 - 可设置图片保存时长,支持5分钟到永久保存
- 🔐 密码保护 - 可选的密码认证功能,保护私人图床
- 📱 响应式设计 - 适配桌面和移动端
- 🌐 智能协议检测 - 自动识别HTTPS环境,支持反向代理
- 🚀 优化用户体验 - 移除频率限制,确保流畅使用
- 🔧 文件名优化 - 自动转换文件扩展名为小写
- 🐳 Docker部署 - 一键部署,开箱即用
-
下载项目文件
git clone https://github.com/xhhcn/B-pic.git cd B-pic -
配置环境变量
cp env.example .env # 编辑 .env 文件,设置您的密码和配置 -
启动服务
docker-compose up -d- 访问服务
- 打开浏览器访问:
http://localhost:8007 - 如果启用了认证,请使用设置的密码登录
- 打开浏览器访问:
# 1. 创建数据目录和文件(首次部署必须执行)
mkdir -p uploads
touch database.db
# 2. 启用认证的部署
docker run -d \
--name b-pic \
-p 8007:8007 \
-e ENABLE_AUTH=true \
-e AUTH_PASSWORD=your-secure-password \
-e SESSION_SECRET=your-random-secret \
-v ./uploads:/app/uploads \
-v ./database.db:/app/database.db \
xhh1128/b-pic
# 3. 公开访问(无认证)
docker run -d \
--name b-pic \
-p 8007:8007 \
-e ENABLE_AUTH=false \
-v ./uploads:/app/uploads \
-v ./database.db:/app/database.db \
xhh1128/b-pic🚀 快速启动(无数据持久化)
如果您不需要数据持久化,可以直接运行:
# 简单启动(数据不会保存)
docker run -d --name b-pic -p 8007:8007 -e ENABLE_AUTH=false xhh1128/b-pic| 变量名 | 默认值 | 说明 |
|---|---|---|
PORT |
8007 |
服务器端口 |
ENABLE_AUTH |
false |
是否启用密码认证 |
AUTH_PASSWORD |
admin123 |
访问密码 |
SESSION_SECRET |
随机生成 |
Session加密密钥 |
ALLOW_PERMANENT_STORAGE |
false |
是否允许永久存储 |
- 访问首页
- 拖拽图片到上传区域或点击选择文件
- 选择图片保存时长(5分钟到永久)
- 获取多种格式的分享链接
- 图片格式: JPG, PNG, GIF, BMP, WEBP, SVG, TIFF, ICO
- 文件大小: 最大 10MB
- 链接类型: 信息页链接、直链、HTML代码、Markdown代码
🔒 安全建议
- 使用复杂密码,包含大小写字母、数字和特殊字符
- 生产环境建议使用HTTPS
- 定期更新Docker镜像
- 合理配置防火墙规则
🐳 Docker Compose 完整配置
version: '3.8'
services:
b-pic:
build: .
container_name: b-pic
restart: unless-stopped
ports:
- "8007:8007"
environment:
- NODE_ENV=production
- PORT=8007
- ENABLE_AUTH=true
- AUTH_PASSWORD=your-secure-password-change-me
- SESSION_SECRET=your-random-session-secret-change-me
- ALLOW_PERMANENT_STORAGE=false
volumes:
- ./uploads:/app/uploads
- ./database.db:/app/database.db
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8007/api/auth/status"]
interval: 30s
timeout: 10s
retries: 3欢迎提交 Issue 和 Pull Request!