极空间 NAS 搭建私人图床全流程

2026-05-19 22:37:24 2点赞 5收藏 0评论

折腾完整套流程后做的总结。从零搭建一个公网可访问、HTTPS 加密、支持博客嵌入的私人图床,无需公网 IP、无需付费 VPS,只需一台极空间 NAS 和一个域名。

方案概览

整套方案由四个部分串联而成:

  • EasyImage:图床主程序,跑在极空间的 Docker 容器里

  • Cloudflare Tunnel:内网穿透,把家里的图床暴露到公网且自带 HTTPS

  • 自有域名:DNS 托管在 Cloudflare,作为图床访问入口

  • PicGo:本地客户端,实现"粘贴图片自动上传 → 返回 URL"的工作流

最终效果:在 Typora 或 Obsidian 里写博客时,截图粘贴进去就自动上传到 NAS,并被替换为公网 URL,全程零手动操作。

为什么选这套方案

  • 数据自主:图片存在自己的 NAS 上,不依赖公有云图床的稳定性和政策

  • 零成本:除了域名(几块钱一年)外,Cloudflare Free 套餐 + 自有硬件,月成本为零

  • HTTPS 自动续期:Cloudflare 自动签发证书,再也不用折腾 Let's Encrypt

  • 全球 CDN 加速:Cloudflare 边缘节点缓存,博客读者访问图片速度比直连 NAS 快得多

  • 无需公网 IP:Tunnel 走的是长连接反向通道,运营商给你的是大内网也能用

适用场景与限制

适合个人博客图床、笔记图片仓库、技术文章配图等轻量场景。

不适合的场景:

  • 大量视频/音频分发(Cloudflare TOS 2.8 条款限制非 HTML 媒体的大流量分发)

  • 商业级图片站

  • 对国内访问延迟极度敏感的场景(Cloudflare 国内边缘节点高峰期不稳定)


第一步:域名接入 Cloudflare

