在自媒体写作、博客更新,或者平时做一些自动化流程时,图片存储一直都是个绕不过去的问题。

比如这些情况,很多人其实都碰到过:

  • 免费图床用着省心,但稳定性完全看缘分,哪天挂了都不奇怪

  • 商业对象存储虽然成熟,但流量费、请求费、存储费长期算下来也不是小数目

  • 本地存图最安心,可一旦要外链到博客、文章或者工作流里,管理和访问体验又不总是顺手

  • 一些开源图床要么太老、要么缺维护,要么很多功能得付费版才能完整用起来

如果你本身就在用 NAS,那最后大概率都会想到同一个方向:干脆自己搭一个图床。

今天这篇文章想分享的,就是一个挺适合 NAS 场景的项目——云图

它是一个简单、开放,而且功能相当完整的自托管图像托管方案。对于极空间 NAS 用户来说,拿来做博客配图、自媒体素材管理,甚至是自动化流程里的图片中转,其实都挺合适。


一、项目基本介绍

云图 可以理解成一个更偏现代化的自托管图床方案。

它不是那种只能“上传图片然后给你一个链接”的最小工具,而是尽量把图床、图片管理、相册分享、开放接口,甚至搜索和图片处理这些能力都整合到了一起。

从项目介绍来看,云图最初的出发点也很真实:作者在处理 N8N 相关图片流程时,发现现有一些开源项目要么太老、要么没人维护、要么很多功能需要 Pro 版本,于是结合自己有 NAS 的场景,做了这样一个更自由开放的图床项目。

这种思路其实很符合 NAS 用户的路子。因为很多时候,我们折腾自托管并不只是为了省钱,而是为了把数据和服务尽量掌握在自己手里。

云图的核心亮点

1. 基础图床能力比较完整

日常使用里最常见的这几类功能,它基本都覆盖了:

  • 多格式支持:支持上传各种格式图片及其他文件

  • 图片管理:支持瀑布流展示、批量圈选删除

  • 相册分享:支持相册分享能力

  • 目录管理:支持多级子目录

  • 安全保护:支持密码保护

  • 移动端适配:手机上也能正常使用

如果只是拿来做一个个人图床,这套功能其实已经很够用了。

2. 不只是上传,还做了更高级的能力

云图还有一些比较有辨识度的功能,比如:

  • 魔法搜索:基于 CLIP 本地小模型,支持自然语言搜索
    比如直接搜“蓝天白云”,就有机会找到对应图片

  • 流量看板:可以直观看到流量使用情况

  • 照片轨迹:在地图上展示照片拍摄轨迹

  • thumbhash 缩略图优化:提升图片列表加载体验

这几点放在一个自托管图床项目里,算是比较有想法的。

3. 接口和生态能力比较开放

如果你不只是想在网页里上传图片,而是还想接进自己的工作流,云图也提供了不少可用能力:

  • Base64 上传

  • SVG 转 PNG

  • 拖拽上传

  • 图片删除 / 列表接口

  • 实时 URL 参数处理图片

  • 随机图 / 指定图

  • 支持 PicGo 插件生态

比如图片链接后面直接加参数:

image.jpg?w=500&h=300&q=80&fmt=webp

就可以控制图片尺寸、质量和输出格式。这个能力拿来做博客配图,其实很实用。


二、界面展示 / 功能体验

从项目提供的演示来看,云图整体界面属于比较清爽、比较容易上手的类型,重点围绕上传、管理、搜索、分享这些高频功能展开。

1. 登录保护

如果你设置了 PASSWORD,系统会自动启用登录保护。
这一点很实用,尤其是你准备把图床开放到公网,或者至少不想让局域网里谁都能直接进入后台时。

2. 图片管理

图片管理支持:

  • 瀑布流展示

  • 批量操作

  • 多级目录

  • 删除管理

如果你平时博客配图比较多,这种展示和管理方式会比单纯在文件夹里翻图片轻松不少。

3. 魔法搜索

这是云图比较有辨识度的功能。

它不是只靠文件名搜索,而是支持自然语言搜索。比如你不用记得图片叫什么名字,直接搜“蓝天白云”“海边日落”这种描述,也有机会找到对应图片。

这个思路挺有意思,尤其是图库慢慢变大之后,价值会更明显。

