一个轻量级、现代化、抗打击的图床应用,专为 VPS 部署设计。
-
现代化 UI / UX:
- 🎨 极简设计: 默认 Slate 灰,内置 Stone, Zinc, Light 等多款优雅主题。
- 🖼️ 瀑布流与列表视图: 丝滑的图片浏览体验,支持多种排序方式(时间、大小、名称)。
- 📱 完全响应式: 完美适配桌面与移动端设备。
-
强大的 Upload 核心:
- 📤 批量上传: 支持多文件拖拽上传,带有实时进度队列。
- 🖼️ 原图与透传模式:
- 原图模式:质量100%,保留EXIF旋转信息。
- 完整原图(透传):完全保留原始文件字节,适合酒馆角色卡等带元数据的 PNG 图片。
- 🎚️ 压缩控制: 用户可自定义压缩质量(受管理员配额限制)。
- 🛡️ 安全检测: 基于文件头的格式检查 (Magic Bytes) 与解压炸弹防御。
- 🔒 CSRF 保护: 全站 API 启用 CSRF 验证,保障安全。
-
精细化权限管理:
- 👥 用户管理: 管理员可查看、禁用、删除用户,修改用户角色。
- 💾 个人配额: 支持为每个用户单独设置存储空间上限(支持无限制)。
- 🔑 邀请码机制: 支持生成一次性或限次邀请码,控制注册用户。
- ⚙️ 动态配置: 实时调整全局上传限制、默认质量、水印等。
- 🛡️ 安全防护: 内置 Flask-Limiter 接口限流,自动移除 EXIF 隐私信息。
| 瀑布流图库 | 上传队列 |
|---|---|
![]() |
![]() |
| 管理配置 | 用户管理 |
|---|---|
![]() |
![]() |
# 1. 克隆项目
git clone https://github.com/your-username/image-host.git
cd image-host
# 2. 安装依赖
pip install -r requirements.txt
# 3. 启动应用
python app.py访问 http://localhost:5000,第一个注册的用户自动成为管理员。
curl -sSL https://raw.githubusercontent.com/bwwq/fastimg/main/setup.sh | bash# 构建并启动
docker-compose up -d --build
# 查看日志
docker-compose logs -f# 构建镜像
docker build -t imghost .
# 启动容器
docker run -d \
--name imghost \
-p 5000:5000 \
-v $(pwd)/uploads:/app/uploads \
-v $(pwd)/data:/app/data \
imghost注意:数据库文件现位于
/app/data/database.db,请务必挂载/app/data目录以持久化数据。
-
安装 Nginx
sudo apt update && sudo apt install nginx -y -
配置 Nginx (
/etc/nginx/sites-available/imghost)server { listen 80; server_name your-domain.com; # 替换为你的域名 client_max_body_size 50M; # 允许上传大文件 location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-CSRFToken $http_x_csrf_token; # 传递 CSRF header } # 静态文件缓存优化 location /i/ { proxy_pass http://127.0.0.1:5000; proxy_cache_valid 200 7d; add_header Cache-Control "public, max-age=604800"; } }
-
启用配置
sudo ln -s /etc/nginx/sites-available/imghost /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
-
安装 Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update && sudo apt install caddy -y
-
配置 Caddyfile (
/etc/caddy/Caddyfile)your-domain.com { reverse_proxy localhost:5000 } -
重启 Caddy
sudo systemctl restart caddy
Caddy 会自动申请并续期 Let's Encrypt SSL 证书!
- 成为管理员: 系统第一个注册的用户将自动获得管理员权限。
- 管理面板: 登录后点击侧边栏 "系统设置"。
- 功能:
标签页 功能 系统配置 上传限制、压缩质量、WebP 转换、水印设置 用户管理 查看用户文件、修改密码、设置个人存储配额 邀请码 生成/管理邀请码
FastImg 支持隐私优先的灾备:先在服务器本地生成一致快照,再打包、压缩、使用 age 加密,最后通过 rclone 上传到 OneDrive / Google Drive / S3 / WebDAV 等远端。
- 云端不可见:照片内容、数据库内容、原始文件名、文件夹名、图片 URL 文件名、manifest。
- 云端仍可见:备份包大小、上传时间、备份数量、远端路径和可读备份包名。
- 备份密码只用于加密恢复身份;丢失后无法解密旧备份。
docker-compose.yml 已挂载 ./config:/app/config,rclone 配置建议放在:
./config/rclone/rclone.conf可以在宿主机先执行:
rclone config然后把生成的配置复制到上面的路径。进入后台「系统管理 -> 备份与恢复」后:
- 填写 rclone 远端路径,例如
onedrive:fastimg-backups。 - 保存配置并测试远端。
- 设置独立备份密码。
- 启用定时备份或点击立即备份。
- 导出恢复包并离线保存一份。
新服务器安装 Docker、rclone、age、zstd 后,准备好 rclone 访问凭据,然后在项目目录执行:
FASTIMG_BACKUP_PASSWORD='你的备份密码' sh ./scripts/restore-from-remote.sh onedrive:fastimg-backups脚本会选择远端最新的 fastimg-backup-*.age,下载加密身份和备份包,解密、校验、恢复 data/database.db 与 uploads/,再启动 Docker Compose。
如果你手上有后台导出的离线恢复包,也可以一起提供:
FASTIMG_BACKUP_PASSWORD='你的备份密码' \
FASTIMG_RECOVERY_KIT='./fastimg-recovery-kit.enc' \
sh ./scripts/restore-from-remote.sh onedrive:fastimg-backups恢复完成后,把域名 A/AAAA 记录改到新服务器 IP,并按原来的 Nginx/Caddy 反代配置接入即可。生产环境建议 DNS TTL 设置为 300 秒。
.
├── app.py # 后端核心逻辑
├── models.py # 数据库模型
├── utils.py # 图片处理与安全工具
├── config.py # 配置文件
├── init_db.py # 数据库初始化与迁移
├── extensions.py # 扩展初始化
├── uploads/ # 图片存储目录 (需备份)
├── data/ # 数据目录 (需备份)
│ └── database.db # SQLite 数据库
├── config/ # 运行配置目录 (rclone/备份身份,需私密保存)
├── scripts/ # 灾难恢复脚本
├── static/ # 前端资源
│ ├── css/ # 模块化样式 (base, components, layout, themes)
│ ├── js/ # 前端逻辑
│ └── index.html # 单页应用入口
├── screenshots/ # 项目截图
├── Dockerfile # Docker 镜像构建
└── docker-compose.yml # 容器编排
| 变量 | 说明 | 默认值 |
|---|---|---|
SECRET_KEY |
Flask 密钥 | 自动生成 |
UPLOAD_FOLDER |
图片存储路径 | ./uploads |
DATABASE_URL |
数据库连接串 | sqlite:///data/database.db |
MIT



