SkyImage 是一个现代化的图床系统,采用前后端分离架构。
支持在安装向导中一键迁移 Lsky Pro 开源版 的数据(详见从 Lsky Pro 开源版导入)。
🔗 演示地址:https://skyimage.demo.123123223.xyz
| 角色 | 邮箱 | 密码 |
|---|---|---|
| 管理员 | [email protected] | adminpassword |
| 普通用户 | [email protected] | userpassword |
⚠️ 演示站数据会定期清理,请勿上传重要文件。
# 创建 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
⚠️ 启动前必须确保
.env文件已存在。若直接docker-compose up而宿主机没有.env,Docker 会把./.env挂载为目录,导致安装向导 / 数据库迁移无法保存配置(报save database config错误)。
启动后访问 http://localhost:8080 即可进入安装向导页面。
🔐 安装向导密码:未安装状态下访问安装向导需要验证安装密码,防止部署期间被他人抢占安装。密码通过环境变量
INSTALL_PASSWORD设置;若未设置,服务每次启动(未安装状态下)会自动生成一个 10 位随机密码并打印到启动日志(docker compose logs可查看),安装完成后门禁自动失效。
SkyImage 镜像发布到多个仓库,可按网络环境选择:
| 仓库 | 镜像地址 | 适用场景 |
|---|---|---|
| Docker Hub | fishcpy/skyimage:latest | 默认 |
| GHCR | ghcr.io/fishcpy/skyimage:latest | 海外 |
| CNB | docker.cnb.cool/nxtcorex/skyimage:latest | 国内 |
使用 CNB 或 GHCR 镜像时,只需替换 docker-compose.yml 中的 image 字段即可,例如:
image: docker.cnb.cool/nxtcorex/skyimage:latest
也可以直接拉取:
# CNB(国内推荐)
docker pull docker.cnb.cool/nxtcorex/skyimage:latest
# GHCR
docker pull ghcr.io/fishcpy/skyimage:latest
Docker 部署会挂载以下目录:
./storage/data - 数据库文件目录./storage/uploads - 上传文件目录./.env - 配置文件(安装后自动保存数据库配置)注意:数据库类型与连接信息以
.env为准。请勿在docker-compose.yml的environment:中设置DATABASE_TYPE等变量——环境变量优先级高于.env,会在容器重启后覆盖迁移/安装写入的配置,导致"迁移成功但重启后又切回旧数据库"。若目标 MySQL/PostgreSQL 运行在宿主机,容器内请使用host.docker.internal代替127.0.0.1。
前往 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 |
.env.example 为 .env 并修改配置./skyimage(Linux/macOS)或 skyimage.exe(Windows)http://localhost:8080 完成安装向导git clone https://github.com/fishcpy/skyImage.git
cd skyImage
pnpm install
pnpm build
cp .env.example .env
编辑 .env 文件,修改以下配置:
HTTP_ADDR=:8080 # 服务监听地址
STORAGE_PATH=storage/uploads # 文件存储路径
PUBLIC_BASE_URL=http://your-domain.com # 公网访问地址
FRONTEND_DIST=dist # 前端构建产物目录
go run ./cmd/api
启动后访问 http://localhost:8080 进入安装向导页面。
安装向导第一步可选择「从 Lsky Pro 开源版导入」,把旧站数据迁移到 SkyImage:
database.sqlite 所在文件夹)。storage/app/uploads 文件夹),导入时会按原路径把图片文件拷贝到新站点,图片链接路径保持不变。安装向导可选择数据库类型;运行中可在 管理后台 → 系统设置 → 数据库 将数据迁移到另一种数据库(例如 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(或管理端开启「清空目标表」),否则会拒绝迁移storage/ 下以下支持情况按当前代码中的存储驱动实现统计;AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云通过 S3 兼容存储驱动接入。
| 支持状态 | 存储类型 |
|---|---|
| 支持 | 本地存储、AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云、WebDAV、MinIO |
| 未测试 | FTP、SFTP |
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的布局和部分逻辑
本项目(main 分支及后续开发)采用 GNU Affero General Public License v3.0 (AGPL-3.0)。
历史代码说明:skyimage-MIT 分支中的旧代码仍按 MIT 许可证 开源,可单独使用该分支获取 MIT 许可版本。
Content type
Image
Digest
sha256:f6fed3110…
Size
28.8 MB
Last updated
about 2 months ago
docker pull fishcpy/skyimage