不过这里也要提醒一句:

魔法搜索基于本地 CLIP 小模型,会额外占用一定资源。
如果你的极空间性能本身就比较紧张,建议先不开,后面再按需启用。

4. 图片处理与开放接口

云图支持通过 URL 参数实时处理图片,例如:

image.jpg?w=500&h=300&q=80&fmt=webp

这意味着你在博客、文章或者其他页面里引用图片时,可以直接控制:

  • 宽度

  • 高度

  • 质量

  • 输出格式

这类能力对于博客配图、页面优化或者 API 接入来说都很方便。

5. 相册分享与移动端适配

除了图片管理本身,云图也支持相册分享,移动端适配也做了。
这意味着它不只是适合“自己存自己用”,也适合拿来做简单的图片分享和日常移动端管理。


三、部署前准备

这篇文章以 极空间 NAS 为例。

在开始之前,建议先准备好下面这些内容。

1. 确认极空间已经开启容器功能

也就是你已经可以正常使用极空间里的 Docker / 容器管理能力。

2. 提前创建上传目录

建议先在 NAS 上创建一个持久化目录,比如:

/docker/cloudimgs/uploads

后面会映射到容器内部的:

/app/uploads

这个目录就是图床的核心数据目录,之后上传的图片都会保存在这里。哪怕容器删了,只要这个目录还在,数据就不会丢。

3. 检查端口是否冲突

项目默认示例使用的是:`3001`

如果你的极空间上已经有其他服务占用了这个端口,记得提前换成别的可用端口,比如 30118088 之类。

4. 提前想清楚两个开关

部署前最好先决定这两个功能要不要开:

  • PASSWORD:是否开启访问密码保护

  • ENABLE_MAGIC_SEARCH:是否开启 AI 魔法搜索

我的建议是:

  • 如果准备公网访问,密码保护最好开

  • 魔法搜索先别急着开,先把基础图床跑稳定,再看机器资源决定


四、部署流程

云图更推荐用 Docker Compose 部署。
不过对于极空间用户来说,实际操作里很多时候还是界面化创建容器更顺手,所以这里先写界面化方式,再补一个 Compose 版本。


第一步:拉取镜像

镜像地址:`qazzxxx/cloudimgs:latest`

在极空间容器管理里拉取完成后,开始创建容器。

image-bkwy.png

第二步:界面化创建容器

这里按照极空间用户更常见的操作方式来配。

1. 基础信息

  • 容器名称:cloudimgs-app

  • 重启策略:unless-stopped 或开启自动重启

2. 端口映射

  • 宿主机端口:3001

  • 容器端口:3001

如果你改了宿主机端口,比如改成 3011,后面访问地址也要对应改掉。

3. 存储空间映射

把前面创建好的目录映射进去:

  • 宿主机目录:/docker/cloudimgs/uploads

  • 容器目录:/app/uploads

  • 权限:读写

4. 环境变量

建议先填最基础的一组:

PUID=1000
PGID=1000
UMASK=002
NODE_ENV=production
PORT=3001
STORAGE_PATH=/app/uploads

如果你准备加访问密码,再补:

PASSWORD=你自己的访问密码

如果你想开启魔法搜索,再补:

ENABLE_MAGIC_SEARCH=true

另外还有两个常见可选项:

MAX_FILE_SIZE=104857600
THUMBNAIL_WIDTH=500

其中:

  • MAX_FILE_SIZE 用于限制最大上传文件大小

  • THUMBNAIL_WIDTH 用于控制列表缩略图宽度


第三步:启动并访问

容器启动后,在浏览器里访问,首次打开的时候比较慢,因为有个js文件老大了,加载的时间比较长;

http://你的极空间IP:3001

如果你设置了 PASSWORD,首次进入时就会先看到登录页面。登录状态会保存在浏览器本地存储中,后续访问会更方便一些。


五、命令方式补充

如果你更习惯用 Compose,也可以直接使用下面这份配置。

Docker Compose 示例

services:
cloudimgs:
image: qazzxxx/cloudimgs:latest
container_name: cloudimgs-app
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- ./uploads:/app/uploads:rw
environment:
- PUID=1000
- PGID=1000
- UMASK=002
- NODE_ENV=production
- PORT=3001
- STORAGE_PATH=/app/uploads
# - MAX_FILE_SIZE=104857600
# - THUMBNAIL_WIDTH=0
# - PASSWORD=your_secure_password_here
# - ENABLE_MAGIC_SEARCH=true

