收起左侧

极简高颜值的私有云图库「云图-cloudimgs」,Docker 一键部署 + 强大 API 支持+picgo

26
回复
1586
查看
[ 复制链接 ]

2

主题

8

回帖

0

牛值

江湖小虾

2026-1-7 10:57:48 显示全部楼层 阅读模式

今天想和大家分享一个我最近开发的开源项目——云图 (CloudImgs)

这是一个极简风格的自建图床/云图库,支持 Docker 一键部署,完美适配 NAS 环境,并且拥有超灵活的 API 接口

云图

🛠️ 为什么要造这个轮子?

说实话,起初我并没有打算写个图床。

事情的起因是我在使用 N8N 处理自动化工作流时,遇到了大量的图片处理需求。我尝试寻找现有的开源解决方案,但结果并不理想:

  • 太老旧:很多曾经优秀的开源项目已经几年没更新了,UI 停留在十年前,代码维护也停滞了。
  • 要付费:好用一点的现代图床,往往需要购买 PRO 版本才能解锁高级功能(如图片压缩、格式转换等)。
  • 功能过剩或不足:有的太复杂,有的又太简陋,不支持 API 自动化调用。

既然我自己有 NAS,又懂一点代码,为什么不自己写一个呢?于是,云图 (CloudImgs) 诞生了。它主打自由、开放、极简,专为解决实际问题而来。


🖥️ 在线体验

先别急着看技术细节,大家可以直接上手体验一下 UI 和交互。

⚠️ 注:演示站为纯静态 Mock 模式,上传/删除仅演示 UI 交互,数据不保存。真实部署后,体验会更好(特别是缩略图加载)。


✨ 核心亮点:不仅仅是存图片

1. 颜值即正义:极简瀑布流 & 丝滑交互

我们抛弃了繁杂的后台界面,采用现代化的瀑布流布局。集成 ThumbHash 技术,在图片未完全加载时通过算法生成极小的占位哈希图,实现无感加载,告别“白屏”等待,视觉体验极佳。

2. 生产力工具:PicGo 插件无缝集成

对于写博客、Markdown 文档的朋友,图床的便捷性至关重要。云图原生支持 PicGo,我已经写好了对应的插件,安装即用。截图 -> 自动上传 -> 粘贴链接,一气呵成。

3. 开发者福音:强大的实时处理 API

这是我最自豪的功能之一。云图不仅仅是存储,还是一个即时的图片处理引擎。你可以通过 URL 参数实时处理图片:

  • 格式转换image.jpg?fmt=webp (自动转 WebP,节省带宽)
  • 尺寸调整image.jpg?w=500&h=300 (强制缩放)
  • 质量压缩image.jpg?q=80 (80% 质量压缩)

这就意味着,你上传一张 4K 原图,在不同设备上可以通过参数调用不同尺寸的缩略图,极大减轻前端压力。

4. 全能管理与安全

  • 多级目录:支持文件夹管理,井井有条。
  • 隐私保护:支持设置访问密钥,保护你的私有图片。
  • 全格式支持:不仅仅是 JPG/PNG,SVG 甚至其他文件格式也能传。
  • SVG 转 PNG:专为设计师和前端优化的功能。
  • 批量操作:支持圈选批量删除,效率拉满。

📸 更多界面预览

登录页面:简洁大方,支持密码保护。
登录页面

瀑布流管理图片:支持瀑布流展示管理图片。
瀑布流管理图片

批量操作:支持圈选多图一键操作。
批量操作

整页上传:支持多图拖拽一键上传。
整页上传

轨迹地图
轨迹地图

图片编辑
图片编辑

相册分享:一键生成分享链接,发给朋友。
相册分享

开放API:灵活调用开放API。
开放API


🚀 极速部署 (NAS/Docker)

作为 NAS 党,我深知部署难度的痛点。云图完全 Docker 化,只需要一个 docker-compose.yml 即可跑起来。

