Publishing the Docs Site
This vault is published as a password-protected website, so authorized people can read the docs in a browser.
flowchart TB O["Obsidian<br/>(team edits)"] -- "Obsidian Git plugin:<br/>commit & push" --> G["Private GitHub repo"] W["GitHub web editor<br/>(technical guests)"] -- "edit / pull request" --> G G -- "push to main triggers<br/>Cloudflare Pages build" --> B["Quartz v4.5.2 build<br/>(.quartz/build.sh)"] B --> P["Cloudflare Pages"] P --> A{"Cloudflare Access<br/>sign-in check"} A -- allowed --> R["Readers"]
How it works
- Source of truth: this vault, in a private GitHub repo
- Site generator: Quartz v4.5.2, pinned. It keeps wikilinks, links to headings and question IDs (
[[Questions#^q-017|^q-017]]), backlinks, graph view, Mermaid diagrams, callouts and tags. - Config lives in the vault:
.quartz/quartz.config.ts(site settings, what’s excluded) and.quartz/quartz.layout.ts(page layout). Obsidian hides folders that start with a dot, so you won’t see them in the sidebar. - Build & deploy: Cloudflare Pages is connected to the GitHub repo and runs
.quartz/build.shon every push tomain. The site updates about 1–2 minutes later. Pushes to other branches get their own preview URL. - Front page: 00 Home becomes the site’s home page.
What is (not) published
| Published | Not published |
|---|---|
| Every note in the vault… | …with draft: true in its frontmatter |
Anything in a folder named private | |
99 Templates, .obsidian | |
Instructor-only files: instructor-key*, instructor_solution* |
To hide a note, add draft: true to its properties. To hide a whole area, put it in a private folder. Patterns are edited in .quartz/quartz.config.ts → ignorePatterns.
Access is all-or-nothing
Everyone allowed through Cloudflare Access sees every published note. If Microsoft or the firms get access, check internal notes (Questions, Partnership and Agreements, the internal box in Trial Program Brief) and mark them
draft: true, or set up a second, partner-facing site.
Editing
- Team (in Obsidian): edit as usual. The Obsidian Git plugin commits and pushes on a timer, or run Git: Commit-and-sync from the command palette.
- Edit this page: every page on the site has an ✎ Edit this page link under the title that opens the note in GitHub’s editor. Saving needs access to the repo. (Component:
.quartz/components/EditLink.tsx.) - Technical guests: give them access to the GitHub repo. They can edit in the browser (press
.on the repo page to open github.dev) and open a pull request. - Non-technical editors: they should comment rather than edit. If many people need to co-author, revisit an editable wiki such as Outline.
One-time setup checklist
1. GitHub
- Create a private repo:
mattrobertson15/frontier-engineering-vault - Push this vault to it
- In Obsidian: Settings → Community plugins → install Git (by Vinzent) → set Auto commit-and-sync interval (e.g. 10 min) and Pull on startup
2. Cloudflare Pages
- Cloudflare dashboard → Workers & Pages → Create → Pages tab (not Workers; look for “Looking to deploy Pages?“) → Connect to Git → authorize GitHub → pick
frontier-engineering-vault - Project name
frontier-docs, production branchmain - Build settings: framework preset None, build command
bash .quartz/build.sh, build output directorypublic. Node version comes from.nvmrc(22). - Save and Deploy, then confirm
frontier-docs.pages.devloads - Optional: Pages project → Custom domains →
docs.frontier-engineering.ai. Then updatebaseUrlin.quartz/quartz.config.ts.
3. Cloudflare Access (who can see it)
- Zero Trust → Access → Applications → Add → Self-hosted, covering both
docs.frontier-engineering.aiandfrontier-docs.pages.dev. Otherwise the pages.dev address stays public. - Also protect preview deployments: Pages project → Settings → Enable access policy
- Policy Allow: list individual emails, or an email domain (e.g. your team’s domain)
- Sign-in methods: One-time PIN by email works with no setup. Add Microsoft Entra ID or GitHub as identity providers for single sign-on.
- Free plan covers up to 50 users (check current Cloudflare pricing)
- Test in a private browser window: you should see a Cloudflare sign-in page first
Adding or removing a reader
Zero Trust → Access → Applications → the docs app → Policies → edit the email list. Changes apply on their next sign-in.
Troubleshooting
- Build failed: Cloudflare dashboard → the Pages project → Deployments → open the failed one for the build log. Usually a malformed frontmatter block.
- Note missing from the site: check for
draft: true, aprivatefolder, or an ignore pattern - Upgrading Quartz: v5 exists with a new config format. Stay on v4.5.2 until there’s a reason to move.
Related: Vault Conventions · 00 Home