保存为 docker-compose.yml 后,在对应目录执行:

docker compose up -d

如果你是在极空间里用命令方式部署,也建议把 uploads 目录放在一个固定位置,方便后面做备份和迁移。


六、关键参数解释

下面这些参数,是实际部署里最常用、也最值得理解的。

PUID / PGID

这两个主要是权限相关项:

PUID=1000
PGID=1000

建议尽量填写你 NAS 实际运行用户对应的 UID / GID。
如果这里配错了,最常见的问题就是容器能启动,但上传失败,或者写入后的文件权限不对。

STORAGE_PATH

指定容器内部的图片存储路径:

STORAGE_PATH=/app/uploads

这里要和你的卷挂载路径对应起来,不然图片保存位置就会不对。

PASSWORD

设置访问密码。
如果留空,默认就不启用登录保护;如果填写了值,系统会自动启用登录保护。

示例:

PASSWORD=123456

是否开启 AI 魔法搜索。

ENABLE_MAGIC_SEARCH=true

功能确实很有意思,但会额外吃资源,建议按需开启。

MAX_FILE_SIZE

设置最大上传文件大小,单位是 Byte:

MAX_FILE_SIZE=104857600

也就是 100MB。

THUMBNAIL_WIDTH

控制列表缩略图宽度:

THUMBNAIL_WIDTH=500

如果你的图片很多,这个参数会明显影响列表页的浏览体验。


七、适合哪些场景

从功能和部署方式来看,云图比较适合下面这些使用场景。

1. 博客 / 公众号配图

这是最直接的用法。
你可以把它当成自己的私有图床来管理文章配图,不用长期依赖第三方平台的稳定性。

2. 图片素材库管理

如果你平时积累了很多截图、插图、封面、素材图,云图会比纯文件夹浏览更容易找,也更适合长期整理。

3. 自动化工作流中的图片中转

因为它支持接口和开放能力,所以也很适合接入:

  • N8N

  • PicGo

  • 上传脚本

  • 博客系统图片处理链路

4. 想把数据长期掌握在自己手里的 NAS 用户

这类项目最吸引人的地方,其实不只是“省不省钱”,而是你能自己决定:

  • 图片放哪

  • 怎么管理

  • 怎么访问

  • 怎么备份

对很多 NAS 用户来说,这种掌控感本身就很重要。


八、注意事项

1. 魔法搜索会更吃资源

ENABLE_MAGIC_SEARCH=true 虽然很有吸引力,但它依赖本地 CLIP 小模型。
如果你的极空间本身内存不算宽裕,建议先关闭,先把基础图床跑稳定。

2. 上传目录一定要做持久化和备份

图床最核心的数据其实不是页面,而是这个目录:`/app/uploads`

对应到宿主机后的实际目录,最好纳入你的备份策略里。

3. 权限项不要随便填

PUIDPGID 最好按 NAS 实际用户来填。
如果权限没配对,后面最容易出现的问题就是上传失败、文件权限异常,或者管理体验不顺。

4. 公网访问建议至少开启密码保护

如果你准备把图床开放到公网,PASSWORD 最好配置上。
后面如果你再配合反向代理、HTTPS、访问控制,那整体体验会更完整。

5. 演示站只是演示环境

项目给的演示和文档地址分别是:

不过要注意,演示环境是纯静态 Mock 模式,上传、删除等操作主要是做 UI 演示,不会保存真实数据。真正的效果还是要以你自己 NAS 上的实际部署为准。


九、总结

如果你想在极空间 NAS 上搭一个:

  • 图片数据自己掌控

  • 界面不算原始

  • 不只是能上传图片

  • 还能支持搜索、分享、API 和图片处理

的图床方案,那 云图 还是挺值得试试的。

它最吸引人的地方,不只是功能多,而是它比较像一个可以长期用下去的私有图片服务。对写博客、发公众号,或者做自动化流程的人来说,这种方案往往会比免费图床更踏实,也比很多老项目更顺手。

如果你和我一样,本身就已经在用 NAS,也希望图片这件事尽量掌握在自己手里,那云图这种方案确实值得折腾一下。