ข้ามไปยังเนื้อหา
Dee Wan 1.0 ยังอยู่ระหว่างพัฒนาและยังไม่เปิดตัว (pre-MVP) — ดู ขอบเขตผลิตภัณฑ์ 1.0

แบ็กเอนด์อิสระ: ภาพรวม

แบ็กเอนด์อิสระคือรีโพซิทอรีสำหรับหนึ่งเว็บไซต์ที่คุณเป็นเจ้าของ ประกอบด้วย API Worker ที่ใช้ D1 ของตัวเอง เว็บไซต์ Astro เนื้อหาที่เผยแพร่แล้ว migration และสคริปต์ดีพลอย API อ่านเฉพาะฐานข้อมูลของตัวเอง หน้าที่ build แบบ static ไม่ต้องใช้อะไรจาก Dee Wan แต่ route ของ Blog การค้นหาในเว็บไซต์ ส่วน «รายการล่าสุด» ความคิดเห็นของผู้เยี่ยมชม ฟอร์ม และการแสดงตัวอย่างที่เปิดใช้เพิ่มเติม ติดต่อ Dee Wan ทุกครั้งที่มี request: ดู สิ่งที่ยังขึ้นกับ Dee Wan หน้านี้อธิบายซอร์สที่สร้างให้ ไม่ได้ยืนยันว่าการดีพลอยบน Cloudflare ผ่านการตรวจรับแล้ว

API และหน้าที่ build แบบ static คือ snapshot มีสิ่งที่เผยแพร่ไว้ ณ ตอนที่สร้าง และการเผยแพร่ครั้งหลังจะไปถึงก็ต่อเมื่อคุณสร้างใหม่และดีพลอยอีกครั้ง API สาธารณะของ CMS และ route ของเว็บไซต์ที่อ่านมัน ให้บริการเนื้อหาปัจจุบัน

API ที่สร้างขึ้นตรวจความยาวและรูปแบบข้อความตามกฎที่กำหนดไว้ เมื่อเปลี่ยนกฎ ต้องสร้างและดีพลอยแบ็กเอนด์ใหม่ ดูเอกสารอ้างอิง API

ไม่จำเป็นต้องแยกออกเพื่อปรับแต่ง อ่าน การขยายแบ็กเอนด์ สำหรับ registry ที่คุณดูแลและขั้นตอนขณะยังเชื่อมต่ออยู่ สัญญาการแยกออก อธิบายการหยุดสร้างใหม่แบบที่ระบบจัดการ

สามเรื่องที่ต่างกัน ซอร์สสร้างบนเครื่องของคุณ CMS ไม่คอมไพล์ซอร์สให้

ขั้นตอน วิธี สิ่งที่ทำ
สร้าง standalone backend npm run backend:generate (ด้านล่าง) เปิดสำเนาฐานข้อมูล SQLite ของ CMS ในเครื่องแบบอ่านอย่างเดียว สร้างและตรวจสอบโครงการกับฐานข้อมูลปลายทางชั่วคราว ไม่ push หรือดีพลอย ใช้ --model <id> เพื่อจำกัดเหลือหนึ่งโมเดล
สร้างและส่งมอบครั้งแรก npm run backend:deliver สร้างโครงการในเครื่อง ส่งมอบไปยังรีโพซิทอรีของคุณ และเริ่มดีพลอยครั้งแรก --media ย้ายสื่อสาธารณะไปยังพื้นที่เก็บของคุณ
ส่งมอบ commit ที่สร้างไว้แล้ว npm run wire:github -- --managed (การส่งมอบผ่าน GitHub) push โครงการที่สร้างไว้แล้ว ตรวจ commit ปลายทาง และสั่งดีพลอยคอมมิตเดียวกันนั้น
ดีพลอยจากรีโพซิทอรีที่มีอยู่ การตั้งค่า → ซอร์สโค้ดและการเผยแพร่ → ตัวเลือกสำหรับนักพัฒนา → แบ็กเอนด์ Standalone → Deploy เรียก build webhook แล้ว dee-wan-build.yml ในรีโพซิทอรีดึงนิยาม รันสคริปต์สร้างใหม่ที่คอมมิตไว้ในรีโพซิทอรีนั้น สร้าง commit และดีพลอย ต้องมีรีโพซิทอรีที่มีซอร์สที่สร้างแล้ว
สร้างซอร์สบน CMS การตั้งค่า → ซอร์สโค้ดและการเผยแพร่ → สร้างซอร์สด้วย GitHub ใช้ไม่ได้ Worker ของ CMS ไม่มีสภาพแวดล้อมบิลด์ซอร์ส และตอบ source_build_runtime_unavailable