1. 创建 docker-compose.yml

services:
  cloudimgs:
    image: qazzxxx/cloudimgs:latest
    ports:
      - "3001:3001"
    volumes:
      - ./uploads:/app/uploads:rw # 图片数据存储位置
    restart: unless-stopped
    container_name: cloudimgs-app
    environment:
      - PUID=1000  # 替换为你 NAS 用户的 UID (终端输入 id -u 查看)
      - PGID=1000  # 替换为你 NAS 用户组的 GID (终端输入 id -g 查看)
      - UMASK=002
      - NODE_ENV=production
      - PORT=3001
      - STORAGE_PATH=/app/uploads
      # 👇 如果需要密码访问,请取消下面这行的注释并修改密码
      # - PASSWORD=your_secure_password_here

2. 启动服务

docker-compose up -d

启动后,访问 http://ip:3001 即可开始使用!

关于密码保护

如果你是在公网环境或者不想让别人随意查看,强烈建议在环境变量中配置 PASSWORD。配置后,访问系统需要输入密码,且状态会保存在本地浏览器中,既安全又不用频繁登录。


🔗 项目地址

开源不易,如果你觉得「云图」还不错,或者帮到了你的忙,希望能去 GitHub 点个 Star ⭐️ 支持一下!这也是我持续维护的动力。

如果你在使用过程中遇到任何问题,欢迎在 GitHub 提 Issue 或在评论区留言,我会尽快回复大家!

收藏
送赞 6
分享

0

主题

22

回帖

0

牛值

江湖小虾

2026-1-7 14:56:42 显示全部楼层

赞👍

3

主题

96

回帖

0

牛值

初出茅庐

2026-1-7 15:15:34 显示全部楼层

感谢分享

5

主题

23

回帖

0

牛值

江湖小虾

2026-1-7 16:09:42 显示全部楼层
元旦时刚部署使用,好用好看

0

主题

2

回帖

0

牛值

江湖小虾

2026-1-7 18:32:20 显示全部楼层

小白

插件不会装呀,大佬出个教程

8

主题

152

回帖

0

牛值

fnOS系统内测组

fnOS1.0上线纪念勋章飞牛百度网盘玩家

2026-1-8 10:16:40 显示全部楼层

好东西啊

0

主题

4

回帖

0

牛值

江湖小虾

2026-1-9 00:23:19 显示全部楼层

部署好了,但我是小白PicGo不会安装,出个教程吧,包括AI的接入教程,图库的路径我自定义的,进去后没有识别扫描到,是因为没有安装插件的原因?

图片路径的问题解决好了吗?无数据库的项目 图片直接反正对应的文件夹下直接就能读取出来的 picgo 直接在插件设置里 搜索cloudimgs安装上就可以 然后图床设置里 设置下域名和密码就可以用picgo了  详情 回复
2026-1-9 09:28

0

主题

4

回帖

0

牛值

江湖小虾

2026-1-9 00:33:36 显示全部楼层

真的很漂亮!超喜欢!!

7

主题

50

回帖

0

牛值

初出茅庐

2026-1-9 09:22:59 显示全部楼层

真不错,已经支持!!!

2

主题

8

回帖

0

牛值

江湖小虾

2026-1-9 09:28:48 楼主 显示全部楼层

图片路径的问题解决好了吗?无数据库的项目 图片直接放在对应的文件夹下直接就能读取出来的
picgo 直接在插件设置里 搜索cloudimgs安装上就可以
image.png

然后图床设置里 设置下域名和密码就可以用picgo了

image.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
路径已经好了,图片都出来了。但这个picgo的下载链接在哪里?下载后放到哪里才能调出“插件设置”这个入口?  详情 回复
2026-1-9 12:42

2

主题

8

回帖

0

牛值

江湖小虾

2026-1-9 09:29:57 楼主 显示全部楼层

感谢大家的支持,方便点个star,后续不断优化迭代

4

主题

25

回帖

0

牛值

