V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
qazzxxx
V2EX  ›  分享创造

我为 NAS 党手撸了一个极简且强大的开源云图库——CloudImgs(云图)

  •  
  •   qazzxxx ·
    qazzxxx · 2 天前 · 874 次点击

    今天想和大家分享一个我最近开发的开源项目——**云图 (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 或在评论区留言,我会尽快回复大家!

    1 条回复    2025-12-28 15:38:55 +08:00
    ryd994
        1
    ryd994  
       1 天前 via Android
    看起来和 immich 大部分重复,除了 immich 不能以 API 指定分辨率以外
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5643 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 06:26 · PVG 14:26 · LAX 22:26 · JFK 01:26
    ♥ Do have faith in what you're doing.