Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

206 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SkyImage

SkyImage 是一个现代化的图床系统,采用前后端分离架构。

演示站

🔗 演示地址:https://skyimage.demo.123123223.xyz

角色 邮箱 密码
管理员 demo@example.com adminpassword
普通用户 user@example.com userpassword

⚠️ 演示站数据会定期清理,请勿上传重要文件。

安装

建议使用docker部署

docker:

# 创建 skyimage 文件夹
mkdir skyimage

# 进入 skyimage 文件夹
cd skyimage

# 下载 docker-compose.yml
curl -O https://raw.githubusercontent.com/fishcpy/skyImage/refs/heads/main/docker-compose.yml

# 下载 .env
curl -o .env https://raw.githubusercontent.com/fishcpy/skyImage/refs/heads/main/.env.example

# 启动服务
docker-compose up -d

启动后访问 http://localhost:8080 即可进入安装向导页面。

数据持久化

Docker 部署会挂载以下目录:

  • ./storage/data - 数据库文件目录
  • ./storage/uploads - 上传文件目录
  • ./.env - 配置文件(安装后自动保存数据库配置)

二进制部署

前往 GitHub Releases 下载对应平台的预编译包。

支持平台

平台 架构 文件名格式
Linux x86_64 skyimage-*-linux-amd64.tar.gz
Linux ARM64 skyimage-*-linux-arm64.tar.gz
Windows x86_64 skyimage-*-windows-amd64.zip
macOS Intel skyimage-*-darwin-amd64.tar.gz
macOS Apple Silicon skyimage-*-darwin-arm64.tar.gz

部署步骤

  1. 下载对应平台的压缩包并解压
  2. 复制 .env.example.env 并修改配置
  3. 运行 ./skyimage(Linux/macOS)或 skyimage.exe(Windows)
  4. 访问 http://localhost:8080 完成安装向导

源码部署

前置要求

  • Go 1.24+
  • Node.js 18+
  • pnpm(推荐)或 npm

1. 克隆项目

git clone https://github.com/fishcpy/skyImage.git
cd skyImage

2. 安装依赖

pnpm install

3. 构建前端

pnpm build

4. 配置环境变量

cp .env.example .env

编辑 .env 文件,修改以下配置:

HTTP_ADDR=:8080                    # 服务监听地址
STORAGE_PATH=storage/uploads      # 文件存储路径
PUBLIC_BASE_URL=http://your-domain.com  # 公网访问地址
FRONTEND_DIST=dist                # 前端构建产物目录

5. 启动服务

go run ./cmd/api

启动后访问 http://localhost:8080 进入安装向导页面。

技术栈

后端

  • Go 1.24+ - 高性能后端语言
  • Gin - Web 框架
  • GORM - ORM 数据库操作
  • Viper - 配置管理
  • Cookie + Session - 身份认证

前端

  • React 18 - 用户界面框架
  • TypeScript - 类型安全
  • Vite - 构建工具
  • Tailwind CSS - 样式框架
  • Radix UI - UI 组件库
  • React Router - 路由管理
  • Zustand - 状态管理
  • Axios - HTTP 客户端

数据库支持

  • SQLite
  • MySQL
  • PostgreSQL

安装向导可选择数据库类型;运行中可在 管理后台 → 系统设置 → 数据库 将数据迁移到另一种数据库(例如 SQLite → MySQL/PostgreSQL,或反向)。

命令行迁移

# 将当前 .env 指向的库迁移到 MySQL,并写入 .env 切换运行配置
go run ./cmd/migrate \
  -target-type=mysql \
  -target-host=127.0.0.1 \
  -target-port=3306 \
  -target-name=skyimage \
  -target-user=root \
  -target-password=secret \
  -truncate-target \
  -switch

# 仅测试连接
go run ./cmd/migrate -target-type=sqlite -target-path=storage/data/new.db -dry-run

迁移会复制全部业务表数据,不移动已上传的文件(文件仍由存储策略管理)。

注意:

  • 目标库非空时须加 -truncate-target(或管理端开启「清空目标表」),否则会拒绝迁移
  • SQLite 路径必须是相对路径,且位于 storage/
  • 同一进程内同时只能运行一次迁移;请在维护窗口操作

存储支持

以下支持情况按当前代码中的存储驱动实现统计;AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云通过 S3 兼容存储驱动接入。

支持状态 存储类型
支持 本地存储、AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云、WebDAV、MinIO
未测试 FTP、SFTP

主要功能

  • 用户注册与登录
  • 图片上传与管理
  • 存储策略配置
  • 用户组与权限管理
  • 管理员后台
  • 容量监控
  • API 文档
  • 系统安装向导
  • 数据库跨库迁移(SQLite / MySQL / PostgreSQL)
  • Turnstile 验证码集成
  • 邮件通知

项目结构

skyimage/
├── cmd/                    # 命令行入口
│   ├── api/               # API 服务
│   └── migrate/           # 跨库数据迁移工具
├── internal/              # 内部包
│   ├── admin/            # 管理员服务
│   ├── api/              # API 处理器
│   ├── config/           # 配置管理
│   ├── data/             # 数据库模型与连接
│   ├── dbmigrate/        # 跨库迁移实现
│   ├── files/            # 文件服务
│   ├── installer/        # 安装服务
│   ├── legacy/           # 旧版导入
│   ├── mail/             # 邮件服务
│   ├── middleware/       # 中间件
│   ├── users/            # 用户服务
│   └── version/          # 版本信息
├── src/                   # 前端源码
│   ├── components/       # React 组件
│   ├── features/         # 功能页面
│   ├── layouts/          # 布局组件
│   ├── lib/              # 工具库
│   └── state/            # 状态管理
└── storage/               # 存储目录

设计理念

SkyImage 提供了简洁、现代的用户界面和流畅的用户体验。主要设计特点包括:

  • 响应式设计,支持多端访问
  • 深色/浅色主题切换
  • 直观的文件管理界面
  • 完善的权限控制系统
  • 高效的图片上传体验

致谢

Lsky Pro 参考了Lsky Pro的布局和部分逻辑

Star History

Star History Chart

许可证

本项目(main 分支及后续开发)采用 GNU Affero General Public License v3.0 (AGPL-3.0)

历史代码说明:skyimage-MIT 分支中的旧代码仍按 MIT 许可证 开源,可单独使用该分支获取 MIT 许可版本。

Releases

Packages

Used by

Contributors

Languages