Hugo & Obsidian 联动

使用最好的笔记管理软件 Obsidian 进行笔记整理和论文阅读记录,使用 Hugo 将这些内容进行渲染,使用 Git 作为多机器版本控制工具,最终发布到自己的网站,便于查看。

本文将介绍其中的配置和整体联动的思路。

配置自动更新

在 Gitee 的仓库设置中增加 WebHook,当 obsidian 管理的文件发生变动时向服务器发送一个post请求,通知服务器进行重新渲染 在服务器上,通过一个Python程序监听1024端口,完成拉取最新 Obsidian文件 和 静态页面的渲染两步:

from flask import Flask
import os

app = Flask(__name__)
@app.route('/api/update/blog', methods=['POST'])
def updateBlog():
    status = os.system('cd /home/trswnca/projects/obsidian-files && git pull && cd /home/trswnca/projects/hugo-site && hugo')
    return str(status)

if __name__ == '__main__':
    app.run(port=1024, threaded=True)

修改/etc/nginx/nginx.conf使其将 /api开头的请求转发到1024端口,也就是上面的Python程序进行处理:

server {
    listen 80;
    server_name trswnca.cc;
    location / {
        root /home/trswnca/projects/hugo-site/public;
        index index.html;
    }
    location /api {
        proxy_pass http://localhost:1024;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Last modified on 2024-08-05