最近在我的 J4125 (Debian) 宿主机上重新部署了之前闲置的 Hexo 博客。为了追求极简、易迁移以及跨设备写作的便利性,我抛弃了传统的本地环境安装,转向了 Docker (Dockge) + CloudDrive2 的全套容器化解决方案。
这套方案不仅保持了宿主机系统的纯净,还完美打通了手机、Windows 电脑和服务器之间的数据壁垒,今天把整个折腾的过程和踩坑经验记录下来。
为什么选择 Docker 而不是本地安装 Node.js?
对于极客玩家来说,“万物皆可 Docker” 绝不是一句空话。把 Hexo 塞进 Docker 容器里有两大无可替代的好处:
- 环境隔离:完全不需要在 Debian 上安装 Node.js 及其各种零碎的依赖包,宿主机永远保持干净。
- 极速迁移:未来换服务器,只需要把映射出来的数据文件夹(Volume)打包带走。在新机器上一键拉起,连各种配置和环境变量都丝毫不差。
核心部署:通过 Dockge 一键拉起 Hexo
我使用了 Dockge 这个优秀的 Docker Compose 可视化面板来管理项目。
在 Dockge 中新建一个名为 hexo 的项目,使用官方提供的极简 Node.js 镜像,并在启动时自动执行依赖安装和系统初始化。
docker-compose.yml 配置如下:
1 | version: '3.8' |
点击部署后,Dockge 就会自动把运行环境和 Hexo 本体建立起来。
💡 旧博客迁移提示:
如果你像我一样,本地已经有以前废弃的 Hexo 源码,可以直接把旧源码(_config.yml、source文件夹、themes文件夹、package.json等)直接丢进data目录里。
⚠️ 核心警告:千万不要上传旧电脑里的node_modules文件夹!Alpine 容器底层架构不同,强行上传会导致报错。容器启动时会根据你的package.json自动下载最匹配的依赖包。
跨端写作的魔法:CloudDrive2 变身 WebDAV 服务器
环境搭好了,怎么写文章最方便?每次连 SSH 进服务器写显然反人类。如果把数据直接挂载到阿里云盘等网盘,又会因为 Hexo 高频的底层文件监听(用于网页热重载),极易触发网盘 API 风控。
我的终极方案是:数据依然留在本地 SSD,用 CloudDrive2 给它开 WebDAV 共享!
第一步:打通 CloudDrive2 与 Hexo 目录
既然 CloudDrive2 也是用 Docker 部署的,我们需要修改 CD2 的 docker-compose.yml,给它开一扇“窗户”看到 Hexo 的文件夹:
1 | volumes: |
第二步:在 CD2 中挂载本地目录
- 打开 CloudDrive2 的网页后台。
- 添加存储 -> 选择 本地文件夹 (Local Folder)。
- 路径直接选择刚刚映射进来的
/HexoSource。 - 在 CD2 的设置中开启 WebDAV 服务。
效果达成:此时,整个 Hexo 的 source 目录已经通过 WebDAV 暴露了出来。
- 在 Windows 上:你可以用 RaiDrive 将其映射为本地 Z 盘,直接用 Typora 写文章。
- 在手机上:可以用 Obsidian 等支持 WebDAV 的 App 随时随地记录灵感。
- 零网盘风控,零数据延迟,完美跨端!
最后一步:日常的发布流
当在本地或手机上通过 WebDAV 把文章写好并保存后,Hexo 后台会自动重载,可以在浏览器通过 http://服务器IP:4000 实时预览。
当你确认无误准备发布到 GitHub Pages 时,只需要在部署 Hexo 之前,在 _config.yml 底部配置好 GitHub 仓库地址和 Token:
1 | deploy: |
最后,打开 Dockge 网页后台,进入 Hexo 容器的终端(bash),输入终极咒语:
1 | hexo clean && hexo deploy -g |
静待 1 分钟,全新的文章就已经在全球生效了!这就是独属于 HomeLab 玩家的快乐!