สร้างและเปลี่ยนผู้ดูแลระบบคนแรก
Dee Wan ไม่มีการสมัครบัญชีสาธารณะ การติดตั้งใหม่จะยังไม่มีบัญชีจนกว่าจะมีผู้ใช้ claim link แบบใช้ครั้งเดียว ตัวติดตั้งผูกลิงก์นั้นกับ BOOTSTRAP_ADMIN_EMAIL ที่ normalize แล้วหนึ่งที่อยู่ หน้ารับสิทธิ์ไม่รับที่อยู่อื่น
ตั้งค่าวิธีเข้าสู่ระบบก่อน deploy
หัวข้อที่มีชื่อว่า “ตั้งค่าวิธีเข้าสู่ระบบก่อน deploy”ต้องมี BETTER_AUTH_SECRET และตัวติดตั้งเป็นผู้สร้าง เก็บ credential ของ provider ใน Worker secrets เท่านั้น ห้ามใส่ใน vars ส่วนค่าที่ไม่ลับให้ใส่ใน backend/wrangler.jsonc
| วิธี | การตั้งค่าที่ต้องมี |
|---|---|
| รหัสผ่าน | BETTER_AUTH_SECRET |
| Magic link | BETTER_AUTH_SECRET, secret RESEND_API_KEY และ var MAIL_FROM |
BETTER_AUTH_SECRET, var GOOGLE_CLIENT_ID และ secret GOOGLE_CLIENT_SECRET |
|
| GitHub | BETTER_AUTH_SECRET, var GITHUB_CLIENT_ID และ secret GITHUB_CLIENT_SECRET |
| Passkey | BETTER_AUTH_SECRET และ BACKEND_URL ที่ถูกต้อง (และ FRONTEND_URL เมื่อหน้าแอดมินมี origin ของตัวเอง) ใช้ claim การติดตั้งไม่ได้ |
สำหรับการติดตั้งที่ยังไม่มีผู้รับสิทธิ์ AUTH_INITIAL_METHODS เป็นรายการคั่นด้วยจุลภาค เช่น "password,magic_link,google,github" หากไม่มีค่านี้ วิธีเริ่มต้นมีเพียงรหัสผ่าน วิธีที่ระบุจะยังใช้ไม่ได้ถ้าขาด binding ที่จำเป็น passkey ใช้ได้เฉพาะคู่กับวิธีที่ claim การติดตั้งได้ เพราะเพิ่มพาสคีย์ได้ที่หน้า ความปลอดภัยของบัญชี หลังเข้าสู่ระบบครั้งแรก
หลังสร้างผู้ดูแลคนแรก superadmin เปลี่ยน registry ได้ที่หน้า การติดตั้ง ในส่วน วิธีเข้าสู่ระบบ เมนู การติดตั้ง ในแถบด้านข้างแสดงเฉพาะ superadmin API จะไม่ยอมเปิดวิธีที่ยังตั้งค่าไม่ครบ หรือทำให้ superadmin ที่ active ทุกคนไม่มีวิธีเข้าสู่ระบบที่ใช้ได้
รับสิทธิ์การติดตั้ง
หัวข้อที่มีชื่อว่า “รับสิทธิ์การติดตั้ง”เปิด claim link จากตัวติดตั้งแล้วเลือกวิธีที่ใช้ได้:
- รหัสผ่าน ตั้งรหัสผ่าน 12–128 ตัวอักษรให้ที่อยู่ที่ผูกไว้
- Magic link ส่งไปยังที่อยู่ที่ผูกไว้เท่านั้น หน้ารับสิทธิ์ไม่มีช่อง email
- Google ต้องส่งคืน email เดียวกันที่ยืนยันแล้ว
- GitHub ต้องส่งคืน email เดียวกันที่เป็น primary และยืนยันแล้ว
ชื่อ provider ไม่ได้จำกัดโดเมน email ตัวอย่างเช่น การเข้าสู่ระบบด้วย GitHub อาจยืนยันที่อยู่ที่ลงท้ายด้วย @google.com ได้ สิ่งสำคัญคือ email หลัง normalize ต้องตรงกันทุกตัวอักษร
Claim link และ challenge สำหรับยืนยันใช้ได้ครั้งเดียว และหมดอายุไม่เกิน 15 นาทีหลังสร้าง claim เดิม การเข้าสู่ระบบด้วยรหัสผ่าน magic link, Google และ GitHub ไม่สร้างบัญชี Provider ที่ยืนยันแล้วแต่ส่ง email ที่ระบบไม่รู้จักจะถูกปฏิเสธ มีเพียงกฎ Cloudflare Access ของไซต์เท่านั้นที่รับคนใหม่เข้ามาตอนเข้าสู่ระบบได้ (ดู เข้าสู่ระบบผ่าน Cloudflare Access)
ถ้าลิงก์ของการติดตั้งใหม่สูญหายหรือหมดอายุ ให้สร้างลิงก์ใหม่สำหรับที่อยู่ที่ตั้งค่าไว้:
npm run claim:link -- --remote --bootstrap --email owner@example.comหากไม่มี --bootstrap คำสั่งนี้เป็นทางกู้คืนรหัสผ่านของ active superadmin เพียงคนเดียว และไม่สร้างบัญชีแรก ดู การเป็นเจ้าของรหัสผ่านและการกู้คืน
หนึ่งบัญชี หลายวิธี
หัวข้อที่มีชื่อว่า “หนึ่งบัญชี หลายวิธี”callback ของ provider เปลี่ยน email หลักไม่ได้ เจ้าของที่ลงชื่อเข้าใช้เปลี่ยนผ่านหน้า ความปลอดภัยของบัญชี หลังยืนยันกล่องจดหมายใหม่ได้ ตัวตน Google หรือ GitHub ที่ยืนยันแล้วและมี email หลัง normalize เดียวกันจะเชื่อมกับบัญชีเดิมแทนการสร้างบัญชีใหม่ สำหรับ GitHub ที่อยู่ที่ตรงกันต้องเป็น primary และยืนยันแล้ว ระบบไม่เก็บ access token, refresh token หรือ ID token ของ provider
หากคุณรับสิทธิ์การติดตั้งครั้งแรกด้วยรหัสผ่าน การเข้าสู่ระบบด้วย magic link ในภายหลังจะยังคงรหัสผ่านเดิมที่ตั้งไว้ คุณใช้ได้ทั้งสองวิธีโดยไม่ต้องตั้งรหัสผ่านอีกครั้ง
เปลี่ยน superadmin
หัวข้อที่มีชื่อว่า “เปลี่ยน superadmin”ห้ามแก้ email ของบัญชีเก่า ให้ทำตามลำดับนี้:
- ใน การตั้งค่า → ผู้ใช้ ที่ส่วน เพิ่มผู้ใช้ กรอก email ของผู้แทน เลือกบทบาท แล้วกด เพิ่ม
- ที่อยู่นี้มีบัญชีอยู่แล้ว: ได้บทบาททันที ถ้าแถวแสดงว่ายังเข้าสู่ระบบไม่ได้ ให้กด สร้างลิงก์ แล้วส่งลิงก์ตั้งรหัสผ่านนั้นแบบส่วนตัว identity ของ Google หรือ GitHub ที่ยืนยันแล้วและ email ตรงกันก็เชื่อมตอนเข้าสู่ระบบได้
- ยังไม่มีบัญชี: ระบบไม่สร้างบัญชี แต่สร้างคำเชิญแทน (ดู เพิ่มคน) ผู้แทนเปิดลิงก์คำเชิญ พิมพ์ที่อยู่ที่ได้รับคำเชิญ กรอกรหัสจากอีเมลเมื่อระบบตั้งค่าอีเมลไว้ แล้วตั้งรหัสผ่าน บัญชีจึงจะเกิดขึ้นหลังจากนั้นเท่านั้น
- ตรวจว่าผู้แทนอยู่ในรายการ ผู้ใช้ และแถวแสดง เข้าสู่ระบบได้ (หรือ Cloudflare Access เมื่อตั้งค่า Access ไว้) คำเชิญที่ยังรออยู่ไม่ใช่บัญชีและเลื่อนสิทธิ์ไม่ได้
- ที่แถวของผู้แทนในส่วน ผู้ใช้ กดปุ่มรูปโล่ (ตั้ง … เป็นผู้ดูแลระดับสูง) แล้วยืนยัน ตั้งเป็นผู้ดูแลระดับสูง บัญชีที่ไม่มีวิธีเข้าสู่ระบบที่ใช้ได้จะถูกปฏิเสธ ระบบจะเพิกถอน session เดิมของบัญชีที่เลื่อนสิทธิ์
- เข้าสู่ระบบด้วยบัญชีใหม่ ตรวจว่ามี การติดตั้ง ในแถบด้านข้าง
- ที่หน้า การติดตั้ง ในส่วน ผู้ดูแลระดับสูง ปิดใช้งานบัญชีเก่า
การปิดใช้งานจะออกจากระบบบัญชีเก่า แต่เก็บเนื้อหาและประวัติอ้างอิงไว้ การเปิดใช้งานอีกครั้งต้องเข้าสู่ระบบใหม่ API ปฏิเสธการปิดใช้งานตัวเองและการเปลี่ยนแปลงที่ทำให้ไม่เหลือ active superadmin ที่มีวิธีเข้าสู่ระบบที่ใช้ได้
ความปลอดภัยของบัญชี
หัวข้อที่มีชื่อว่า “ความปลอดภัยของบัญชี”ผู้ใช้ที่เข้าสู่ระบบทุกคนเปิด ความปลอดภัยของบัญชี ได้จากเมนูตัวตน (/account/security)
รวมถึงผู้ใช้ที่ไม่มีสิทธิ์ในไซต์ หน้านี้ครอบคลุมเฉพาะบัญชีของคุณเอง: ภาษาของหน้าผู้ดูแลระบบ
การเชื่อมต่อ Google และ GitHub และพาสคีย์ของคุณ การตั้งรหัสผ่าน การตั้งค่า magic link
และวิธีเข้าสู่ระบบระดับ deployment ไม่อยู่ในหน้านี้
ก่อนลบวิธีเข้าสู่ระบบสุดท้ายของคุณ ให้มีวิธีเข้าสู่ระบบที่สอง หรือ superadmin คนที่สองที่เข้าสู่ระบบได้ สำหรับอุปกรณ์หาย ลืมรหัสผ่าน และ superadmin ที่ถูกล็อก ดู การเป็นเจ้าของรหัสผ่านและการกู้คืน
ภาษาของหน้าผู้ดูแลระบบ
หัวข้อที่มีชื่อว่า “ภาษาของหน้าผู้ดูแลระบบ”ที่ ภาษา เลือก English, ไทย, Русский, Español, Français หรือ Deutsch ตัวเลือก ตามเบราว์เซอร์ ใช้ภาษาของเบราว์เซอร์ และใช้ภาษาอังกฤษเมื่อไม่รองรับ ตัวเลือกนี้เป็นของบัญชีคุณ ใช้กับทุกไซต์และทุกอุปกรณ์ เปลี่ยนเฉพาะหน้าผู้ดูแลระบบ วันที่ และตัวเลข ไม่เปลี่ยนภาษาของเนื้อหาไซต์ ซึ่งตั้งค่าที่ การตั้งค่า → ภาษา หน้าที่ยังไม่ได้แปลจะแสดงเป็นภาษาอังกฤษ
ยกเลิกการเชื่อมต่อ provider สำหรับเข้าสู่ระบบ
หัวข้อที่มีชื่อว่า “ยกเลิกการเชื่อมต่อ provider สำหรับเข้าสู่ระบบ”หน้า ความปลอดภัยของบัญชี แสดงการเชื่อมต่อ Google และ GitHub ของคุณ การเชื่อมต่ออาจยังคงอยู่แม้การเข้าสู่ระบบผ่าน provider นั้นใช้ไม่ได้
เลือก ยกเลิกการเชื่อมต่อ ตรวจชื่อ provider และคำเตือนเรื่อง session แล้วจึงยืนยัน เซิร์ฟเวอร์ลบเฉพาะการเชื่อมต่อนั้นและเพิกถอน session CMS ทั้งหมดของบัญชี รวมถึง session ปัจจุบัน ใน operation เดียวที่เป็น atomic คุณต้องเข้าสู่ระบบใหม่ หน้าจอและ API นี้ไม่ส่งคืน token หรือ provider identity id รหัสผ่านและ verification link ที่ยังรอใช้จะไม่ถูกลบ
ผู้ใช้ทั่วไปลบ provider สุดท้ายของตนได้ Superadmin ก็ลบวิธีส่วนตัวสุดท้ายได้หากยังมี active superadmin คนอื่นเข้าสู่ระบบได้ เซิร์ฟเวอร์ปฏิเสธการยกเลิกใด ๆ ที่ทำให้ deployment ไม่เหลือ active superadmin พร้อมวิธีเข้าสู่ระบบที่เปิดใช้ ตั้งค่าครบ และใช้งานได้ วิธีที่ตั้งค่าไว้แต่ไม่มีการเชื่อมบัญชีที่ใช้ได้ไม่นับ ส่วน magic link ที่ตั้งค่าครบและเปิดใช้จะใช้ email ของผู้ใช้ เมื่อปฏิเสธ ระบบจะเก็บการเชื่อมต่อและ session ทั้งหมดไว้
การยกเลิกจะตัดการเชื่อมต่อบัญชี CMS แต่ไม่เพิกถอน authorization ของ OAuth application ที่ Google หรือ GitHub การเข้าสู่ระบบภายหลังด้วย email เดิมที่ยืนยันแล้วและได้รับอนุญาต สามารถเชื่อม provider อีกครั้งผ่าน flow การเข้าสู่ระบบเดิม หน้า ความปลอดภัยของบัญชี ไม่มีปุ่มเชื่อม provider
พาสคีย์
หัวข้อที่มีชื่อว่า “พาสคีย์”พาสคีย์ปิดอยู่จนกว่า superadmin จะเปิด (ดู พาสคีย์) จากนั้นแต่ละคนเพิ่มพาสคีย์ของตนเองที่หน้า ความปลอดภัยของบัญชี หลังเข้าสู่ระบบด้วยวิธีอื่นภายใน 24 ชั่วโมงที่ผ่านมา เข้าสู่ระบบด้วยพาสคีย์ ไม่ถามที่อยู่อีเมล คุณเปลี่ยนชื่อและลบพาสคีย์ของตนเองได้ วิธีเข้าสู่ระบบสุดท้ายของคุณลบไม่ได้ การลบพาสคีย์ไม่สิ้นสุด session ปัจจุบัน บัญชีที่ถูกปิดใช้งานเข้าสู่ระบบด้วยพาสคีย์ไม่ได้
หากต้องการตรวจการส่งอีเมลจริง callback ของ provider และพาสคีย์บน deployment จริง ให้ทำตาม การตรวจสอบการลงชื่อเข้าใช้ การตรวจในเครื่องไม่ได้พิสูจน์สิ่งเหล่านี้
ขั้นตอนถัดไป
หัวข้อที่มีชื่อว่า “ขั้นตอนถัดไป”พา เว็บไซต์แรกไปจนถึงการเผยแพร่เนื้อหา
ยังไม่เปิดตัว (pre-MVP) และยังไม่มีเวอร์ชันเสถียร
คอมมิตซอร์สโค้ด: fe23db481c422b40e317b92fc98116b4c0c26a87 (มีการแก้ไขที่ยังไม่คอมมิต)
วันที่สร้างเอกสาร (UTC): 2026-10-18T09:22:34.630Z
คอมมิตสำหรับอัปเกรด: ระบุไม่ได้: มีการแก้ไขที่ยังไม่คอมมิต. บันทึกการเปลี่ยนแปลง