# ชุดติดตั้งโฮสต์หลัก NKW 3D Robot Simulator

รุ่น2026.10.18-migration.3 · สำรองschema1 · โค้ดฐาน9b95d9af0e6a1e279e50a8c947e09ddff2ef1e5e

## ภายในชุด

- web/: เว็บไซต์จริงครบทุกโมดูล ไลบรารีBlockly/Three.js ฟอนต์ ภาพอ้างอิง สนาม คู่มือ และsource.zip/line-assets.zip
- INSTALL-MANIFEST.json: ขนาดและSHA-256ทุกไฟล์ของชุดติดตั้ง ยกเว้นตัวmanifestเอง
- verify_install.py: ตรวจไฟล์ก่อนติดตั้ง ใช้Python3มาตรฐาน ไม่ติดตั้งแพ็กเกจเพิ่ม
- start-windows.cmd: ตรวจชุดแล้วเปิดHTTPserverเฉพาะ127.0.0.1:8080 ต้องมีPython3พร้อมคำสั่งpy
- nginx.example.conf: ตัวอย่างค่าตั้ง ต้องแก้โดเมน/root/TLSตามโฮสต์จริง
- คู่มือสำรอง ย้ายข้อมูล และตรวจรับห้องเรียน

ชุดนี้ไม่มีข้อมูลนักเรียนของเบราว์เซอร์ผู้ใช้ ไม่ได้ติดตั้งFirebase/Google Login บัญชี หรือฐานข้อมูลส่วนกลาง สิทธิ์เข้าถึงของSitesไม่ได้ติดไปกับไฟล์static หากต้องจำกัดผู้เข้าใช้ต้องตั้งสิทธิ์ของโฮสต์หรือพัฒนาระบบบัญชีแยก

## ตรวจไฟล์ก่อนติดตั้ง

1. ดาวน์โหลดZIPและไฟล์SHA-256ที่ส่งมอบคู่กัน ตรวจhashZIPด้วยPowerShell `Get-FileHash .\NKW_Host_2026.10.18-migration.3.zip -Algorithm SHA256` หรือLinux `sha256sum NKW_Host_2026.10.18-migration.3.zip` เทียบกับไฟล์.sha256
2. แตกZIPลงโฟลเดอร์ว่าง โดยรักษาชื่อไฟล์ภาษาไทยและตัวพิมพ์เล็ก–ใหญ่
3. เปิดTerminalที่โฟลเดอร์ชุดติดตั้ง Windowsใช้ `py -3 verify_install.py` Linux/macOSใช้ `python3 verify_install.py`
4. ต้องขึ้นPASSทุกไฟล์ หากmissing/mismatch/unexpectedให้หยุดติดตั้งและดาวน์โหลด/แตกใหม่ การตรวจhashยืนยันความครบถ้วน ไม่ใช่ลายเซ็นดิจิทัลรับรองแหล่งที่มา

## ทดสอบในเครื่องWindows

ติดตั้งPython3จากผู้ให้บริการทางการหากเครื่องยังไม่มี จากนั้นดับเบิลคลิกstart-windows.cmd แล้วเปิด http://127.0.0.1:8080/maintenance.html ด้วยChrome/Edge รักษาพอร์ต8080เดิมเพื่อใช้ข้อมูลlocalStorageชุดเดิม ปิดserverด้วยCtrl+C ไม่เปิดindex.htmlตรง ๆ

ขั้นนี้เป็นวิธีทดสอบสำหรับผู้ใช้ ยังไม่ได้ยืนยันผลบนเครื่องWindowsห้องเรียนจริงจากการตรวจไฟล์ในสภาพแวดล้อมพัฒนา

## ติดตั้งบนโฮสต์static/โฮสต์โรงเรียน