如果域名是在 Cloudflare 直接注册的,跳过此步。否则需要把 DNS 托管过来。

  1. 登录 dash.cloudflare.com,点击 Add a site,输入你的域名,选择 Free 套餐

  2. Cloudflare 会自动扫描现有 DNS 记录,并分配两个 NS 服务器地址(形如 xxx.ns.cloudflare.com

  3. 登录你购买域名的服务商后台(阿里云 / 腾讯云 / Namecheap 等),将域名的 NS 服务器修改为 Cloudflare 提供的两个地址

  4. 等待 NS 生效,通常 5 分钟到数小时不等,Cloudflare 后台会提示 Active


第二步:极空间部署 EasyImage 图床

打开极空间 Docker → Compose → 新增项目,项目名填 easyimage,粘贴以下配置:

services: easyimage: image: ddsderek/easyimage:latest container_name: easyimage restart: unless-stopped ports: - '8631:80' environment: - TZ=Asia/Shanghai - PUID=1000 - PGID=1000 - DEBUG=false volumes: - /vol1/1000/Docker/easyimage/config:/app/web/config - /vol1/1000/Docker/easyimage/i:/app/web/i

两个 volumes 路径替换为 NAS 上的实际目录:先在 Docker 目录下创建 easyimage/config easyimage/i 两个文件夹,再用"查询路径"按钮把对应绝对路径填进去。/i 是图片实际存储位置,务必映射到本地,否则容器删除后图片全部丢失。

如果镜像拉取失败,在极空间 Docker → 设置 → 仓库里换一个国内镜像加速器。

部署成功后浏览器访问 http://极空间IP:8631,按引导完成初始化:

  • 环境检测全部通过

  • 数据库选择 SQLite(默认,无需额外配置)

  • 设置管理员账号和密码

  • 链接域名先随便填,后面会改


第三步:Cloudflare 创建 Tunnel

  1. 在 Cloudflare Dashboard 左侧菜单进入 Zero Trust

  2. 首次进入需要选择套餐,选 Free 计划。如提示绑定信用卡,国内用户可用支持外币的虚拟卡或 PayPal

  3. 进入 Zero Trust 后,左侧 Networks → Tunnels → Create a tunnel

  4. 连接器类型选 Cloudflared(不是 WARP Connector),点 Next

  5. 隧道名填 nas-tunnel 之类的标识,Save

  6. 下一页"Install and run a connector"中,选 Docker 标签

  7. 页面会显示一条形如 docker run cloudflare/cloudflared:latest tunnel run --token eyJh... 的命令,复制其中 --token 后面那一长串字符并妥善保存

  8. 先不要关闭这个页面,待会儿回来继续配置


第四步:极空间部署 cloudflared

回到极空间 Docker → Compose → 新增项目,项目名填 cloudflared

services: cloudflared: image: cloudflare/cloudflared:latest container_name: cloudflared restart: unless-stopped network_mode: host command: tunnel --no-autoupdate run --token 此处粘贴上一步复制的token environment: - TZ=Asia/Shanghai

network_mode: host 是关键——cloudflared 需要回连到极空间本机的 8631 端口,host 模式最省事。

部署完成后回到 Cloudflare 那个创建 Tunnel 的页面,刷新几秒后会看到 Connector 状态变为 HEALTHY(绿色),点 Next。


第五步:配置 Public Hostname

在 Tunnel 的 Public Hostname 配置页面填写:

字段内容SubdomainimgDomain下拉选择你的域名Path留空TypeHTTPURLlocalhost:8631

Type 选 HTTP 而非 HTTPS,因为 cloudflared 到图床走的是本机内网,图床本身没有 SSL。用户到 Cloudflare 那一段会自动启用 HTTPS,这正是我们想要的效果。

展开 Additional application settings → HTTP Settings

  • Connection Timeout 调到 60s

  • TLS Timeout 调到 30s

  • 其他保持默认

保存后访问 https://img.yourdomain.com,看到 EasyImage 登录页且地址栏带 HTTPS 小锁,说明链路打通。


第六步:图床后台安全配置(关键)

这一步是整个流程中最容易踩坑的部分,必须按顺序设置完整。

网站设置

  • 链接域名:改为 https://img.yourdomain.com(带 https,不带末尾斜杠)

  • 上传后图片直接 URL 就会以这个域名为前缀

安全设置(重点)

极空间 NAS 搭建私人图床全流程
  • 仅登录上传:打开,关闭游客上传权限

  • API上传:必须打开,否则 PicGo 等客户端无法工作

  • API 请求频率限制:测试阶段调高,避免自己被限流

这一步是最大的坑。后台上传正常但 PicGo 上传"进度走完无反应",多半是这里没开 API 上传。

上传设置

  • 限制图片类型:jpg / png / gif / webp

  • 单文件大小限制:建议 20MB 以内(Cloudflare Free Tunnel 大文件易超时)

  • 开启 WebP 转换:节省流量,加快加载

  • 开启图片压缩

用户管理

  • 进入个人资料,生成 API Token 并妥善保存,后续 PicGo 配置要用

  • 关闭注册功能,仅保留管理员账号


第七步:Cloudflare 侧加固和加速

回到 Cloudflare 主面板(不是 Zero Trust),选中你的域名进行配置。

SSL/TLS

  • Overview:模式选 Full(不要选 Full Strict,因为图床后端是 HTTP)

  • Edge Certificates:打开 Always Use HTTPS、Automatic HTTPS Rewrites

缓存加速

  • Caching → Configuration:Browser Cache TTL 设置为 1 个月

  • Rules → Cache Rules:新建规则,对 img.yourdomain.com/i/* 路径设置:

    • Cache eligibility:Eligible for cache

    • Edge TTL:1 month

  • 这样图片会缓存在 Cloudflare 全球边缘节点,博客访问速度显著提升

安全防护

  • Security → WAF:保持默认,免费版自带基础 DDoS 防护

  • Security → Bots:开启 Bot Fight Mode(免费)


第八步:配置 PicGo 实现自动上传

PicGo 是把工作流体验拉满的关键环节,强烈建议配置。

安装与配置

  1. 从官网下载安装 PicGo

  2. 进入 插件设置,搜索并安装 picgo-plugin-easyimage(专用插件,比通用 web-uploader 稳定得多)

  3. 如果搜索不到插件,需要先安装 Node.js,因为 PicGo 装插件依赖 npm

图床设置

图床设置中会出现 easyimage 选项,填写:

字段内容API地址https://img.yourdomain.com/api/index.phpToken后台用户资料中生成的 Token图床域名留空(使用 API 域名)图片质量85转 WebP按需开启

设为默认图床。

验证可用性

拖一张图片到 PicGo 主界面测试。如果"进度走完无反应",按以下顺序排查:

  1. 后台是否开启 API 上传:EasyImage 后台 → 安全设置 → 开启 API 上传(这是最常见的坑)

  2. Token 是否正确:复制时不要带空格

  3. 打开 PicGo 日志:设置 → 打开日志文件

    • Windows%APPDATA%/picgo/picgo.log

    • macOS~/.picgo/picgo.log

  4. 看具体报错:

    • 403 token error → Token 配置问题

    • 200 但解析失败 → 升级 EasyImage 镜像版本

    • timeout → 图片太大或 Tunnel 超时

工作流接入

配置 Typora:文件 → 偏好设置 → 图像

  • 插入图片时:上传图片

  • 上传服务:PicGo(app)

  • 设置 PicGo 路径

Obsidian 安装 image-auto-upload-plugin 插件,配置 PicGo Server 地址(默认 http://127.0.0.1:36677/upload)。

之后在编辑器中粘贴图片会自动上传并替换为公网 URL,整个流程无需手动操作。


博客中使用

上传图片后,EasyImage 会返回形如 https://img.yourdomain.com/i/2026/05/19/xxx.webp 的链接,直接复制到 Markdown 中即可:

打开浏览器 DevTools → Network 面板,查看图片请求的 Response Headers,第二次访问起应该能看到 cf-cache-status: HIT,说明 Cloudflare 缓存已生效。


常见踩坑点汇总

整个搭建过程中最容易翻车的几个地方,单独列出来:

PicGo 上传无反应:99% 是 EasyImage 后台没开启 API 上传,去安全设置里打开开关即可。

Cloudflare Tunnel 大文件上传超时:Free 套餐单文件 100MB 是理论值,实际超过 30MB 就容易超时。建议在图床后台限制单文件 20MB 以内,并开启图片压缩。

Token 等同密码:不要贴到公开仓库、不要截图分享。一旦泄漏,他人可以无限往你 NAS 写图。

域名解析没生效:NS 切换到 Cloudflare 后,可能要等几个小时才能 Active。可以用 dig your-domain.com NS 查看当前 NS 状态。

容器映射路径必须落到本地:图片目录 /i 一定要映射到 NAS 本地路径,否则容器一删数据全没。

SSL 模式选 Full 而非 Full Strict:图床后端是 HTTP(仅在本机),Full Strict 会因为后端无证书而握手失败。

国内访问偶尔卡顿:Cloudflare 国内边缘节点高峰期不稳定。如果博客主要面向国内读者且对速度敏感,可以考虑回源到 Cloudflare 套一层国内 CDN(七牛云、又拍云免费额度可用),或直接换用国内对象存储做图床。


后续可选优化

  • 定时备份:在极空间里跑一个 rclone 容器,定时把 easyimage/i 同步到阿里云 OSS / 腾讯云 COS 冷归档,防止 NAS 硬盘故障

  • 去重压缩:用 EasyImage 自带的相似图片检测,定期清理重复上传

  • 统计分析:Cloudflare Analytics 免费查看流量、命中率、地域分布

  • 多域名分流:再起一个 Tunnel 用 static.yourdomain.com,给其他服务做反向代理


总结

整套方案跑通后,运维成本几乎为零:

  • 极空间长期开机,容器自启

  • Cloudflare 自动续证书、自动 CDN 缓存

  • 写博客时无需关心图片在哪里、URL 怎么来

回头看最有价值的几个决策点:选 EasyImage 而非 Lsky Pro(避免维护 MySQL)、选 Cloudflare Tunnel 而非自建反代(避免公网 IP 依赖和证书续期)、选 picgo-plugin-easyimage 专用插件而非通用 web-uploader(避免配置踩坑)。每一步都选择了"维护负担最小"的那条路。

如果你也在用极空间或类似的国产 NAS,这套方案可以无脑套用。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

Cacivy

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
5
扫一下,分享更方便,购买更轻松