IMGDD

6个月前发布 216 00

IMGDD 是一个简洁、高效的自托管图像托管程序,最初于 2023 年初启动。随着项目规模的扩大(截至 2025 年 2 月,日均处理超过 1 TB 流量和 420 万次请求),开发者决定将其开源,以便社区成员可以部署自己的实例,摆脱对单一公共服务的依赖。

所在地:
中国
收录时间:
2026-04-20
其他站点:

IMGDD 是一个简洁、高效的自托管图像托管程序,最初于 2023 年初启动。随着项目规模的扩大(截至 2025 年 2 月,日均处理超过 1 TB 流量和 420 万次请求),开发者决定将其开源,以便社区成员可以部署自己的实例,摆脱对单一公共服务的依赖。

IMGDD

该项目采用 Go 语言编写后端,前端基于现代 Web 技术栈,具备高并发处理能力和低资源占用特点,非常适合个人、团队或企业搭建私有图床。

核心特点

  • 高性能架构:基于 Go 语言构建,能够轻松应对海量请求和高带宽吞吐。
  • 完全自托管:数据掌握在自己手中,支持本地存储或兼容 S3 的对象存储(如 MinIO)。
  • 现代化技术栈:
    • 后端:Go 1.25+
    • 前端:Node.js 20 + React/Vue (假设,具体视 web_client 实现而定)
    • 数据库:PostgreSQL
    • 缓存:Redis
  • 角色权限管理:内置用户角色系统,支持站点所有者、管理员及普通用户等不同权限层级。
  • GraphQL API:提供类型安全的 GraphQL 接口,便于前端交互及第三方集成。

快速开始 (开发环境)

前置要求

  • Go 1.25+
  • Node.js 20
  • Docker & Docker Compose

1. 初始化配置

复制环境变量模板并根据需要修改(如数据库连接、存储配置等):

cp .env.template .env

2. 启动依赖服务

使用 Docker Compose 启动 PostgreSQL、Redis 和 MinIO(对象存储):

docker compose up -d

3. 数据库初始化

运行数据库迁移脚本并填充初始角色数据:

go run . migrate
go run . populate-built-in-roles

4. 创建管理员账户

创建一个具有站点所有者权限的初始用户:

go run . create-user --email you@imgdd.com --password yourpassword --is-site-owner

5. 构建与运行

构建前端:

cd web_client
pnpm install
pnpm build
cd ..

启动后端服务:

# 生产模式
go run . serve

# 开发模式(支持热重载,需安装 air)
go run . dev-server

开发工具与命令

IMGDD 提供了一系列便捷的 CLI 命令来辅助开发和维护:

代码生成

  • GraphQL 后端代码:go run . gql (基于 gqlgen)
  • ORM 代码:go run . jet (基于 Jet ORM,需数据库运行中)
  • 前端 TypeScript 类型:cd web_client && pnpm gen

数据库管理

  • 执行迁移:go run . migrate
  • 回滚/指定版本:go run . migrate --version <版本号>
  • 创建新迁移文件:go run . make-migration --name <描述>
  • 重置数据库(⚠️ 仅限开发):go run . reset-db

通用标志

所有命令均支持以下标志:

  • -c / --config:指定配置文件路径。
  • --log-level:设置日志级别(默认 info)。

适用场景

  • 个人博客/网站图床:替代不稳定或有限制的公共图床。
  • 团队素材库:集中管理设计稿、截图等项目资产。
  • 应用图片服务:为移动 App 或 Web 应用提供稳定的图片上传与分发服务。
  • 学习与研究:作为高并发 Go Web 服务和图像处理的参考实现。

相关导航