การตั้งค่าซอร์สโค้ดและการเผยแพร่ ก่อนเชื่อมต่อที่เก็บโค้ด

หน้าต่างเทอร์มินัล
npm run backend:generate -- --site <site-id> --source <cms.sqlite> --dest <output-directory> --db <scratch.sqlite>

ไซต์ที่มี managed renderer release ที่ใช้งานอยู่ต้องใส่ --template-artifacts <dir> เพิ่ม คือสำเนา local ของ template artifact ของ release นั้น แต่ละไฟล์อยู่ที่ key ของตัวเอง (managed/<site>/<candidate>/<role>.json) เป็นไดเรกทอรีจริงและไฟล์ปกติ ระบบไม่ตามลิงก์สัญลักษณ์ หากไม่มีค่านี้ การสร้างจะถูกปฏิเสธด้วย managed_release_custody_unavailable npm run backend:deliver รับ flag เดียวกัน ผลลัพธ์จาก --model ไม่ export managed renderer และ npm run backend:generate:all ส่ง flag นี้ไม่ได้ ดังนั้นไซต์แบบนี้จะถูกปฏิเสธที่นั่น

การสร้างอ่านจากสแนปช็อต SQLite ชั่วคราวที่มีข้อมูลสอดคล้องกัน การแก้ไขใน CMS หลังจากนั้นไม่ขัดจังหวะการสร้างและไม่รวมอยู่ในผลลัพธ์ การสร้างหลายไซต์พร้อมกันใช้สแนปช็อตเดียวกัน การลบฟิลด์ออกจากสคีมาที่สร้างต้องใช้ --allow-destructive ทั้งการสร้างโมเดลเดียวและทั้งไซต์

แต่ละเส้นทางเขียนไดเรกทอรีหรือส่งมอบรีโพซิทอรี Git ไม่มีการดาวน์โหลด archive npm run backend:deliver ใช้การอนุญาต GitHub ผ่านอุปกรณ์ ข้อมูลเข้าถึงบัญชี Cloudflare และ writer token ตรวจสอบ deployment แล้วเสนอการแยกออก

คำสั่งเหล่านี้ทำงานในรีโพซิทอรี Dee Wan ส่วนรีโพซิทอรีที่สร้างให้มีคำสั่งของตัวเอง ดูใน Snapshot, migration, ดีพลอย และย้อนกลับ การส่งมอบผ่าน GitHub แยก GitHub App ของหน้าผู้ดูแลออกจากการอนุญาตอุปกรณ์ผ่านบรรทัดคำสั่ง

การส่งคำขอดีพลอยซ้ำด้วยรหัสความพยายามเดิมจะใช้ซอร์สที่ตรึงไว้และไม่เริ่มบิลด์ใหม่ หากรอคำตอบจาก webhook จนหมดเวลา บิลด์อาจเริ่มไปแล้ว Dee Wan จะคงสิทธิ์รันบิลด์และข้อมูลรับรองสำหรับแจ้งผลไว้ระหว่างรอ หากปลายทางปฏิเสธอย่างชัดเจนจึงจะคืนสิทธิ์รันบิลด์ ความพยายามที่ค้างยังหมดอายุตามระยะเวลาเดิม

รีโพซิทอรีที่ยังเชื่อมต่อสร้างใหม่เมื่อมีผู้สั่งเท่านั้น dee-wan-build.yml ดึงนิยามเว็บไซต์ด้วย build token สร้างใหม่ ตรวจสอบ สร้าง commit แล้วเรียก deploy-from-repository.yml สำหรับ commit นั้น นักพัฒนาแก้ไขส่วน owned/shared, commit และดีพลอยได้ขณะยังเชื่อมต่อ

