网络还能怎么玩(七):基于obsidian建立博客工作流(webdav)

阅读本篇之前需要首先阅读git工作流。
除非完全不想操作服务器,并且没有较严格的版本控制需求,否则还是建议使用 git 工作流。

技术提要

  • docker
  • obsidian
  • git
  • webdav

webdav

[!通义千问] 什么是webdav?
WebDAV(Web-based Distributed Authoring and Versioning)是一种基于HTTP/HTTPS协议的互联网工程技术标准,旨在提供一种标准化的方法来让用户通过网络进行分布式文件编辑、文件管理和文件协作。简单来说,WebDAV允许用户像操作本地文件系统一样,通过网络在远程Web服务器上创建、读取、更新和删除文件及目录。

hexo 框架本身提供了 hexo server 作为本地调试和部署的方式,我们只需在服务器上启动并将指定端口暴露即可访问。
在 server 启动期间,posts文件夹下的文件如有更改,会自动进行索引。
那我们放弃使用git管理posts文件夹,并使用webdav进行文件的直接更替,即可省去拉取代码等需要操作服务器的步骤。

nextcloud

一个支持webdav的私有部署云盘:官网

将nextcloud部署至服务器后,我们创建一个文章的文件夹作为工作区。Uckc.md.png
并复制我们之后链接所需的webdav地址。UeJE.md.png

obsidian

在obsidian的第三方插件中找到Remotely Save,它可以帮我们轻松同步本地与webdav服务器上的文件。
UKml.png
将我们上文复制的nextcloud webdav地址填入,并配置相应的账号密码,之后我们这个obsidian仓库的东西就会同步至我们在nextcoud中建立的新文件夹工作区。

Docker

因为我们将项目中的posts文件夹交给了webdav管理,那么首先需要在git中忽略posts文件夹。
Uzz2.png
然后将我们刚才在nextcloud上创建的obsidian文件夹挂载到博客容器中。
重写Dockerfile:

1
2
3
4
5
6
7
8
9
10
11
FROM node:latest

RUN npm install -g hexo-cli \
&& git clone https://$GITEAUSER:$GITEAPASS@...git \
&& cd /.../land \
&& npm install

CMD cd ocer-world \
&& git pull \
&& cd land \
&& hexo server -p 5000

同步

Ulh8.png
点击同步,即可直接将_posts文件夹内容更新。

非必要不要使用

由于没有版本管理,是可以一次点击就让网页瘫痪的。还是建议使用开头提到的git工作流。
当然,我们也可以另辟蹊径解决没有版本管理这个问题。
譬如使用定时备份或者hooks自动备份每一次修改,以达成数据保全的目的。