准备把nas作为主力了。终于成功了。编辑复杂。
Hexo-NAS 编辑器・项目备忘录
用途:出问题直接发给我,我可以快速复现场景、看懂整套环境,不用反复问你信息
一、硬件 & 平台
- NAS:极空间
- 硬盘:机械硬盘,存放 Hexo 博客文件
- 文章总量:2000 篇 Markdown 文章,_posts 支持子目录嵌套
- 前端页面:
hexo-nas.html,内置编辑器,列表加载 / 编辑 / 删除 / Git 推送
二、Docker 容器信息
- 容器名称:
node - 镜像:node 基础镜像
- 容器自启设置:✅【开机后自动启动此容器】已开启(极空间,无 unless-stopped 选项)
- CPU 分配:4 核
- 内存分配:16384MB(16G)
- 定时启停容器:❌ 全部不勾选
挂载目录(重要)
/hexo-editor:存放server.js、hexo-nas.html、start.sh(持久化,NAS 硬盘,重建容器不会丢失)/blog-hexo:Hexo 博客根目录,source/_posts 文章目录/ssh-key:SSH 密钥目录(挂载 NAS,重建容器密钥不丢失,仅需修复权限)
容器内预装依赖
- nodejs / express
- git
- openssh-client
- netcat-openbsd(nc,用于 Mihomo 代理推送的 SSH ProxyCommand)
三、核心文件说明
server.js- 后端服务,端口
3000 接口:
/api/post-meta:读取文章 frontmatter 元数据(带内存缓存 + NAS 重启后台预加载缓存;保存 / 删除文章自动清空缓存)/read:读取单篇 md 全文/save:保存文章,保存后清空缓存/delete:删除文章,删除后清空缓存/git-status:查看 git 状态/git-push:原生直连推送,执行脚本/blog-hexo/hexo_push_auto.sh/git-push-proxy:PC Mihomo SOCKS5 代理推送
- 代理推送逻辑:临时写入
/root/.ssh/config,使用 PC Mihomo 代理,推送完成自动恢复 ssh 配置 - PC Mihomo 信息:PC_IP=
192.168.0.103,SOCKS 端口7897;PC 端 Mihomo 需要开启【允许局域网连接】 - 注意:代理推送如果中途中断,ssh 配置不会自动回滚
- 后端服务,端口
start.sh:容器启动脚本,用于拉起node server.js;可选:增加 while 循环进程守护,node 崩溃自动重启/blog-hexo/hexo_push_auto.sh:Hexo 构建 + git 自动推送脚本
四、环境行为(NAS 重启流程)
- NAS 开机 → Docker 启动 → node 容器自动拉起
- 容器执行
start.sh,启动node server.js,监听 3000 端口 - server 启动 1 秒后,后台异步预扫描全部 2000 篇 md,填充文章元数据缓存
- 网页访问:首次加载慢(7~9 秒,机械盘 2000 文件扫描);后续刷新直接读内存缓存,毫秒级
- 编辑 / 保存 / 删除文章:自动清空内存缓存,下一次访问重新扫描获取最新列表
五、已知限制 & 坑点(故障排查重点)
- 极空间 Docker:仅 NAS 开机自动启动容器;如果 node 进程内部崩溃,容器不会自动重启,需要 start.sh 做进程守护
- 代理推送前提:PC 必须开机、Mihomo 运行,开启局域网允许连接;防火墙放行 7897 端口
- 代理推送异常中断风险:脚本中途卡死 / 断开请求,
/root/.ssh/config不会自动恢复,ssh 会一直走代理 - 容器删除重建会丢失:容器内部 git 全局配置 user.name/user.email(SSH 密钥在挂载目录,不会丢)
- 瓶颈:2000 篇 md + 机械盘,文件遍历 IO 慢;靠内存缓存解决页面加载速度
六、故障排查清单(出问题按顺序自查)
- 网页打不开:检查容器是否运行,端口 3000,查看容器日志看 node 服务是否正常启动
- 文章列表加载很慢:大概率缓存失效,首次全量扫描 2000 文件(机械盘固有问题)
- 代理推送失败:PC 是否开机、Mihomo 局域网开关、IP 和端口是否正确、容器内是否有 nc 命令
- 普通 git 推送失败:检查 git 仓库、ssh 密钥权限、hexo 脚本
- 保存 / 删除文章不更新列表:缓存未正常清空,查看 save/delete 接口返回
七、Git 相关
- 仓库:github ssh 协议推送
- 两种推送按钮:【推送(直连)】、【代理推送 (PC Mihomo) 绿色按钮】
- 前端页面:hexo-nas.html,按钮调用对应后端接口,弹出日志面板,可关闭日志
八、前端页面改动记录
hexo-nas.html 改动:
- 按钮精简压缩为 2 行:
博客已加载、新建、移动、删除、媒体 - Git 栏新增绿色【代理推送 (PC Mihomo)】按钮
- Git 执行后弹出日志面板,底部【关闭日志】一键收起日志面板
- 前端请求
/git-push-proxy后端接口