← Blog

Freeable 3.11.0 — ย้ายทั้งระบบมารันบน Linux

รีลีสนี้เปลี่ยนฐานที่ระบบรันอยู่ทั้งหมด จาก Windows Server มาเป็น Linux ซึ่งเป็นการเปลี่ยนที่ลึกกว่าที่ฟัง เพราะทุกอย่างที่เกี่ยวกับการติดตั้ง เว็บเซิร์ฟเวอร์ ใบรับรอง และสิทธิ์ไฟล์ ต้องเขียนใหม่หมด

ทำไมต้องย้าย

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

รื้อเครื่องมือดูแลเซิร์ฟเวอร์ใหม่ทั้งชุด

เครื่องมือติดตั้งและดูแลระบบเดิมผูกกับเว็บเซิร์ฟเวอร์ของ Windows ทั้งหมด จึงต้องเขียนใหม่ให้ทำงานกับเว็บเซิร์ฟเวอร์และระบบจัดการบริการของ Linux แทน

ใบรับรอง HTTPS อัตโนมัติ

ขอ ติดตั้ง และต่ออายุใบรับรองให้เองอัตโนมัติ พร้อมสั่งเว็บเซิร์ฟเวอร์โหลดใบรับรองใหม่ให้ด้วย โดยระบบอ่านวันหมดอายุจากใบรับรองจริงเพื่อรู้ว่าถึงเวลาต่ออายุหรือยัง

เรื่องนี้สำคัญมากเมื่อมีลูกค้าหลายราย เพราะแต่ละรายมีโดเมนของตัวเอง ถ้าต่ออายุด้วยมือ วันหนึ่งจะมีใบรับรองหมดอายุแล้วเว็บของลูกค้าขึ้นเตือนว่าไม่ปลอดภัย

แยกบัญชีระบบต่อโดเมน

งานที่สำคัญที่สุดด้านความปลอดภัยของรีลีสนี้ — ลูกค้าแต่ละรายรันด้วยบัญชีระบบของตัวเอง

ผลคือถึงแม้จะอยู่บนเครื่องเดียวกัน ข้อมูลของรายหนึ่งก็เข้าถึงอีกรายไม่ได้ในระดับระบบปฏิบัติการ ไม่ใช่แค่ระดับโปรแกรม ซึ่งเป็นการป้องกันที่แข็งแรงกว่ามาก

ปิดช่องโหว่ที่เคยอ่านไฟล์ข้ามผู้เช่าได้

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

เครื่องมือใหม่สำหรับผู้ดูแล

  • ตรวจและซ่อมสิทธิ์ไฟล์ — ตรวจว่าสิทธิ์ถูกต้องตามที่ควรเป็นหรือไม่ และซ่อมให้ได้ พร้อมเอกสารอธิบายว่าสิทธิ์ควรเป็นอย่างไรและทำไม
  • ดูทรัพยากรและความจุเครื่อง — พื้นที่ดิสก์แยกระบบกับข้อมูล หน่วยความจำ ซีพียู และจำนวนบริการที่รันอยู่ ใช้ตอบคำถามว่าเครื่องนี้รับลูกค้าได้อีกกี่ราย
  • วงจรชีวิตของผู้เช่า — ระงับบริการได้โดยเก็บข้อมูลไว้ 12 เดือนและหยุดต่ออายุใบรับรอง แล้วเปิดกลับมาใช้ใหม่ได้ เหมาะกับลูกค้าที่หยุดใช้ชั่วคราวหรือค้างชำระ
  • สภาพแวดล้อมพัฒนาแบบ Linux — จำลองเครื่องจริงบนเครื่องนักพัฒนา เจอปัญหาตั้งแต่ตอนพัฒนาแทนที่จะไปเจอตอนขึ้นระบบ
  • คู่มือการย้าย — เอกสารขั้นตอนตั้งแต่ทดลองกับลูกค้ากลุ่มแรก ย้ายจริง จนถึงปิดเครื่องเก่า

