使用 Quartz 4 进行搭建。
- 通过 Syncthing 同步文件到云服务器中
- 在基于 Caddy 部署 Quartz 服务
- 定期构建新内容
云服务器部署 Syncthing
sudo apt-get install syncthing
# 当前用户名为 ubuntu
sudo systemctl start syncthing@ubuntu.service
修改 caddy 文件:
https://xxxx.com {
tls your@email
reverse_proxy http://127.0.0.1:8384 {
# 不加会导致 Host check fail
header_up Host {upstream_hostport}
}
}
重启 caddy
sudo systemctl restart caddy
绑定好 DNS 后,可以直接访问到 Syncthing 的网页端,这时最好快点配置好密码。 防火墙需要打开 8384 端口,不然会连接不上。配置好后就能与电脑上的 Syncthing 的链接,并同步 obsidian 笔记到服务器中了。
- Host check fail 问题,参考FAQ — Syncthing documentation。增加 header_up 透传 hostport
Quartz 部署
- 安装 nodejs
ubuntu 默认的 nodejs 版本不够,这里使用 GitHub - tj/n: Node version management 安装高版本的 nodejs。
# 安装 nodejs 版本管理工具
curl -L https://bit.ly/n-install | bash
# 或者先安装 npm,再使用 npm 安装 n
sudo apt-get install npm
sudo npm install -g n
# 安装 lts 版本 nodejs
sudo n lts
- 部署
git clone https://github.com/jackyzha0/quartz.git
# 太慢或者连不上可以使用 https://gitclone.com/github.com/jackyzha0/quartz.git
cd quartz
npm i # or npm i --registry=http://registry.npmmirror.com
npx quartz create
npx quartz build
修改 quartz.config.ts,主要把 baseUrl 给改了
- 部署
参考 Hosting,这里继续使用 Caddy。
example.com {
root * /var/www/ob
try_files {path} {path}.html {path}/ =404
file_server
encode gzip
handle_errors {
rewrite * /{err.status_code}.html
file_server
}
}
这里如果 public 在home 下面的话,caddy 无法读取对应文件,日志中可以看到 permission denied 。建议直接移动到 /var/www/ob
中,并把 owner 转换为 caddy
。
sudo chown -R caddy:caddy /var/www/ob
- 配置 crontab 进行周期性构建
sudo crontab -e
进入配置,并在后面追加:
0 1 * * * /home/ubuntu/quartz/build.sh >> /var/log/build_script.log 2>&1
build.sh 如下:
#!/bin/bash
set -e
cd /home/ubuntu/quartz/
npx quartz build
rm -rf /var/www/ob
mv public /var/www/ob
chown -R caddy:caddy /var/www/ob