0%

在 Debian 上使用 Dockge 优雅部署 Hexo 博客,并借助 CloudDrive2 实现跨端写作

最近在我的 J4125 (Debian) 宿主机上重新部署了之前闲置的 Hexo 博客。为了追求极简、易迁移以及跨设备写作的便利性,我抛弃了传统的本地环境安装,转向了 Docker (Dockge) + CloudDrive2 的全套容器化解决方案。

这套方案不仅保持了宿主机系统的纯净,还完美打通了手机、Windows 电脑和服务器之间的数据壁垒,今天把整个折腾的过程和踩坑经验记录下来。

为什么选择 Docker 而不是本地安装 Node.js?

对于极客玩家来说,“万物皆可 Docker” 绝不是一句空话。把 Hexo 塞进 Docker 容器里有两大无可替代的好处:

  1. 环境隔离:完全不需要在 Debian 上安装 Node.js 及其各种零碎的依赖包,宿主机永远保持干净。
  2. 极速迁移:未来换服务器,只需要把映射出来的数据文件夹(Volume)打包带走。在新机器上一键拉起,连各种配置和环境变量都丝毫不差。

核心部署:通过 Dockge 一键拉起 Hexo

我使用了 Dockge 这个优秀的 Docker Compose 可视化面板来管理项目。

在 Dockge 中新建一个名为 hexo 的项目,使用官方提供的极简 Node.js 镜像,并在启动时自动执行依赖安装和系统初始化。

docker-compose.yml 配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3.8'
services:
hexo:
image: node:lts-alpine
container_name: hexo_server
restart: unless-stopped
volumes:
# 将容器内的 /app 映射到宿主机的当前 data 目录
- ./data:/app
working_dir: /app
ports:
- "4000:4000"
# 这段命令会自动判断:如果没有博客文件就自动初始化,如果有就直接启动服务
command: sh -c "apk add --no-cache git && npm install -g hexo-cli && if [ ! -f _config.yml ]; then hexo init . ; fi && npm install && hexo server"

点击部署后,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
2
3
4
5
volumes:
- ./Config:/CloudNAS:shared
- /mnt/CloudDrive:/mnt/CloudDrive:shared
# 【新增下面这一行】,将宿主机的 Hexo 源码目录暴露给 CD2
- /opt/stacks/hexo/data/source:/HexoSource

第二步:在 CD2 中挂载本地目录

  1. 打开 CloudDrive2 的网页后台。
  2. 添加存储 -> 选择 本地文件夹 (Local Folder)。
  3. 路径直接选择刚刚映射进来的 /HexoSource。
  4. 在 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
2
3
4
deploy:
type: git
repo: https://ghp_你的Token@github.com/用户名/用户名.github.io.git
branch: main

最后,打开 Dockge 网页后台,进入 Hexo 容器的终端(bash),输入终极咒语:

1
hexo clean && hexo deploy -g

静待 1 分钟,全新的文章就已经在全球生效了!这就是独属于 HomeLab 玩家的快乐!