1. สำรองเว็บไซต์รุ่นเดิมทั้งโฟลเดอร์และค่าตั้งเว็บเซิร์ฟเวอร์ บันทึกชื่อรุ่น/วันที่ไว้
2. แจ้งผู้ใช้ส่งออกชุดสำรองจากโดเมนเดิมก่อนย้ายโดเมน ถ้าใช้โดเมนเดิมlocalStorageยังอยู่ แต่ควรสำรองก่อนอัปเดต
3. อัปโหลด **เนื้อหาภายในweb/** ไปDocument Rootหรือโฟลเดอร์ย่อยของเว็บไซต์ ไม่อัปโหลดทั้งโฟลเดอร์ชุดติดตั้งทับrootโดยไม่ตรวจโครงสร้าง
4. เปิดHTTPS ตั้งindex.htmlเป็นหน้าแรก ให้ไฟล์.jsเป็นapplication/javascript, .cssเป็นtext/css, .jsonเป็นapplication/json ห้ามrewriteไฟล์ที่หายให้คืนหน้าHTMLด้วยstatus200
5. ชื่อและโฟลเดอร์ต้องตรงทุกตัว รวมvendor/, assets/, modules/, system/, docs/ ทั้งภาพสนามและฟอนต์อยู่ในชุดแล้ว
6. ตั้งHTML/JS/CSS/manifestให้ตรวจความใหม่ เช่นCache-Control:no-cache เพื่อป้องกันผสมไฟล์คนละรุ่น ล้างCDN/รีเฟรชหลังเปลี่ยนรุ่นตามวิธีของโฮสต์
7. เปิดmaintenance.html ตรวจรุ่นที่แสดง ตรวจกายภาพAPI และกดตรวจทรัพยากรทั้งหมด ต้องไม่มีไฟล์ผิดhash แล้วทำรายการตรวจรับทั้ง3ห้องทดลอง
8. ทดสอบโดเมนใหม่ด้วยการนำเข้าชุดสำรองของบัญชีเบราว์เซอร์ทดสอบก่อนแจ้งเปิดใช้งานจริง

ระบบเป็นเว็บstatic ไม่ต้องมีNode.js/PHP/ฐานข้อมูลบนโฮสต์สำหรับฟังก์ชันที่ส่งมอบนี้ ฟิสิกส์ เสียงและBlocklyทำงานในเบราว์เซอร์ ข้อมูลผู้ใช้อยู่localStorage ใช้เครื่อง/เบราว์เซอร์/โดเมนอื่นต้องนำเข้าเอง ทรัพยากรหลักอยู่ในชุดครบ ใช้แบบออฟไลน์ได้เมื่อเปิดlocalHTTPserver ไม่รับรองการเปิดURLอินเทอร์เน็ตเดิมแบบออฟไลน์หรือfile:// และลิงก์ภายนอกMakeCode/GitHubยังต้องใช้อินเทอร์เน็ต

## วิธีย้อนกลับเว็บไซต์

แนวทางแนะนำ: เก็บแต่ละรุ่นคนละโฟลเดอร์ เช่นreleases/รุ่น/web แล้วตั้งDocument Rootหรือsymlink currentชี้รุ่นที่ใช้งาน หลังตรวจรุ่นใหม่แล้วจึงเปลี่ยนปลายทาง โดยเก็บรุ่นเดิมไว้

หากพบปัญหา ให้หยุดเปลี่ยนข้อมูล เก็บหลักฐานรุ่น/console สลับDocument Root/currentกลับรุ่นเดิมหรือคืนโฟลเดอร์ที่สำรองไว้ พร้อมคืนค่าตั้งเซิร์ฟเวอร์และล้างแคชที่เกี่ยวข้อง ตรวจหน้าและทรัพยากรอีกครั้ง

หากข้อมูลผู้ใช้เปลี่ยนแล้ว ต้องใช้คู่มือBACKUP_TH.mdเพื่อนำชุดก่อนเปลี่ยนรุ่นกลับด้วยตนเอง การคืนไฟล์เว็บไซต์ไม่ย้อนข้อมูลlocalStorage และข้อมูลที่สร้างด้วยรุ่นใหม่อาจไม่เข้ากันกับรุ่นเก่า อย่าลบข้อมูลใหม่ก่อนเก็บสำรองไว้อีกชุด

## ขอบเขตการตรวจรับ

- มีผลทดสอบNode การย้ายข้อมูลจริงของBlockly/runtime/ย้อนหลัง และการตรวจไฟล์ชุดติดตั้ง
- ไม่ได้ตรวจเบราว์เซอร์จริง เครื่องWindowsห้องเรียน ลำโพง โปรเจกเตอร์ Print Preview หรือการใช้งาน45นาทีในรอบพัฒนานี้
- ยังต้องปรับตัวอย่างADCกู้ภัยเรื่องความทนทาน: ผ่าน9/18รอบความคลาดเคลื่อนตามคู่มือกู้ภัย ไม่ใช่100%
- ยังไม่ติดตั้งลงโฮสต์หลักของโรงเรียนเพราะยังไม่ได้รับข้อมูลโฮสต์ ชุดนี้พร้อมนำไปตรวจและติดตั้งตามคู่มือ ไม่ใช่การยืนยันว่าโฮสต์จริงเปิดใช้งานแล้ว

พัฒนาระบบโดย ครูอิสระพงษ์ วงศ์วีระพันธุ์ โรงเรียนโนนกุงวิทยาคม