บทเรียนจากการซ้อมย้ายจริง

การซ้อมย้ายแบบครบวงจรทำให้เจอช่องโหว่ที่ไม่มีทางเจอจากการอ่านโค้ด

  • ต้องหยุดบริการก่อนคัดลอกไฟล์โปรแกรม — ไม่งั้นไฟล์ถูกล็อกอยู่
  • ข้ามบริการที่ยังตั้งค่าไม่ครบ — เดิมพยายามเริ่มทุกบริการ พอมีตัวที่ยังไม่ได้ตั้งค่าก็พังวนซ้ำแล้วรายงานว่าเริ่มเว็บไม่สำเร็จทั้งที่ตัวเว็บไม่มีปัญหา
  • เก็บกุญแจเข้ารหัสให้คงอยู่ข้ามการติดตั้งใหม่ — ไม่งั้นผู้ใช้ถูกเตะออกจากระบบทุกครั้งที่อัปเดต
  • ค่าตั้งต้นที่หายไปจากการติดตั้งใหม่ — เจอเฉพาะเมื่อทดลองติดตั้งจากศูนย์จริง ๆ

ตัดฝั่ง Windows ออกทั้งหมด

ลบโค้ดที่เกี่ยวกับเว็บเซิร์ฟเวอร์และที่เก็บใบรับรองของ Windows ออกทั้งชุด และเปลี่ยนเอกสารทั้งหมดให้อ้างอิง Linux อย่างเดียว

การไม่เก็บโค้ดเก่าไว้ “เผื่อ” เป็นการตัดสินใจที่ตั้งใจ — โค้ดสองทางที่ไม่มีใครทดสอบทางหนึ่งคือภาระที่ไม่มีวันได้ใช้

Freeable

บริหารจัดการข้อมูลในองค์กร ครบในที่เดียว

ดูรายละเอียด →

อ่านต่อ

Freeable

รหัสผ่าน 2026 — อักษรพิเศษ มาตรฐานสากล กฎหมายไทย และ 2FA/3FA ที่ควรรู้

กฎรหัสผ่านที่เราคุ้นเคย — ต้องมีตัวใหญ่ ตัวเล็ก ตัวเลข อักษรพิเศษ และเปลี่ยนทุก 90 วัน — ถูกมาตรฐานสากลถอดออกไปแล้ว บทความนี้รวบรวมว่าปัจจุบันมาตรฐานว่าอย่างไร กฎหมายไทยกำหนดอะไร และ 2FA ช่วยตรงไหนที่รหัสผ่านช่วยไม่ได้

Freeable

ค่าหนึ่งค่ามี 4 หน้าที่ — มาตรฐานการแทนค่า เก็บ · ส่ง · คำนวณ · แสดง

ปัญหาเรื่องวันที่ไม่ใช่ปัญหาของวันที่ แต่เป็นหนึ่งตัวอย่างของปัญหาตระกูลเดียวกัน — ค่าหนึ่งค่าถูกใช้ทำ 4 หน้าที่ที่ต่างกัน พอรูปแบบของหน้าที่หนึ่งรั่วไปอีกหน้าที่ ตัวเลขก็เพี้ยนเงียบ ๆ

Freeable

เวลาในระบบมีหลายชั้น และมันไม่ตรงกัน — บทเรียนจากบั๊กที่ไล่ 8 วันแล้วสรุปผิดหลายรอบ

บนเครื่องจริงของเรามีเขตเวลาอยู่ 3 ชั้นและไม่ตรงกันสักคู่ ทำให้ตัวเลขที่ดูเหมือนเทียบกันได้จริง ๆ เทียบไม่ได้ บทความนี้เล่าว่าเวลาซ่อนอยู่ที่ไหนบ้าง ทำไม "วันนี้" ถึงเป็นคำที่อันตราย และงานอัตโนมัติที่ค้าง 11 วันเพราะนาฬิกาเดินล้ำหน้า