รีโพซิทอรีที่แยกออกหยุดการอัปเดตที่ระบบจัดการ Workflow ของรีโพซิทอรีดีพลอยซอร์สที่ commit แล้วโดยไม่ดึงนิยามจาก CMS การแยกออกไม่ได้เพิ่มจุดขยาย ใช้ คู่มือการแยกออก การมีรีโพซิทอรีอย่างเดียวไม่ได้พิสูจน์ว่ามีสื่ออยู่ภายใต้การดูแลของคุณหรือดีพลอยสำเร็จ

หาก npm run regenerate หยุดกลางคันหรือการตรวจสอบขั้นถัดไปล้มเหลว ให้เรียกคำสั่งเดิมอีกครั้ง โฟลเดอร์กู้คืนชั่วคราวจะเก็บข้อมูลเจ้าของไฟล์ที่สร้างไว้จนการสร้างด้วย Prisma และการตรวจสอบส่วนขยายเสร็จสิ้น การลองใหม่จะแยกผลลัพธ์บางส่วนที่คำสั่งสร้างเองออกจากไฟล์ที่คุณดูแล หากคุณแก้ไขไฟล์ที่ระบบสร้าง ยังต้องแก้ข้อขัดแย้งก่อน ระบบกู้คืนจะไม่เขียนทับการแก้ไขนั้น เมื่อสำเร็จ คำสั่งจะลบสมุดบันทึกและไฟล์ชั่วคราวของตัวเอง

แต่ละไดเรกทอรีปลายทางมีคำสั่งสร้างใหม่ที่เขียนได้ครั้งละหนึ่งคำสั่ง คำสั่งที่สองจะถูกปฏิเสธขณะคำสั่งแรกทำงาน หากกระบวนการหยุดผิดปกติ การลองใหม่จะกู้สิทธิ์เขียนโดยอัตโนมัติ

Astro สร้างหน้าไว้ล่วงหน้าจาก pages.json ที่สร้างให้และให้บริการผ่าน Worker เว็บไซต์ ส่วน hero, rich text, media/text, feature-grid และ call-to-action ใช้ chrome/theme ที่ยอมรับ รีโพซิทอรีสร้าง navigation, footer, redirect, robots และ sitemap ถ้าเปิดไว้ หน้าที่ build แบบ static ใช้ snapshot หน้าใน commit ส่วน route ของ Blog หน้าค้นหา และหน้าที่มีส่วน «รายการล่าสุด» ส่วน «ค้นหาในเว็บไซต์» หรือความคิดเห็นของผู้เยี่ยมชม ให้บริการทุกครั้งที่มี request จาก public API ของ Dee Wan (/v1 บน host ของเว็บไซต์) จึงต้องใช้ Dee Wan ขณะทำงาน ส่วน API ที่ generate เองไม่ต้องใช้ ดูสิ่งที่ยังพึ่งพา Dee Wan และ compatibility flag

ส่วน owned ของ head/body, layout slot, section wrapper/override, Astro integration, island และหน้า /owned/ ขยายได้โดยไม่แยกออก การแสดงตัวอย่างปิดอยู่จนกว่าจะตั้ง previewApiOrigin อ่านรูปแบบหน้าใน ข้อกำหนดข้อมูลหน้า

รีโพซิทอรีไม่ได้สร้าง CMS admin ระบบผู้ใช้ ขั้นตอนตรวจทาน host ปลั๊กอิน การนำเข้า การสร้างด้วย AI เว็บฮุกขาออก ร่าง หรือประวัติ ไม่รวมไบต์ของไฟล์สื่อ เส้นทาง API สำหรับตรรกะธุรกิจที่กำหนดเอง หรือการจัดเตรียม binding ที่คุณเพิ่มเองโดยอัตโนมัติ Business logic และ route ที่ตรวจ schema อยู่ในส่วนขยาย owned

คำสั่ง npm run backend:exports จัดการทะเบียน graduation.exports.json ที่เจ้าของเว็บไซต์เก็บไว้เอง ทะเบียนบันทึก snapshot และ manifest ของสื่อแต่ละชุด การล้างไฟล์จะเก็บสื่อของชุดที่ใช้งานอยู่ ชุดก่อนหน้าสำหรับย้อนกลับ ชุดที่ปักหมุด ชุดล่าสุดตามจำนวนที่กำหนด และชุดที่ยังไม่หมดอายุ สื่อสาธารณะกับสื่อส่วนตัวแยกกัน และไฟล์ตัวอย่างของชุดที่เก็บไว้ก็ได้รับการป้องกันด้วย

