TomeCMS คืออะไร
TomeCMS เป็นระบบจัดการเนื้อหา (CMS) สำหรับเว็บภาษาไทยและภาษาอังกฤษ สร้างด้วย Astro ตัวระบบเรนเดอร์หน้าเว็บสาธารณะบนเซิร์ฟเวอร์ และมีหน้าแอดมินที่สร้างด้วย React ไว้ให้เจ้าของเขียนงาน ส่วนเว็บหรือแอปที่ทำด้วยเครื่องมืออื่นก็ดึงเนื้อหาที่เผยแพร่แล้วชุดเดียวกันไปใช้ผ่าน REST API ได้
ระบบนี้ทำมาให้คนคนเดียวดูแล เว็บหนึ่งมีเจ้าของได้คนเดียว เจ้าของเข้าสู่ระบบด้วย passkey และดูแลหน้าแอดมินเองทั้งหมด เจ้าของจะเขียนแค่ภาษาไทย แค่ภาษาอังกฤษ หรือทั้งสองภาษาก็ได้ เพราะบทความหรือเพจหนึ่งชิ้นมีได้ทั้งฉบับภาษาไทยและฉบับภาษาอังกฤษ
ทำอะไรได้บ้าง
หัวข้อที่มีชื่อว่า “ทำอะไรได้บ้าง”การเขียน
หัวข้อที่มีชื่อว่า “การเขียน”editor มีสิ่งที่บทความต้องใช้ครบ ทั้งหัวข้อ รายการ ข้อความอ้างอิง โค้ด ตาราง รูป ลิงก์ และการจัดตำแหน่งข้อความ ลิงก์แต่ละอันเลือกได้ว่าจะให้เปิดในแท็บใหม่หรือไม่ ไฟล์จากคลังไฟล์ใส่ลงในบทความเป็นการ์ดให้ผู้อ่านกดดาวน์โหลด ส่วนไฟล์ PDF จะเปิดในเบราว์เซอร์แทน
บทความมีฉบับร่าง พรีวิว การตั้งเวลาเผยแพร่ และช่องข้อมูลสำหรับ SEO ฉบับภาษาไทยกับฉบับภาษาอังกฤษของบทความเดียวกันใช้หมวดหมู่ร่วมกัน นอกจากบทความแล้วยังมีเพจ และคุณจัดเมนูส่วนหัวกับส่วนท้ายได้เอง
คลังไฟล์เก็บรูปไว้รวมกับเอกสาร (PDF, Word, Excel, PowerPoint, CSV, ไฟล์ข้อความ และ ZIP) จัดเป็นโฟลเดอร์ได้ มีช่องค้นหาและตัวกรองตามชนิดไฟล์ ตัวไฟล์จริงเก็บอยู่ใน object storage ที่รองรับ S3
การเผยแพร่
หัวข้อที่มีชื่อว่า “การเผยแพร่”หน้าเว็บสาธารณะเรนเดอร์บนเซิร์ฟเวอร์ใหม่ทุกครั้งที่มีคำขอ เบราว์เซอร์ของผู้อ่านโหลดสคริปต์นับสถิติขนาดเล็กเสมอ พร้อมกับสคริปต์ของปุ่ม “ธีม” ตอนที่เปิดใช้อยู่ และสคริปต์ของปลั๊กอินที่เจ้าของเปิดใช้
ที่อยู่ของบทความเป็นภาษาเดียวกับชื่อเรื่อง ชื่อภาษาไทยจึงได้ URL ภาษาไทย เมื่อเปลี่ยนที่อยู่ ที่อยู่เดิมจะ redirect ไปที่ใหม่แบบถาวร นอกจากนี้เว็บยังมี sitemap และ RSS feed
REST API ส่งกลับเฉพาะเนื้อหาที่เผยแพร่แล้ว และมีเอกสาร OpenAPI 3.1 ที่บอกโครงสร้างของ API ไว้ครบ ในโหมด headless TomeCMS จะซ่อนบล็อกของตัวเอง แต่ยังเปิดแอดมินกับ API ไว้ ให้เว็บอื่นดึงเนื้อหาไปแสดงแทน อ่านต่อได้ที่ใช้งาน Headless API
TomeCMS มีธีมมาให้สองแบบ คือ paper และ plain ที่เรียบกว่า เลือกได้ที่เมนู “หน้าตาเว็บไซต์” แล้วเลือก “ธีม” พร้อมพรีวิวที่ใช้บทความของคุณเอง แต่ละภาษามีสไลด์หน้าแรกของตัวเอง แต่ละสไลด์มีรูป ข้อความสั้น ๆ และปุ่ม ธีมจะแสดงเป็นแบนเนอร์นิ่งหรือเป็นสไลด์เลื่อนก็แล้วแต่ธีม
ทั้งแอดมินและหน้าเว็บสาธารณะมีโหมดสว่างและโหมดมืด ผู้อ่านเลือกเองได้ เว้นแต่คุณจะปิดตัวเลือกนี้ เว็บมีโลโก้ของตัวเอง (ใช้ SVG ได้) จะมีโลโก้อีกชุดไว้ใช้ในโหมดมืดด้วยก็ได้ และมีไอคอนของเว็บ
การเข้าสู่ระบบและปลั๊กอิน
หัวข้อที่มีชื่อว่า “การเข้าสู่ระบบและปลั๊กอิน”ระบบนี้ไม่มีรหัสผ่าน เจ้าของเข้าสู่ระบบด้วย passkey และเก็บ recovery code แบบใช้ครั้งเดียวไว้เผื่อวันที่อุปกรณ์หาย ตอนเปิดใช้ครั้งแรก ตัวช่วยตั้งค่าหกขั้นตอนจะพาตั้งค่าเว็บ และให้คุณเลือกที่อยู่ของหน้าแอดมินเอง
หน้าแอดมินแสดงเป็นภาษาไทยหรือภาษาอังกฤษตามภาษาหลักของเว็บ
ปลั๊กอินทำงานผ่าน hook ที่ตัวระบบกำหนดไว้ และทุกตัวปิดอยู่จนกว่าคุณจะเปิดเอง TomeCMS มีปลั๊กอินมาให้ห้าตัว ได้แก่ Cloudflare Turnstile ที่หน้าเข้าสู่ระบบ, Sticky Banner, Popup, Image lightbox และ Jev (TypeSafe AI) ที่ช่วยแนะนำระหว่างเขียน
การดูแลเว็บ
หัวข้อที่มีชื่อว่า “การดูแลเว็บ”Docker Compose รัน PostgreSQL กับ SeaweedFS ที่มากับระบบไว้เก็บไฟล์ หรือจะชี้การตั้งค่า S3 ไปที่ storage ภายนอกก็ได้ การสำรองข้อมูลเก็บฐานข้อมูลกับไฟล์มีเดียไว้ด้วยกัน และมีคำสั่งตรวจที่กู้ชุดสำรองลงคอนเทนเนอร์ชั่วคราวแล้วเทียบกับต้นฉบับ และมีสคริปต์ deploy ที่ติดตั้งทั้งเว็บลง VPS เครื่องเดียวให้
ส่วนประกอบของระบบ
หัวข้อที่มีชื่อว่า “ส่วนประกอบของระบบ”
หน้าเว็บสาธารณะ หน้าแอดมิน API ของแอดมิน และ content API สาธารณะ ทำงานอยู่ใน Node.js process เดียว การเข้าสู่ระบบด้วย passkey ก็ทำงานอยู่ใน process นี้ ข้อมูลที่ต้องอยู่ถาวรเก็บไว้นอก process นี้ PostgreSQL เก็บเนื้อหาและการตั้งค่า ส่วนไฟล์อยู่ใน storage ที่รองรับ S3 บนเซิร์ฟเวอร์เครื่องเดียว storage นี้คือ SeaweedFS ที่มากับระบบ หรือจะใช้บริการภายนอกแทนก็ได้
ปลั๊กอินจะติดต่อบริการนอกเซิร์ฟเวอร์ก็ต่อเมื่อคุณเปิดใช้แล้วเท่านั้น Turnstile ตรวจการเข้าสู่ระบบกับ Cloudflare ส่วน Jev จะส่งเนื้อหาบทความไปให้ TypeSafe AI เฉพาะตอนที่คุณกดปุ่มของมันเท่านั้น แล้วแนะนำหมวดหมู่ให้ พร้อมเลือกประโยคสำหรับข้อความย่อและข้อความสำหรับคำอธิบายในผลค้นหาจากเนื้อหาที่คุณเขียนเอง
ป้ายในแผนภาพเป็นภาษาอังกฤษ แผนภาพเดียวกันฉบับภาษาไทยอยู่ใน repository เป็นหน้าเว็บที่คลิกสำรวจได้ และมีมุมมองที่พาไล่ดูทีละเส้นทาง ที่ docs/tome-cms-overview.html ดาวน์โหลดแล้วเปิดในเบราว์เซอร์ได้เลย
สถานะตอนนี้
หัวข้อที่มีชื่อว่า “สถานะตอนนี้”TomeCMS อยู่ที่เวอร์ชัน 1.4.0 VPS จะติดตั้งแบบ managed ตัวติดตั้งรัน image ทางการที่ตรวจกับ attestation ของ release แล้ว และเจ้าของเว็บติดตั้งอัปเดตครั้งต่อ ๆ ไปได้จากเมนู “ระบบ” ในหน้าแอดมิน 1.0.0 เป็นรุ่น stable รุ่นแรก แต่ตัวติดตั้งของรุ่นนั้นติดตั้งบนเซิร์ฟเวอร์จริงไม่จบ การติดตั้งแบบ managed จึงเริ่มที่ 1.0.1 และเส้นทางการอัปเดตเริ่มจาก 1.0.1 ไป 1.0.2
การติดตั้งแบบ managed ผ่านการทดสอบกับ container จริงทุกครั้งที่มีการเปลี่ยนแปลง บน amd64 ใน CI และบน arm64 และ CI ยัง build image ของแอปแล้วรันการตรวจ image แบบเดียวกับตัวติดตั้งด้วย ผลการรันบนเซิร์ฟเวอร์ HTTPS จริงของทั้งสองสถาปัตยกรรมจะบันทึกไว้ในบันทึกประจำรุ่น 1.0.0 เมื่อทำเสร็จแต่ละครั้ง
การติดตั้ง 0.x จะกลายเป็นแบบ managed บนเครื่องเดิมไม่ได้ ถ้าจะย้ายไป 1.x ต้องใช้เซิร์ฟเวอร์ใหม่และย้ายเนื้อหาไปเอง ตามที่หน้าติดตั้งบน VPS อธิบายไว้

