Hexo博客迁移到群晖nas的docker
Write by lyc at 2021-4-22
一、Hexo 迁移到 docker image
参考博文 Docker 部署Hexo
1.原 Hexo目录结构优化
1 | $ tree . |
为什么要把 source目录和 themes目录分离出来?
目的是为了 docker挂载数据卷。
因为docker container本身是无状态的,而我们的博客文章、主题是持久化的数据,需要映射到宿主机上。
未来我们更新文章、主题样式只需要更新宿主机的挂载目录,再重启容器即可完成文章的加载更新。
2.Hexo 制作成 docker image
2.1 服务器上登陆你的 docker hub账号
1 | $ docker login |
2.2 Dockerfile
1 | $ vim /data/wwwroot/www.lyc7456.com/data/Dockerfile |
FROM node:14.15.4
根据你所使用的node版本来调整。
2.3 docker bulid
1 | $ cd /data/wwwroot/www.lyc7456.com/data/ |
lyc7456/Hexo:1.0.1
用户名/仓库:TAG 根据自己的docker hub账号来调整。
2.4 本地测试 docker 容器
可以参考以下 docker-compose,或者直接使用 docker rum
,拉起一个容器,再访问其 4000 端口进行测试。
1 | $ cat /data/wwwroot/www.lyc7456.com/docker-compose.yml |
至此 Hexo docker 镜像封装完毕。
二、群晖Nas部署docker
1.群晖Nas获取root权限
首先获取群晖Nas root权限,控制面板配置 ssh启用。
1 | $ sudo -i |
2.安装 docker 套件
3.root登陆bash 获取镜像
直接从 bash 获取docker镜像,不要尝试在群晖控制台获取,控制台无法获取。
1 | $ docker pull lyc7456/Hexo:latest |
4.启动docker容器
又镜像启动容器
高级设置“卷”,这里就需要参考 docker-compose.yml ,把 source目录和 themes目录挂载到容器内部。当然,前提是这两个目录已经在群晖 File Staton 上创建好,并且传入你个人的博文和主题。
暴露端口 4000:4000
最后启动容器。
内网环境下,可以先直接用浏览器测试 http://nas:4000/
三、端口映射
在路由器上将nas:4000端口映射到外网即可通过 http://DDNS域名:4000
公网访问到 nas上docker Hexo站点了。
由于我们家用的宽带默认已被运营商封锁80,443端口,所以想要访问必须是指定其他的外网端口号。
那么我们可以通过公网另外一台Nginx服务器的七层反向代理将域名转发到自己的 DDNS域名:4000
即可实现域名80与443。
推荐直接用 CDN带端口回源,既获得了加速,又可以隐藏了真实服务器地址。
四、关于博文发布
我是通过Python检索本地要发布的文档 -> DS Drive 双向同步到 nas挂载的 source目录 -> Python ssh命令重启 nas docker container
可以充分发挥想象力,只要把 .md 文档提交到 nas挂载的 source目录,再重启 docker容器即可。
后期通过绘制一张图来描述。