江湖小虾

2026-1-9 10:38:52 显示全部楼层

感谢分享

0

主题

4

回帖

0

牛值

江湖小虾

2026-1-9 12:42:52 显示全部楼层
山姜x 发表于 2026-1-9 09:28
图片路径的问题解决好了吗?无数据库的项目 图片直接放在对应的文件夹下直接就能读取出来的
picgo 直接在插 ...

路径已经好了,图片都出来了。但这个picgo的下载链接在哪里?下载后放到哪里才能调出“插件设置”这个入口?
picgo是一个独立的工具应用 不需要的话可以不用弄的 目前这个项目还有的功能就都有,有很多用markdown的喜欢用picgo https://github.com/Molunerfinn/PicGo  详情 回复
2026-1-9 13:35

2

主题

8

回帖

0

牛值

江湖小虾

2026-1-9 13:35:18 楼主 显示全部楼层
秋天的色彩 发表于 2026-1-9 12:42
路径已经好了,图片都出来了。但这个picgo的下载链接在哪里?下载后放到哪里才能调出“插件设置”这个入 ...

picgo是一个独立的工具应用 不需要的话可以不用弄的 目前这个项目还有的功能就都有,有很多用markdown的喜欢用picgo
https://github.com/Molunerfinn/PicGo
picgo这个独立的插件怎么安装?还是不会,想装上它。 另外生成相册分享链接后那个复制按钮点击后复制不上链接。  详情 回复
2026-1-11 10:39

0

主题

4

回帖

0

牛值

江湖小虾

2026-1-11 10:39:07 显示全部楼层
山姜x 发表于 2026-1-9 13:35
picgo是一个独立的工具应用 不需要的话可以不用弄的 目前这个项目还有的功能就都有,有很多用markdown的 ...

picgo这个独立的插件怎么安装?还是不会,想装上它。
另外生成相册分享链接后那个复制按钮点击后复制不上链接。

0

主题

10

回帖

0

牛值

江湖小虾

2026-1-11 12:02:26 显示全部楼层
随机显示图片,不应该设置密码的,这样想调用随机图片没办法调用,公开又怕别人乱传图片
这一个已支持 并发布,可以拉取下镜像重新部署下就可以了  详情 回复
2026-1-13 17:19
嗯,确实随时带着密码参数也能访问到但是密码又泄露了,如果没有密码就能随机访问有感觉比较有风险,这块我想想怎么处理下  详情 回复
2026-1-12 08:40

2

主题

8

回帖

0

牛值

江湖小虾

2026-1-12 08:40:02 楼主 显示全部楼层
sendy 发表于 2026-1-11 12:02
随机显示图片,不应该设置密码的,这样想调用随机图片没办法调用,公开又怕别人乱传图片

嗯,确实随时带着密码参数也能访问到但是密码又泄露了,如果没有密码就能随机访问有感觉比较有风险,这块我想想怎么处理下
我的意思是,在设置了密码的情况下“随机显示图片的api可以不验证密码,直接正常调用” 您程序目前的验证机制是“开启了密码验证的情况下随机显示图片必须验证密码,这样的话 总不可能把密码给人家、这样会导致可  详情 回复
2026-1-12 21:31

0

主题

2

回帖

0

牛值

江湖小虾

2026-1-12 14:38:26 显示全部楼层

如果能压缩图片显示就好了,外网访问压力太大了

services: cloudimgs: image: qazzxxx/cloudimgs:latest ports: - "3001:3001" volumes: - ./uploads:/app/uploads:rw # 上传目录配置,明确读写权限 restart: unless-stopped co  详情 回复
2026-1-13 17:18
这个我来优化一下 图片列表内默认图片宽度到400,压缩一下减少带宽压力  详情 回复
2026-1-13 11:08

0

主题

10

回帖

0

牛值

江湖小虾

