明白了,你的目标是:
- 先把 Obsidian vault 导出成静态 HTML 文件(文件夹结构 + 网页)
- 然后把这些静态文件上传到自己的 VPS 上(比如通过 Nginx/Apache 托管成网站)
这样做的好处: - 完全离线可用(本地就能浏览)
- VPS 上托管后可以通过域名公网访问
- 不依赖第三方服务(如 Obsidian Publish、GitHub Pages 等)
- 成本低(只要有 VPS 就行),数据完全自己掌控
下面给你两种主流、可行的路径,都适合“本地导出 → VPS 上传”的场景。我会按简单程度排序推荐。推荐路径 1:用 Quartz(目前最适合 Obsidian 的现代方案,2026 年主流)Quartz 导出的就是纯静态 HTML + JS + CSS 文件夹,非常适合你这种需求。步骤总览
- 在本地电脑上用 Quartz 把 vault 转成静态站点
- 把生成的 public/ 文件夹整个上传到 VPS
- 在 VPS 上用 Nginx 指向这个文件夹 → 即可通过域名访问
详细操作(本地部分)先确保你已经安装了 Node.js(v20+)和 pnpm:
# 安装 pnpm(如果还没装)
npm install -g pnpm
创建 Quartz 项目并连接 vault:
# 方法1:用模板快速创建(推荐)
pnpm create quartz
# 回答提示时:
# 项目名随便起,比如 my-vault-site
# 是否初始化 git? Yes
# 是否安装依赖? Yes
cd my-vault-site
# 方法2:如果想从现有 vault 直接开始,也可以手动 clone
# git clone https://github.com/jackyzha0/quartz.git
# cd quartz
# pnpm install
把你的 Obsidian vault 放到 content/ 目录下(推荐 symlink 方式,避免复制大文件):
-
Windows:
cmd
指令长mklink /D "C:\path\to\quartz\content" "C:\path\to\your\obsidian\vault" -
macOS/Linux:
ln -s /path/to/your/obsidian/vault content
简单配置 quartz.config.ts(最关键几行):
ts
export const config: QuartzConfig = {
pageTitle: "我的知识库",
baseUrl: "https://your-domain.com", // 改成你 VPS 的域名或 IP
ignorePatterns: ["private/", ".obsidian/", "Templates/", "未完成/"],
// 其他保持默认即可
}
本地预览 & 构建:
# 开发模式(写笔记时实时看效果)
npx quartz develop
# 正式构建(生成静态文件)
npx quartz build
构建完成后,public/ 文件夹就是完整的静态站点(里面有 index.html、各笔记的 .html、assets 等)。
__________________
我已经将仓库推送到了github中,请问怎么生成网站?
你已经把 Obsidian vault 推送到了 GitHub 仓库(假设仓库名类似 your-username/your-vault 或 your-username/quartz-site),现在想生成一个可访问的静态网站(类似数字花园/知识库)。最简单、免费、兼容性最好的方式是使用 Quartz(专门为 Obsidian 设计的静态站点生成器) + GitHub Pages(GitHub 免费托管)。整个过程不需要服务器,只需几步配置 GitHub Actions 自动构建和部署。前提条件(检查一下)
- 你的仓库是 public(GitHub Pages 免费版要求 public 仓库;private 需要付费或用其他方式)。
- 仓库里有你的 Obsidian Markdown 文件(.md),最好放在根目录或 content/ 子文件夹。
- 你本地有 Node.js(v20+)安装好(用于测试)。
步骤 1:把仓库转为 Quartz 项目(最关键一步)Quartz 不是 Obsidian 插件,而是独立的工具。你需要让你的 GitHub 仓库“变成” Quartz 项目。方式 A:推荐 – 用 Quartz 官方模板直接创建(最干净)
-
去 https://quartz.jzhao.xyz/ → 点击 “Get Started” 或直接用这个命令(本地运行):
pnpm create quartz- 项目名:随便起(后面会连到 GitHub)。
- 初始化 Git:Yes。
- 安装依赖:Yes。
-
进入项目文件夹:
cd your-project-name -
把你的 Obsidian vault 内容复制/链接到 content/ 文件夹:
- 如果 vault 很大,用 symlink(推荐,避免重复文件):
- Windows: mklink /D content "C:\path\to\your\obsidian\vault"
Windows:mklink /D 内容 “C:\path\to\your\obsidian\vault” - macOS/Linux: ln -s /path/to/your/vault content
macOS/Linux:ln -s /path/to/your/vault 内容
- Windows: mklink /D content "C:\path\to\your\obsidian\vault"
- 或者直接复制 vault 里的 .md 和附件到 content/。
- 如果 vault 很大,用 symlink(推荐,避免重复文件):
-
编辑 quartz.config.ts(核心配置文件),至少改这几行:
ts
export const config: QuartzConfig = { pageTitle: "我的知识库 - wu cheng", // 网站标题 baseUrl: "https://your-username.github.io/your-repo-name", // 后面会确认 ignorePatterns: [".obsidian/", "private/", "Templates/"], // 忽略不想发布的文件夹 // 其他保持默认 } -
本地测试:
npx quartz develop浏览器打开 http://localhost:3333,看看效果(写笔记保存会热更新)。
-
提交并推送到你的 GitHub 仓库:
git remote add origin https://github.com/your-username/your-repo.git git branch -M main git push -u origin main
方式 B:如果你想直接在现有仓库上加 Quartz(不新建)
-
在仓库根目录运行:
npx quartz create -
然后把 vault 内容移到 content/,配置 quartz.config.ts,提交推送。
步骤 2:配置 GitHub Pages + Actions 自动部署
- 登录 GitHub → 进入你的仓库 → Settings(右上角齿轮) → Pages(左侧菜单)。
- Source:选 GitHub Actions(不是 Branch)。
- 保存。
- 创建部署 workflow(自动构建并发布):
- 在仓库根目录创建文件夹 .github/workflows/(如果没有)。
- 新建文件 deploy.yml,复制下面内容(Quartz 官方推荐):
yaml
name: Deploy Quartz site to GitHub Pages
on:
push:
branches:
- main # 你的主分支名,如果是 master 改成 master
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # 需要完整 git 历史用于时间戳等
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Dependencies
run: npm ci # 或 pnpm install,如果用 pnpm
- name: Build Quartz
run: npx quartz build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: public
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
-
提交这个文件并推送:
git add .github/workflows/deploy.yml git commit -m "Add GitHub Pages deploy workflow" git push -
等待 1-5 分钟:去仓库 → Actions 标签,看 workflow 运行(绿色勾表示成功)。
-
访问你的网站:
- 默认地址:https://your-username.github.io/your-repo-name/
- 如果是用户主页仓库(仓库名必须是 your-username.github.io),直接 https://your-username.github.io/
步骤 3:后续维护
- 以后在 Obsidian 编辑笔记 → 保存 → 用 Obsidian Git 插件 commit & push(或手动 git push)。
- GitHub Actions 自动重新构建并更新网站(几秒到几分钟)。
- 想自定义域名?在 Pages 设置里加 CNAME(指向你的域名),DNS 解析到 GitHub。
常见问题快速解决
- 网站空白/404:确认 public/ 文件夹里有 index.html;Actions 是否成功运行。
- 图片不显示:确保附件在 content/assets/ 或正确路径;Quartz 会自动处理 。
- 链接失效:检查 quartz.config.ts 的 baseUrl 是否正确(带仓库名)。
- 私有笔记:用 frontmatter publish: false 或 ignorePatterns 过滤。
私有笔记:用 frontmatter publish: false 或 ignorePatterns 过滤。
_____________________________
安装了插件Quartz Syncer,又怎么操作?
安装了 Quartz Syncer 插件后,它的作用是让你直接从 Obsidian 里管理并发布笔记到你的 Quartz 站点(仓库),而不需要手动在本地运行 Quartz 的 build 命令。它通过 GitHub API 实现单向同步(Obsidian → Quartz 仓库),支持选择性发布、Dataview/Excalidraw 等插件兼容、预览变更等。这是目前最方便的 “Obsidian 内一键发布到 Quartz” 方式,尤其适合你已经把 Quartz 项目推到 GitHub 的情况。前提检查
- 你已经 fork 或创建了一个 Quartz 仓库(基于 https://github.com/jackyzha0/quartz),并推送到 GitHub。
- 仓库是 public(GitHub Pages 免费要求)。
- 你的 Obsidian vault 里有想发布的笔记(.md 文件)。
- Quartz Syncer 插件已安装并启用(社区插件搜索 “Quartz Syncer”)。
步骤 1:生成 GitHub Personal Access Token(PAT) (生成 GitHub 个人访问令牌(PAT)插件需要这个 token 来通过 API 推送文件到你的仓库。)
-
登录 GitHub → 右上角头像 → Settings → Developer settings(最底部) → Personal access tokens → Tokens (classic)。
-
点击 Generate new token (classic)。
-
填写:
- Note:随便写,比如 “Quartz Syncer for Obsidian”
- Expiration:选 90 天或 no expiration(根据需要)。
- Scopes(权限):至少勾选 repo(全选 repo 相关权限最保险)。
-
生成后,立即复制 token(页面关闭就看不到完整 token 了)。
-
保存好这个 token(比如记事本或密码管理器),后面要粘贴到 Obsidian。
步骤 2:在 Obsidian 配置 Quartz Syncer
- 打开 Obsidian → 设置 → 社区插件 → Quartz Syncer → Options(或插件设置)。
- 填写以下字段(根据你的 GitHub 信息):
- GitHub Username:你的 GitHub 用户名(比如 wu-cheng 或 cheng_wu65341)。
- Repository Name:你的 Quartz 仓库名(比如 quartz-site 或 your-username.github.io,如果是个人主页仓库)。
- Branch:通常是 main 或 master(默认 main)。
- Personal Access Token:粘贴刚才生成的 token。
- Content Folder:Quartz 仓库里存放笔记的文件夹,通常是 content(默认 content,如果你的 Quartz 配置改了就填对应路径)。
- Publish Property:笔记 frontmatter 里用来标记“是否发布”的属性名,默认 publish(推荐保持默认)。
- 其他选项:
- Enable auto-publish on save:可选开启(保存笔记时自动检查并推送变更)。
- Theme Name:选一个 Quartz 支持的主题(tokyo-night、blueprint 等),用于预览。
- Sync Interval:自动同步间隔(分钟),可选设 5-10。
- 保存设置 → 插件会测试连接(如果 token 正确,会显示成功)。
步骤 3:标记并发布笔记
-
在想发布的 Obsidian 笔记里,加 frontmatter 属性: “`yamlpublish: true # 必须有这个(或你设置的属性名),值为 true title: 我的笔记标题 # 可选,但推荐
- 保存笔记。 -
打开 Quartz Syncer 的发布中心:
- 左侧侧边栏会出现 Quartz Syncer 图标(或命令面板 Ctrl+P 输入 “Quartz Syncer: Open Publication Center”)。
- 点击打开 Publication Center(发布中心)。
-
在发布中心你会看到分类:
- Unpublished notes:vault 里有 publish: true 但 Quartz 仓库里还没的笔记。
- Changed notes:已发布但本地改动的笔记。
- Published notes:已同步的。
- 勾选想发布的笔记 → 点击 Publish 或 Sync 按钮。
-
插件会:
- 比较差异。
- 通过 GitHub API 推送变更(添加/更新/删除笔记)。
- 可能创建两个 commit(一个加文件,一个更新)。
- 完成后显示成功。
步骤 4:让 GitHub Pages 自动部署站点Quartz Syncer 只负责把笔记推到仓库的 content/ 文件夹,不会自动 build 站点。你需要 GitHub Actions 来 build Quartz 并部署到 Pages。
- 在你的 Quartz 仓库里创建 .github/workflows/deploy.yml(如果没有):
yaml
name: Deploy Quartz to GitHub Pages
on:
push:
branches: [ main ] # 你的主分支
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Dependencies
run: npm ci # 或 pnpm install 如果你用 pnpm
- name: Build Quartz
run: npx quartz build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: public
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
- 提交推送这个 workflow 文件。
- 去仓库 → Settings → Pages:
去仓库 → 设置 → 页面:- Source → 选 GitHub Actions。
- 保存。
- 推送笔记后,Actions 会自动运行 build → 部署。几分钟后站点就更新了。
访问地址:https://你的用户名.github.io/仓库名/(或自定义域名)。常见问题 & 小贴士
- 发布中心没笔记:确认笔记有 publish: true frontmatter,且在 vault 里保存过。
- token 失效:过期或权限不够,重新生成一个(scope 至少 repo)。
- 图片/附件不显示:确保附件在 vault 的相对路径正确,Quartz 会自动处理 。
- Dataview 等不支持:Quartz Syncer 会预处理 Dataview 查询结果为静态内容(插件亮点之一)。
- 想撤销发布:在发布中心取消勾选 → Sync,会从 Quartz 仓库删除。
- 多设备:每个设备都要配置 token(或用 Obsidian Sync 同步 .obsidian 文件夹,但 token 敏感,建议手动)。
现在你就可以在 Obsidian 里写笔记 → 加 publish: true → 打开发布中心一键同步 → 网站自动更新了!超级方便。
Comments