คู่มือการเผยแพร่ Obsidian ขึ้นเว็บไซต์ด้วย Quartz (เข้าถึงได้ตลอด 24 ชม. แม้ปิดคอม)
เพื่อให้คุณสามารถเปิดดูหรือแชร์โน้ตใน Obsidian ได้จากทั้งบนมือถือและคอมพิวเตอร์ตลอดเวลาโดยไม่มีค่าใช้จ่าย และไม่ต้องเปิดคอมพิวเตอร์ทิ้งไว้ เราได้ทำการติดตั้งและตั้งค่า Quartz ให้คุณเรียบร้อยแล้วในเครื่องของคุณ โดยมีโครงสร้างการทำงานและขั้นตอนการเชื่อมต่อดังนี้ครับ
🛠️ โครงสร้างการทำงาน (Architecture Overview)
graph TD Obsidian[Obsidian Vault บนคอม] -- อัปเดตโน้ตอัตโนมัติ --> QuartzFolder[โฟลเดอร์ Quartz ในเครื่อง] QuartzFolder -- คำสั่ง npx quartz sync --> GitHub[GitHub Repository] GitHub -- อัปเดต/สร้างเว็บใหม่อัตโนมัติ --> CloudHost[Cloudflare Pages หรือ Vercel] CloudHost -- เปิดเข้าชมได้ 24 ชม. --> MobileBrowser[มือถือ หรือ เว็บไซต์]
สิ่งที่เราเตรียมไว้ให้คุณแล้วในเครื่องคอมพิวเตอร์นี้:
- ติดตั้ง Quartz ไว้ที่โฟลเดอร์
/home/xiantie/Projects/quartzเรียบร้อยแล้ว - สร้างระบบเชื่อมโยง (Symlink) โฟลเดอร์เนื้อหาของ Quartz (
content) ให้ดึงข้อมูลโดยตรงจาก Obsidian Vault ของคุณที่/home/xiantie/ObsidianData/xiantie - ตั้งค่าระบบลิงก์ ให้สอดคล้องกับ Obsidian (รูปแบบ
shortestlink)
เมื่อใดก็ตามที่คุณแก้ไขโน้ตใน Obsidian ข้อมูลจะมาปรากฏในโฟลเดอร์ Quartz ทันทีโดยที่คุณไม่ต้องคัดลอกไฟล์ซ้ำซ้อน
📋 ขั้นตอนที่คุณต้องทำต่อเพื่อให้เว็บไซต์เปิดใช้งานได้จริง
ขั้นตอนที่ 1: สร้าง Repository บน GitHub
- เปิดเว็บไซต์ GitHub และล็อกอินเข้าบัญชีของคุณ
- คลิกปุ่ม New เพื่อสร้าง Repository ใหม่
- ตั้งชื่อ Repository เช่น
my-quartz-garden - เลือกเป็น Public (เปิดเผยให้ทุกคนเห็นได้) หรือ Private (ถ้าต้องการเห็นเฉพาะตัวเอง)
- ห้าม ติ๊กเลือก Add a README file, .gitignore หรือ license (สร้างเป็น Repository เปล่า)
- เมื่อสร้างเสร็จแล้ว ให้คัดลอก URL ของ Repository (เช่น
https://github.com/USERNAME/my-quartz-garden.git)
ขั้นตอนที่ 2: เชื่อมโยงโฟลเดอร์ Quartz ในเครื่องเข้ากับ GitHub
เปิด Terminal บนคอมพิวเตอร์ของคุณแล้วรันคำสั่งเหล่านี้ (เปลี่ยน USERNAME และ my-quartz-garden เป็นของคุณ):
cd /home/xiantie/Projects/quartz
# เปลี่ยน URL ของ origin รีโพสิทอรีหลักให้ชี้ไปที่ GitHub ของคุณ
git remote set-url origin https://github.com/USERNAME/my-quartz-garden.git
# ตรวจสอบการเชื่อมต่อ
git remote -vขั้นตอนที่ 3: ล็อกอิน Git / GitHub และซิงค์ครั้งแรก (First Sync)
ในการส่งโค้ดขึ้น GitHub ครั้งแรก คอมพิวเตอร์ของคุณต้องได้รับการยืนยันตัวตนกับ GitHub ก่อน
วิธีที่ 3.1: ยืนยันตัวตนผ่าน GitHub CLI (แนะนำ)
เปิด Terminal แล้วรันคำสั่ง:
gh auth login- เลือก GitHub.com
- เลือกโปรโตคอล HTTPS
- ตอบ Yes เพื่อตั้งค่า Git credential helper ให้จำรหัสผ่านโดยอัตโนมัติ
- เลือก Login with a web browser จากนั้นคัดลอก One-time code ไปกรอกในเว็บเบราว์เซอร์เพื่อเชื่อมโยงบัญชี
วิธีที่ 3.2: ซิงค์โน้ตขึ้น GitHub
เมื่อล็อกอินเรียบร้อยแล้ว ให้รันคำสั่ง:
cd /home/xiantie/Projects/quartz
npx quartz syncขั้นตอบที่ 4: เชื่อมต่อเว็บไซต์บน Cloudflare Pages (แนะนำ)
Cloudflare Pages สามารถให้บริการเว็บไซต์แบบ Static Site ได้ฟรี รวดเร็ว และรองรับ Quartz ได้อย่างสมบูรณ์แบบที่สุด
- ล็อกอินเข้าใช้งาน Cloudflare Dashboard (หากยังไม่มีบัญชี สามารถสมัครได้ฟรี)
- ไปที่เมนู Workers & Pages (ทางซ้ายมือ) -> คลิกปุ่ม Create application -> เลือกแท็บ Pages
- คลิกปุ่ม Connect to Git
- ล็อกอิน GitHub ของคุณและเลือก Repository
my-quartz-gardenที่คุณเพิ่งสร้างขึ้น - ตั้งค่าการติดตั้ง (Build settings) ดังนี้:
- Production branch:
v5(หรือตามชื่อกิ่งหลักของคุณ) - Framework preset: เลือก
None - Build command: ใส่
npx quartz plugin install && npx quartz build - Build output directory: ใส่
public
- Production branch:
- คลิก Save and deploy
ระบบของ Cloudflare Pages จะทำการดาวน์โหลดซอร์สโค้ดจาก GitHub ของคุณและบิวด์ออกมาเป็นเว็บไซต์จริง โดยจะมอบ URL ฟรีให้กับคุณ เช่น https://my-quartz-garden.pages.dev ซึ่งคุณสามารถใช้ URL นี้เพื่อเปิดชมโน้ตผ่านมือถือหรืออุปกรณ์อื่น ๆ ได้ตลอด 24 ชม.
🔄 วิธีอัปเดตโน้ตในอนาคต
เมื่อใดก็ตามที่คุณจดโน้ตเพิ่ม หรือแก้ไขบทความใน Obsidian และต้องการอัปเดตขึ้นบนเว็บไซต์:
- เปิด Terminal ในเครื่องคอมพิวเตอร์ของคุณ
- รันคำสั่งเดียวสั้น ๆ:
cd /home/xiantie/Projects/quartz npx quartz sync - Quartz จะสลายลิงก์ชั่วคราว ดึงข้อมูลโน้ตล่าสุด ทำการ Commit และ Push ไปยัง GitHub ให้คุณทันที
- หลังจาก Push สำเร็จแล้ว Cloudflare Pages หรือ Vercel จะตรวจพบความเปลี่ยนแปลงและนำข้อมูลใหม่ไปประมวลผลเป็นเว็บภายในเวลา 1-2 นาทีโดยอัตโนมัติ
⚠️ การแก้ไขปัญหาเบื้องต้น (Troubleshooting)
1. ข้อผิดพลาด: Error: ENOENT: no such file or directory, lstat '.../content'
- สาเหตุ: เกิดจากการซิงค์รอบที่แล้วล้มเหลวกลางคัน (เช่น ติดปัญหาเรื่องการยืนยันตัวตน GitHub) ทำให้สคริปต์ของ Quartz ลบโฟลเดอร์เชื่อมโยง
contentออกไปชั่วคราวแต่ยังไม่ทันได้กู้คืนกลับมา - ✔️ วิธีแก้: รันคำสั่งนี้ใน Terminal เพื่อสร้างโฟลเดอร์เชื่อมโยงใหม่:
ln -sf /home/xiantie/ObsidianData/xiantie /home/xiantie/Projects/quartz/content
2. ข้อผิดพลาด: Failed: error occurred while fetching repository บน Cloudflare Pages
- สาเหตุที่ 1: ยังไม่ได้รันคำสั่ง
npx quartz syncในเครื่อง ทำให้บน GitHub ไม่มีข้อมูลอะไรเลย - สาเหตุที่ 2: Cloudflare Pages ไม่มีสิทธิ์ดึงข้อมูลจาก Private Repository ของคุณ
- ✔️ วิธีแก้: ไปที่ GitHub Applications Settings -> คลิก Configure ที่แอป Cloudflare Pages แล้วเลือกเพิ่มสิทธิ์ให้เข้าถึง repository
my-quartz-gardenได้
- ✔️ วิธีแก้: ไปที่ GitHub Applications Settings -> คลิก Configure ที่แอป Cloudflare Pages แล้วเลือกเพิ่มสิทธิ์ให้เข้าถึง repository
3. ข้อผิดพลาด: Could not resolve "../../.quartz/plugins" ในขั้นตอนบิวด์ Quartz
- สาเหตุ: โฟลเดอร์ปลั๊กอิน
.quartzไม่ได้ถูกนำส่งขึ้น GitHub ไปด้วย (เนื่องจากอยู่ในไฟล์ยกเว้น.gitignoreตามปกติของระบบเพื่อไม่ให้ไฟล์ขยะล้น) ทำให้เครื่องเซิร์ฟเวอร์ของ Cloudflare บิวด์เว็บไม่สำเร็จเพราะหาปลั๊กอินไม่เจอ - ✔️ วิธีแก้:
- เข้าหน้าแดชบอร์ด Cloudflare -> ไปที่โปรเจกต์ Pages ของคุณ
- ไปที่แท็บ Settings -> เลือก Build & deployments
- มองหาหัวข้อ Build configuration แล้วคลิก Configure settings
- แก้ไข Build command ให้ทำการติดตั้งปลั๊กอินก่อนการบิวด์:
- เปลี่ยนเป็น:
npx quartz plugin install && npx quartz build
- เปลี่ยนเป็น:
- กด Save แล้วไปสั่ง Retry deployment ใหม่อีกครั้ง