2026-1-12 21:31:08 显示全部楼层
山姜x 发表于 2026-1-12 08:40
嗯,确实随时带着密码参数也能访问到但是密码又泄露了,如果没有密码就能随机访问有感觉比较有风险,这块 ...

我的意思是,在设置了密码的情况下“随机显示图片的api可以不验证密码,直接正常调用”

您程序目前的验证机制是“开启了密码验证的情况下随机显示图片必须验证密码,这样的话

总不可能把密码给人家、这样会导致可以随意上传图片”

我们要保护的机制是“不让他们上传资源,但是可以随意访问资源”
嗯,代码逻辑已经优化了,后面找个时间发布一下版本就可以了  详情 回复
2026-1-13 08:57

2

主题

8

回帖

0

牛值

江湖小虾

2026-1-13 08:57:49 楼主 显示全部楼层
sendy 发表于 2026-1-12 21:31
我的意思是,在设置了密码的情况下“随机显示图片的api可以不验证密码,直接正常调用”

您程序目前的验 ...

嗯,代码逻辑已经优化了,后面找个时间发布一下版本就可以了

2

主题

8

回帖

0

牛值

江湖小虾

2026-1-13 11:08:37 楼主 显示全部楼层
哈雷x 发表于 2026-1-12 14:38
如果能压缩图片显示就好了,外网访问压力太大了

这个我来优化一下 图片列表内默认图片宽度到400,压缩一下减少带宽压力

0

主题

2

回帖

0

牛值

江湖小虾

2026-1-13 14:41:59 显示全部楼层

确实不错,摄影师比较喜欢

2

主题

8

回帖

0

牛值

江湖小虾

2026-1-13 17:18:46 楼主 显示全部楼层
哈雷x 发表于 2026-1-12 14:38
如果能压缩图片显示就好了,外网访问压力太大了

services:
  cloudimgs:
    image: qazzxxx/cloudimgs:latest
    ports:
      - "3001:3001"
    volumes:
      - ./uploads:/app/uploads:rw # 上传目录配置,明确读写权限
    restart: unless-stopped
    container_name: cloudimgs-app
    environment:
      - PUID=1000  # 替换为您 NAS 用户的实际 ID (id -u)
      - PGID=1000   # 替换为您 NAS 用户组的实际 ID (id -g)
      - UMASK=002
      - NODE_ENV=production
      - PORT=3001
      - STORAGE_PATH=/app/uploads
      # - MAX_FILE_SIZE=10485760 # 最大文件大小,默认 10MB
      - THUMBNAIL_WIDTH=500 # 瀑布流缩略图宽度(像素),默认 0 表示使用原图
      # 密码保护配置(可选)
      # - PASSWORD=your_secure_password_here

可以填写THUMBNAIL_WIDTH环境变量控制瀑布流缩略图的宽度进行压缩,减少带宽压力
非常感谢~  详情 回复
2026-1-14 09:10

2

主题

8

回帖

0

牛值

江湖小虾

2026-1-13 17:19:52 楼主 显示全部楼层
sendy 发表于 2026-1-11 12:02
随机显示图片,不应该设置密码的,这样想调用随机图片没办法调用,公开又怕别人乱传图片

这一个已支持 并发布,可以拉取下镜像重新部署下就可以了
非常好,感谢您。  详情 回复
2026-1-14 00:58

0

主题

10

回帖

0

牛值

江湖小虾

2026-1-14 00:58:35 显示全部楼层
山姜x 发表于 2026-1-13 17:19
这一个已支持 并发布,可以拉取下镜像重新部署下就可以了

非常好,感谢您。

0

主题

2

回帖

0

牛值

江湖小虾

2026-1-14 09:10:01 显示全部楼层
山姜x 发表于 2026-1-13 17:18
services:
  cloudimgs:
    image: qazzxxx/cloudimgs:latest

非常感谢~

0

主题

3

回帖

0

牛值

江湖小虾

2026-1-19 19:25:15 显示全部楼层

非常感谢~ 很适合摄影佬

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则