Quartz 웹 문서 사이트 배포

docs/를 그래프 뷰·백링크·검색이 있는 웹사이트로 배포한다. 비개발 직군의 “읽기” 진입점이 된다.

실제 구성 (2026-07-24 확정)

원래 가이드는 별도 site repo + GitHub Pages였으나 다음 이유로 변경했다:

  • Tapplee org는 free 플랜 — private repo의 GitHub Pages 불가, 사내 한정 요건 위반.
  • 별도 repo가 private인 이 repo를 checkout하려면 PAT 관리가 필요 — 같은 repo 안 워크플로우면 인증 문제가 없다.

확정 구성: 이 repo의 quartz-deploy.yml이 빌드 시점에 Quartz를 클론docs/를 content로 주입하고, Cloudflare Pages(tapple-docs.pages.dev)로 배포한다. Quartz 코드는 커밋하지 않으므로 repo는 가볍게 유지된다(“별도 repo” 원칙의 목적 유지).

  • 콘텐츠는 허브 docs/ 전체 — ADR-0003 중앙화로 BE·FE 지식 문서가 docs/be/·docs/fe/에 있으므로 별도 aggregate 없이 한 사이트·한 그래프. (CLAUDE.md·레포 작업 문서는 사이트에 없음)
  • templates/, _private/, .obsidian은 Quartz 기본 ignorePatterns로 제외
  • 모든 응답에 X-Robots-Tag: noindex — Access 잠금 전 이중 안전장치
  • 시크릿이 없으면 배포 자체를 스킵 — 접근 제어 설정 전에 사이트가 뜨는 일 없음

최초 연결 (1회, 관리자)

  1. Cloudflare 계정에서 API 토큰 생성: My Profile → API Tokens → Create Token → “Edit Cloudflare Workers” 템플릿 또는 Custom(권한: Account.Cloudflare Pages Edit). Account ID는 대시보드 우측에서 복사.

  2. repo 시크릿 등록:

    gh secret set CLOUDFLARE_API_TOKEN -R Tapplee/tapple-docs
    gh secret set CLOUDFLARE_ACCOUNT_ID -R Tapplee/tapple-docs
  3. 첫 배포 실행: gh workflow run "Quartz Deploy" -R Tapplee/tapple-docs

  4. 배포 직후 접근 제어 잠금 (아래) — 이거 전까지 URL 공유 금지.

접근 제어 — Cloudflare Access (사내 한정)

Zero Trust는 50인까지 무료.

  1. Cloudflare 대시보드 → Zero Trust → Access → Applications → Add an application → Self-hosted
  2. Application domain: tapple-docs.pages.dev (경로 전체)
  3. Policy: Allow → Include → Emails ending in 회사 도메인 (또는 개별 이메일 목록)
  4. 저장 후 시크릿 창에서 접속 확인 — 이메일 OTP 로그인 화면이 나오면 잠금 성공

이후에는 docs/ 변경이 main에 push될 때마다 자동 재배포된다.