สร้างทะเบียนให้ตรงกับพื้นที่เก็บของคุณ แล้วลงทะเบียนทุกชุดก่อนดีพลอย ใช้ activate หลังตรวจสอบว่าดีพลอยชุดนั้นสำเร็จแล้วเท่านั้น ชุดที่เคยใช้งานจะถูกเก็บไว้สำหรับย้อนกลับ ชุดที่ลงทะเบียนใหม่จะถูกปักหมุดไว้จนกว่าคุณจะใช้ unpin คำสั่ง policy --days 30 --keep 10 กำหนดอายุและจำนวนชุดล่าสุดที่ต้องเก็บ clean แสดงแผนโดยยังไม่ลบไฟล์ ส่วน clean --apply จึงลบสื่อของชุดที่หมดอายุและไม่มีการป้องกัน ไฟล์ที่ไม่อยู่ในชุดส่งออกใดเลยจะไม่ถูกลบ หาก manifest หายหรือเปลี่ยนไป ระบุชุดที่ใช้งานไม่ได้ หรือการตั้งค่าพื้นที่เก็บไม่ตรงกัน ระบบจะปฏิเสธการล้างไฟล์

หน้าต่างเทอร์มินัล
npm run backend:exports -- init --ledger ./exports --site <site-id> --public-dir /srv/media
npm run backend:exports -- register --ledger ./exports --artifact ./generated-site
npm run backend:exports -- activate --ledger ./exports --id <export-id>
npm run backend:exports -- clean --ledger ./exports --public-dir /srv/media

ต้องสร้างไดเรกทอรีไว้ก่อน เพิ่ม --private-dir สำหรับไฟล์ส่วนตัว หรือใช้ตัวแปร R2 ตามที่แสดงใน npm run backend:exports -- --help ข้อมูลรับรองอยู่ในเครื่องของเจ้าของ CMS ไม่ล้างพื้นที่เก็บนี้และไม่ถือข้อมูลรับรองของพื้นที่เก็บ

ตั้งค่า EXIT_EXPORT_LEDGER_DIRECTORY เมื่อเรียก backend:deliver เพื่อให้การย้ายสื่อ การดีพลอย และการล้างไฟล์ใช้ล็อกร่วมกัน ระบบลงทะเบียนชุดส่งออกก่อนดีพลอย และเปลี่ยนชุดที่ใช้งานกับชุดสำหรับย้อนกลับเมื่อการตรวจสอบการดีพลอยเดิมสำเร็จเท่านั้น หากอาจเริ่มดีพลอยไปแล้วแต่ยังยืนยันผลไม่ได้ ชุดใหม่จะยังถูกปักหมุด หากถูกปฏิเสธก่อนเริ่มดีพลอย ระบบจะถอนหมุดอัตโนมัติที่เพิ่งเพิ่ม แต่ละเว็บไซต์มีเส้นทางเก็บสื่อและทะเบียนแยกกัน จึงใช้บักเก็ตเดียวกันได้โดยไม่ลบสื่อของอีกเว็บไซต์ ทุกกระบวนการที่เขียนชุดส่งออกของเว็บไซต์เดียวกันต้องใช้ทะเบียนเดียวกัน เก็บทะเบียนไว้กับข้อมูลสำหรับกู้คืนเว็บไซต์

ทำตามคำแนะนำแบบทีละขั้นทั้งสี่ส่วน เริ่มจาก แก้ไขและเผยแพร่


ยังไม่เปิดตัว (pre-MVP) และยังไม่มีเวอร์ชันเสถียร
คอมมิตซอร์สโค้ด: e207e63239a627fbd2ae9c414ef7c6eb19fcfe5a (มีการแก้ไขที่ยังไม่คอมมิต)
วันที่สร้างเอกสาร (UTC): 2026-10-21T09:28:24.214Z
คอมมิตสำหรับอัปเกรด: ระบุไม่ได้: มีการแก้ไขที่ยังไม่คอมมิต. บันทึกการเปลี่ยนแปลง