Category: Open Source Software & Freeware

  • การกำหนดค่าพื้นฐานความปลอดภัยสำหรับ IIS และ WordPress บน Windows Server

    เพื่อให้ Web Server ของเราปลอดภัยจากการถูกโจมตี บทความนี้จะเป็นการแนะนำการกำหนดค่าต่างๆของ web server ที่ให้บริการ ซึ่งทำงานด้วยบน Windows Server และ มีการติดตั้ง IIS, PHP, MySql, ASP.Net และ WordPress

    • การกำหนดส่วนของ Windows Server อ้างอิงคำแนะนำจาก Quays SSL Labs ให้ได้ระดับ A ขึ้นไป
      1. ใช้ใบรับรองจาก CA ที่น่าเชื่อถือ และ ใช้การ RSA 2048 bits (SHA256withRSA) ขึ้นไป
      2. การกำหนด Cipher Suites ที่ปลอดภัย ซึ่งจะมีเครื่องมือที่ช่วยในการกำหนดดังนี้
        • IIS Crypto เป็นโปรแกรมฟรีไม่ต้องติดตั้งสำหรับช่วยจัดการกำหนด protocols, ciphers, hashes and key exchange algorithms บน Windows Server โดยกำหนดพื้นฐานดังนี้
          1. เมนู Schannel
          1.1 Protocols เลือกกำหนดใช้งาน TLS 1.2 และ/หรือ TLS 1.3 เท่านั้น
          1.2 Cipher เลือกกำหนดเป็น AES
          1.3 Hashes เลือก SHA 256 ขึ้นไป
          1.4 Key Exchanges สามารถเลือกได้ทั้ง Diffie-Hellman, PKCS และ ECDH
          2. เมนู Cipher Suites สามารถกำหนด Cipher Suites ที่ปลอดภัยในปัจจุบัน ซึ่งค้นหาได้จากเว็บ https://www.tenable.com/plugins/nessus/156899
      3. เป็นส่วนของการกำหนดใน IIS
        • การกำหนดสำหรับ Security Headers ให้ได้ระดับ A+ อ้างอิงคำแนะนำจากเว็บ https://securityheaders.com/
        • การจัดการ Http Response Header โดยกำหนดค่าดังนี้
          1. X-Frame-Options เป็นการกำหนดเพื่อหลีกเลี่ยงจากการถูกโจมตีด้วย Clickjacking
            ตัวอย่างการกำหนดค่าเป็น SAMEORIGIN
          2. X-XSS-Protection เป็นการป้องกันการโหลดสคริปต์ข้ามไซต์
            ตัวอย่างการกำหนดเป็น 1; mode=block
          3. X-Content-Type-Options เป็นการป้องการโจมตีเนื้อหาประเภท MINE (Multipurpose Internet Mail Extensions) ซึ่งเป็นรูปแบบที่ใช้ระบุประเภทของข้อมูลที่ถูกส่งผ่านเครือข่าย หรือเก็บที่เครื่องอุปกรณ์ มันช่วยบอกให้ระบบรับรู้ว่าไฟล์เป็นประเภทไหนและวิธีการจัดการข้อมูลนั้น ที่อาจถูกใช้ในการโจมตีเพื่อหลอกลวงระบบหรือละเว้นมาตรฐานการตรวจสอบปลอดภัย เช่น application/pdf, image/jpeg, text/html
            ตัวอย่างการกำหนดค่าเป็น nosniff
          4. Referrer-Policy เป็นการควบคุมการส่งผ่านส่วนอ้างอิง เช่น ป้องกันส่วน HTTPS ไม่ให้กลับไป HTTP ที่ไม่ปลอดภัย
            ตัวอย่างการกำหนดค่าเป็น no-referrer-when-downgrade
          5. Strict-Transport-Security เป็นการช่วยให้การเข้าเว็บไซต์ด้วย HTTPS เท่านั้น
            ตัวอย่างการกำหนดค่าเป็น max-age=31536000; includeSubDomains; preload
          6. Content-Security-Policy เป็นการระบุที่มาของเนื้อหาที่ได้รับอนุญาตให้โหลดบนเว็บไซต์ เช่น JavaScript เพื่อป้องกันการโจมตีแบบ Cross-Site Scripting (XSS)
            ตัวอย่างการกำหนดค่าเป็น upgrade-insecure-requests
          7. Permissions-Policy เป็นการควบคุมการเปิดใช้งานเช่น กล้อง หรือ ไมโครโฟน หรือ ฟีเจอร์อื่น ๆ
            ตัวอย่างการกำหนดค่า เช่น geolocation=(), camera=(), microphone=()
        • การปกปิดเวอร์ชันไม่แสดงในส่วนของ Header สามารถกำหนดเพิ่มเติมดังนี้
          1. เมนู IIS Manager –> Configuration Editor
            • Section: system.webServer/security/requestFiltering กำหนด removeServerHeader เป็น True เพื่อไม่ให้แสดง เวอร์ชันของ server
            • Section: system.web/httpRuntime กำหนด enableVersionHeader เป็น False เพื่อไม่ให้แสดงเวอร์ชันของ IIS หรือ ASP.Net
          2. กำหนด expose_php = Off ใน php.ini เพื่อไม่ให้แสดงเวอร์ชันของ php
          3. ลบ X-Powered-By ออกจาก HTTP Response Headers
      4. กำหนด IP Address ส่วนของ Remote Address ใน Windows Defender Firewall with Advance Security – Inbound Rules เพื่อควบคุมการเข้าถึงจากคอมพิวเตอร์ที่ได้รับอนุญาตเท่านั้น
      5. ปิด port ที่ไม่ได้ใช้งาน
    • การกำหนดส่วนของเว็บ
      1. การเรียกใช้งานไรบรารีจากภายนอกเว็บไซต์ เช่น เดิม จะมีการเรียกใช้โดยอ้างอิงแบบ
        src=”https://code.jquery.com/jquery-3.7.1.min.js” ซึ่งจะไม่มีการตรวจสอบความน่าเชื่อถือ
        เพื่อสร้างความเชื่อมั่นว่าไรบรารีที่ใช้งานจะไม่มีการเปลี่ยนแปลง จึงมีการเพิ่มส่วนการตรวจสอบ integrity และ crossorigin ซึ่งสามารถเลือกใช้งาน Code Integration ได้จากเว็บ https://releases.jquery.com/jquery/ หรือ https://cdnjs.com/libraries ดังตัวอย่างนี้
        • src=”https://code.jquery.com/jquery-3.7.1.min.js” integrity=”sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=” crossorigin=”anonymous” หรือ
        • src=”https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js” integrity=”sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==” crossorigin=”anonymous” referrerpolicy=”no-referrer”
      2. การป้องกันการเรียกดู user data ผ่าน REST API ใน WordPress กรณีนี้ควรติดตั้งส่วนเสริมไม่ให้สามารถเรียกใช้งานผ่าน REST API โดยไม่มีการยืนยันตัวตนก่อน เช่น Disable WP REST API
    • หลังจาก กำหนดค่าเรียบร้อยแล้ว สามารถทดสอบได้ที่ https://www.ssllabs.com/ssltest/analyze.html คลิกเลือก Do not show the results on the boards ก่อนสแกน ด้วยครับ
    • Windows Server 2019 รองรับ TLS 1.2
    • Windows Server 2022 รองรับ TLS 1.2 และ TLS 1.3
      หมายเหตุ ทั้งนี้ Windows Server 2022 เพิ่มการรองรับ TLS 1.3 อย่างไรก็ตาม หากเปิดใช้งานทั้ง TLS 1.2 และ 1.3 Site Scanner จะส่งผลให้ได้เกรด A เท่านั้น เนื่องจากปัจจุบัน Windows Server ไม่รองรับการป้องกันการโจมตีแบบดาวน์เกรด หากไคลเอนต์ร้องขอ TLS 1.3 Windows จะยังคงอนุญาตให้ปรับไปใช้ TLS 1.2 ได้ และนั่นคือสาเหตุที่ Site Scanner รายงานเกรด A แทนที่จะเป็น A+
  • เปลี่ยน iPad เป็นหน้าจอเสริมไร้สายสำหรับ PC/Notebook (Windows)

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

    แล้วถ้าเราสามารถเอา iPad มาใช้ประโยชน์เพิ่มเป็นจอเสริมพกพา เชื่อมต่อแบบไร้สาย มีแบตเตอรี่ในตัวใช้งานได้สบายๆ หลายชม.แบบไม่ต้องเสียบสายชาร์จ แถมยังใช้ความสามารถขอจอทัชสกรีน apple pencil ได้ น่าจะใช้งานได้คุ้มค่ามากยิ่งขึ้น

    ถ้าทำงานในฝั่งของ Mac OS สามารถใช้งาน iPad เป็นจอเสริมได้ทันทีโดยไม่ต้องติดตั้งโปรแกรมเพิ่มเติม แต่ถ้าฝั่งของ Windows เราจำเป็นต้องติดตั้งโปรแกรมเพิ่มเติม(Freeware) ที่ชื่อว่า “ Spacedesk “ โดยจะต้องติดตั้งทั้งใน Notebook และ iPad

    Download Spacedesk : https://www.spacedesk.net/

    โปรแกรมรองรับการใช้งานบน Windows 8.1/10/11

    Notebook/PC

    เมื่อทำการติดตั้งโปรแกรมบน Windows แล้วให้เปิดโปรแกรม Spacedesk จากช่อง Search หรือจาก Taskbar ก็ได้

    ให้ตรวจสอบ IP ที่ Notebook ทำการเชื่อมต่อ WIFI (เนื่องจากทั้ง Notebook และ iPad ต้องเชื่อมต่ออยู่บนเครือข่ายเดียวกัน)

    iPad/Tablet

    เมื่อติดตั้ง Spacedesk บน iPad แล้วให้กดเพิ่ม IP ของ Notebook ตามรูป

    เมื่อตรวจสอบที่โปรแกรมฝั่ง Notebook จะแสดงสถานะการเชื่อมต่อดังรูป

    และข้อดีอีกอย่างของการใช้งาน iPad เป็นจอเสริมคือคือการใช้ความสามารถของการ Touch Screen และ Apple Pencil บน Windows ได้

  • Install from scratch – licensing (2)

    ใช้ plugin ชื่อว่า WPO365 วิธีการตั้งค่าเพื่อใช้งาน single sign on ของ Microsoft365 ในการล็อคอินเข้าระบบของ WordPress

    Authentication
    1. ต้องเซ็ต HTTPS ที่เว็บให้เสร็จเรียบร้อย
    2. สำคัญ!!! จำเป็นต้องมีสิทธิ์ Global Administrator บน Azure
    3. Login เข้าเว็บ https://portal.azure.com มองหา Azure Active Directory
    4. ซ้ายมือเลื่อนหาคำว่า App registrations
    5. คลิก + New registration แล้วกรอกชื่อที่ต้องการในช่อง Name ในส่วนของ Supported account types เลือก Accounts in this organizational directory only (Prince of Songkla University only – Single tenant)
    1. เลื่อนลงมาจนเจอคำว่า Redirect URI (Optional) เลือก Web ในช่อง select platform และกรอกชื่อเว็บ https://licensing.psu.ac.th/wp-admin/ ลงไปในช่องถัดมา แล้วคลิก Register
    1. หน้าถัดไป คลิก Token configuration บนเมนูซ้ายมือ จากนั้นคลิก + Add optional claim เลือก Token Type เป็น ID และเลือกหัวข้อด้านล่าง ดังนี้ email, family_name, given_name และ upn แล้วคลิกปุ่ม Add จะมีให้ Add optional claim เพิ่ม ให้ติ๊กถูกแล้วกด Turn on the Microsoft Graph email, profile permission (required for claims to appear in token). แล้ว Add จะได้
    1. คลิก API permissions ที่เมนูซ้ายมือ แล้วคลิก + Add permission คลิก Microsoft Graph แล้วคลิก Delegated และเลือกหัวข้อดังต่อไปนี้ (พิมพ์ในช่อง Search ได้เลย) email, offline_access, openid และ profile แล้วคลิก Add permissions

    จากนั้นคลิก Grant admin consent for Prince of Songkla University แล้วคลิก Yes

    1. คลิก Certificates & Secrets ที่เมนูซ้ายมือ คลิก  + New client secret ตั้งชื่อในช่อง Description และเลือกวันหมดอายุ คลิก Add จากนั้นให้ copy ค่าของช่อง Value เก็บไว้
    1. กลับมาที่ https://licensing.psu.ac.th หลังจากติดตั้งปลักอินชื่อ WPO365 | LOGIN และเปิดใช้งาน (activate) เรียบร้อยแล้ว
    2. คลิก WPO365 ที่ด้านซ้ายมือล่างสุด เปิดใช้งาน SINGLE SIGN-ON (SSO) แล้วคลิก configure
    3. กรอกข้อมูลดังนี้
      1. Select Identity Provider (IdP) เลือก Azure AD (default)
      2. Select SSO-protocol เลือก OpenID Connect (default)
      3. Select OpenID Connect flow เลือก Auth.-code flow (recommended)
      4. Application (Client) Secret นำค่าที่ copy เก็บไว้ในข้อ 9 มาใส่ช่องนี้
      5. Directory (tenant) ID นำค่าที่ได้จากหน้า Overview ของ lsc ชื่อฟิลด์ Directory (tenant) ID
      6. Application (Client) ID นำค่าที่ได้จากหน้า Overview ของ lsc ชื่อฟิลด์ Application (client) ID
      7. Redirect URI View in Azure Portal ใส่ว่า https://licensing.psu.ac.th/
      8. Domain hint View Custom domain names ใส่ว่า psu.ac.th, email.psu.ac.th
      9. Add prompt=select_account parameter ติ๊กถูก
      10. กด Save configuration ด้านล่าง แล้วจะมีหน้า Important ขึ้นมากด Confirm
    4. คลิกแท็บ User Registeration ด้านล่างกรอกดังนี้
      1. Custom domains View Custom domain names กรอก psu.ac.th และคลิก + เพิ่มอีกช่องพิมพ์ email.psu.ac.th
      2. เลื่อนลงมาล่างสุดกด Save configuration
    5. คลิกแท็บ Plugin self-test เลื่อนลงมาด้านล่าง กด Start self-test จะถูก redirect ไปหน้า log in ของ mail ให้ Log in ตามปกติ แล้วจะเด้งกลับมาหน้าของ https://licensing.psu.ac.th หากล็อคอินไม่ผ่านให้กลับไปหน้า https://portal.azure.com คลิก App registrations แล้วเลือก lsc แล้วคลิก Authentication คลิก Add URI เพิ่ม https://licensing.psu.ac.th เข้าไปอีก 1 url กด save กลับไปล็อคอินอีกครั้งน่าจะได้แล้ว
  • วิธีใส่ Subtitle อย่างง่าย บนมือถือ ด้วย CapCut

    ใครที่เป็น youtuber หรือ เริ่มต้น ทำช่องบนสื่อ Social Media ต่าง ๆ และอยากใส่ Subtitle ใต้คลิป แต่ไม่รู้จะเริ่มต้นยังไง ลองมาดูวิธีใส่ Subtitle ง่าย ๆ ผ่าน Application CapCut บนมือถือกันค่ะ
    ซึ่งสามารถ Download ได้ทุกช่องทาง ทั้ง Play Store และ App Store

    • ขั้นตอนแรก คือให้กดคลิกเพิ่ม โปรเจกต์ใหม่ (New project)และกดอนุญาตการเข้าถึงต่าง ๆ
    • จากนั้นระบบจะเข้าไปยังคลังคลิปวิดีโอในเครื่องของเรา และให้ทำการเลือกคลิปที่ต้องการใส่ Subtitle แล้วทำการกดปุ่มเพิ่ม (Add)
    • เมื่อคลิปที่เลือกเข้ามาในหน้าจัดการแล้วให้เลือกเครื่องมือข้อความ (Text)
    • ให้ตั้งค่าเป็นเสียงต้นฉบับ ในส่วนเลือกภาษา หากใครต้องการให้ Sub Title ที่ใส่เป็นภาษาไทยสามารถเลือกภาษาตามที่ต้องการได้เลย ในกรณีนี้จะเลือกเป็นภาษาไทย เมื่อเสร็จแล้วให้มาคลิกที่ปุ่ม เริ่มต้น (Start)
    • เมื่อเสร็จแล้วให้มาคลิกที่ปุ่ม เริ่มต้น (Start) Application จะสร้าง Subtitle ให้อัตโนมัติ
    • เมื่อเสร็จแล้ว จะสามารถเห็น ข้อความ Subtitle ในช่องตัดต่อ
    • เราสามารถปรับตำแหน่ง ขนาด ของ Subtitle ได้
    • โดยให้คลิกไปที่แถบข้อความ Subtitle ที่ต้องการแก้ไข เราสามารถปรับตำแหน่งข้อความ ปรับขนาดหรือเปลี่ยน Font ตลอดจน แก้ไขข้อความที่คำนวณออกมาไม่ถูกต้องได้ จากนั้นให้กดเครื่องหมายถูก
    • หลังจากที่แก้ไขเรียบร้อยแล้ว ให้เรา save คลิปนี้ไว้ในเครื่องโดย กดสัญลักษณ์ลูกศร มุมขวาบน
    • เพียงเท่านี้คลิปของเราก็จะถูกบันทึกลงมาในเครื่อง จากนั้นให้กดปุ่ม เสร็จสิ้นมุมขวาบนได้เลยเราก็จะได้คลิปวิดีโอที่มี Subtitle มาแบบง่าย ๆ แล้ว!!!!

    สามารถดูตัวอย่างคลิปที่ใส่ Subtitle ได้ตาม Link ข้างล่างนี้ค่ะ

  • เล่าเรื่องเกี่ยวกับ cloning Windows (Windows 11)

    ผมได้ทำ google form สอบถามเกี่ยวกับการ cloning ต้นฉบับ Windows เพื่อนำไป cloned ลงยังเครื่องอื่น ๆ ในห้องปฏิบัติการหรือสำนักงาน

    ได้ข้อสรุปและคำถามมาดังนี้

    แผนภูมิ ข้อมูลจากแบบสอบถามใช้ซอฟต์แวร์ใดในการ cloning Windows

    มีผู้เข้ามาตอบจำนวน 14 คน ได้ผลสรุปตามรูปภาพ
    o มีผู้ที่ตอบว่าใช้ PSU12-Sritrang (opensource.psu.ac.th) จำนวน 7 คน
    o มีผู้ที่ตอบว่าใช้ โปรแกรมอื่น จำนวน 4 คน
    o มีผู้ที่ตอบว่าใช้ FogProject (fogproject.org) จำนวน 2 คน
    o มีผู้ที่ตอบว่าใช้ PSU12-Fog (opensource.psu.ac.th) จำนวน 1 คน

    โปรแกรมอื่นที่เลือกใช้ในการ cloning Windows มีดังนี้
    o Clonezilla
    o Aomei backupper
    o Acronis True Image ทำทีละเครื่อง
    o Acronis True Image 2014 premium (ใช้ในการ clone เครื่องในสำนักงาน)
    o Norton Ghost with Windows 7 PE ใช้งานร่วมกับ PSU12-Sritrang
    o Norton ghost

    ความคิดเห็นอื่น ๆ ที่เกี่ยวกับการเตรียม Windows ห้องคอมพิวเตอร์ มีดังนี้
    1.การติดตั้ง Windows11 และการปรับแต่งให้เหมาะสมสำหรับใช้ในห้องปฎิบัติการคอมพิวเตอร์
    2.ทั้ง PSU12-Sritrang และ PSU12-fog ใช้โคลน windows 10 ได้ดี และทั้งการโคลนและสูตรการจัดการให้บริการห้องแลปด้วย PSU 12 Sritrang สามารถใช้บริหารจัดการห้องแลปคอมที่ใช้ windows 10 ได้ดีครับ โดยเฉพาะเรื่องการจัดการเลือกบูต OS ได้ แต่การเลือก Boot OS ด้วย windows 11 จากการทดลองไม่สามารถทำได้แล้วเพราะมีการจัดการ Partition ในรูปแบบใหม่
    3.อยากให้เปิดการอบรมPSU12-Sritrang(opensource.psu.ac.th)อีกครั้งครับเพราะทำกับเครื่องจริงแล้วมีปัญหาหลายอย่าง
    4.ปัญหาการ Cloning Windows กับ SSD ssd nvme m.2
    5.ปัญหาเกี่ยวกับต้องใส่ cd key เสมอเวลา cloning windows ใหม่
    6.อยากทราบว่ามีท่านใดใช้โปรแกรมใดในการ clone harddisk ที่เป็น ssd เพราะ software รุ่นเก่าจะมองไม่เห็น เท่าที่ดู พาทของ /dev/sda ก้จะเปลี่ยน
    7.PSU12-Sritrang Support Windows11 มั้ยคับ

    ผมจะขอให้ข้อมูลเท่าที่พอจะมีความรู้นะครับ

    O เกี่ยวกับ PSU12-Sritrang (opensource.psu.ac.th)

    เนื่องจากผมทำชุดติดตั้งสำหรับ cloning Windows คือ PSU12-Sritrang (opensource.psu.ac.th) นั่นคือ ต้องมี server 1 ตัว ผมเลือกใช้ ubuntu server ทดสอบล่าสุดใช้ได้เพียง ubuntu server 20.04 เมื่อทดสอบกับ ubuntu server 22.04 จะเริ่มมีปัญหาในขณะ Boot client จึงยังคงไว้ที่รุ่นนี้ มาพูดถึงการ cloning Windows นั้น ชุดติดตั้งนี้รองรับเพียงแค่ Windows ที่สามารถจัดการ partition แบบ MBR ได้เท่านั้น เมื่อดู Windows 11 แล้วจะพบว่า ทำไม่ได้ แล้ว หากว่าเครื่อง clients ที่ลง Windows ยังสามารถทำ partition แบบ MBR ได้ ไม่ว่าจะเป็น disk ชนิด SATA หรือ SSD nvme M.2 ชุดติดตั้งนี้รองรับครับ ตั้งแต่รุ่น sysresccd-5.1.2-16.04-dvd-psu12-sritrang-server-autopartition-offline-2019-12-13.iso ครับ ปัจจุบันล่าสุดคือ sysresccd-5.1.2-20.04-dvd-psu12-sritrang-server-autopartition-offline-2022-03-18.iso

    หากใช้ PSU12-Sritrang รุ่นใด ๆ แล้วทดสอบกับคำสั่งดังนี้
    grep SSD /var/www/cloning/backup.sh
    ไม่พบข้อความ
    use for M.2 SSD

    ให้ดาวน์โหลดชุดติดตั้งได้ ซึ่งจะแบ็กอัพไฟล์เดิมไว้ให้ก่อนเขียนทับ backup.sh, welcome.sh และ multicast.sh
    wget https://ftp.psu.ac.th/pub/psu12-sritrang/download/diskselect/installdiskselect.sh
    bash installdiskselect.sh

    O เกี่ยวกับ PSU12-Fog (opensource.psu.ac.th)

    ชุดติดตั้งนี้ ผมเลือกใช้ FogProject 1.5.9 มาใช้เป็นตัว cloning Windows ซึ่งจะเป็นแบบ Web-base GUI โดยผมปรับปรุง script เดิมของ PSU12-Sritrang ตัดส่วนที่เป็น cloning ทิ้งไป คงเหลือส่วนที่เป็น dhcp server เอาไว้ ซึ่งผมขอแนะนำให้ใช้ชุดนี้เพราะว่า รองรับ M.2 SSD และรองรับ partition หลากหลายชนิด ผมทดสอบแล้วกับ Windows 11 สามารถทำต้นฉบับและ cloning ได้ครับ

    ตัวอย่างการตั้งค่า BIOS เครื่องที่ทดสอบ ลง Windows 11 ดังนี้
    Power
    Power On by Onboard LAN = Enabled
    BIOS Setup Utility
    Secure Boot = Disabled
    Boot Options
    CSM = Disabled
    Launch PXE OPROM = UEFI
    Launch Storage OPROM = UEFI
    Launch Video OPROM = UEFI
    Boot Filter = UEFI
    Boot Priority Order
    1st Boot Device = [UEFI: PXE IPv4…]
    2nd Boot Device = [Windows Boot Manager]

    และที่โปรแกรม Web-base GUI FogProject
    เมนู Image ให้ตั้ง Host EFI Exit Type แบบ REFIND_EFI

    O เกี่ยวกับ FogProject (fogproject.org)

    FogProject รองรับ M.2 SSD และรองรับ partition หลากหลายชนิด ผมทดสอบแล้วกับ Windows 11 สามารถทำต้นฉบับและ cloning ได้ครับ แต่เท่าที่สำรวจดูที่เว็บไซต์ จะพบว่า เวอร์ชั่นล่าสุด ยังหยุดอยู่ที่ 1.5.9 ซึ่งรองรับ ubuntu 20.04 เท่านั้น หากนำไปติดตั้งใน ubuntu 22.04 ณ วันที่เขียนบทความนี้ ติดตั้งไม่สำเร็จ เพราะว่า FogProject จะมีการระบุ php เวอร์ชั่นที่ต่ำกว่า php8 ซึ่ง php8 เป็นค่า default ของ ubuntu 22.04 ครับ FogProject รองรับ M.2 SSD และรองรับ partition หลากหลายชนิด ผมทดสอบแล้วกับ Windows 11 สามารถทำต้นฉบับและ cloning ได้ครับ

    O ปัญหาเกี่ยวกับต้องใส่ cd key เสมอเวลา cloning windows ใหม่

    มีคำแนะนำว่า ให้ใช้แผ่นจาก Volume Licensing เพราะปกติมันจะใส่ key ที่เป็น KMS ไว้ให้แล้ว แค่ set ให้ถูกก็จะ activate เอง

    O การติดตั้ง Windows11 และการปรับแต่งให้เหมาะสมสำหรับใช้ในห้องปฎิบัติการคอมพิวเตอร์

    เรื่องนี้ เราไปคุยกันในเฟสบุ๊คกรุ๊ปนี้กันดีมั้ยครับ Smart computer lab (Cloning and computer management) ที่ https://www.facebook.com/groups/1916830435076306

    หวังว่าจะเป็นประโยชน์สำหรับแอดมินที่ดูแลเรื่องนี้ครับ

  • A Testing Virtual Data Center with OpenNebula miniONE on KVM

    โน้ตบุ๊ค HP รุ่น 6450b มีหน่วยความจำ 4 GB ผมเอามาทำเป็นเซิร์ฟเวอร์สำหรับรัน Virtual Machine (VM) ผมใช้ทดสอบติดตั้ง server หรือ services ต่าง ๆ เช่น Ubuntu server ทำงานเป็น web server เป็นต้น ผมอยากจะเรียกว่า Mobile Virtual Data Center ครับ โดยที่ผมนำซอฟต์แวร์ที่ชื่อว่า OpenNebula มาใช้ ตัวนี้ใช้ทำเป็น Virtual Data Center ขนาดใหญ่ได้เลยหากมี Hardware สเปคสูง ๆ สร้าง VM ให้บริการได้จริง เค้ามีซอฟต์แวร์สำหรับเครื่องเดียว (Test Drive) เรียกว่า OpenNebula miniONE ให้ใช้ น่าจะนำมาลงโน้ตบุ๊คได้ จึงได้ทดลองดู พบว่าใช้ได้จริง

    สิ่งที่ทำมีดังนี้

    1. เตรียม USB Drive ที่ Boot เป็น Ubuntu Desktop สำหรับติดตั้ง 
      • ดาวน์โหลดรุ่น LTS 20.04  ไฟล์นี้ ubuntu-20.04.1-desktop-amd64.iso
      • นำมาเขียนลง USB Drive ด้วยโปรแกรม Rufus for Windows

    (สร้าง Bootable USB Drive ด้วยโปรแกรม Rufus for Windows)

    1. นำ USB Drive ไป Boot ที่โน้ตบุ๊ค และ ติดตั้ง Ubuntu Desktop 

    (ติดตั้ง Ubuntu Desktop 20.04)

    1. Boot Ubuntu Desktop ที่โน้ตบุ๊ค และเข้าใช้งาน
      ติดตั้ง OpenSSH server
      • คำสั่ง sudo apt install openssh-server
    2. ติดตั้งเซิร์ฟเวอร์สำหรับสร้าง VM 
      • ติดตั้ง OpenNebula miniONE on KVM
      • แก้ไขเล็กน้อย
        • เตรียมไว้ว่าต่อไปจะใช้ TCP Port 80 สำหรับ web server ที่เป็น VM จึงต้องแก้ไข default port จาก 80 เป็นอย่างอื่น ตั้งค่า :port: 8080 แก้ไขที่ไฟล์ /etc/one/sunstone-server.conf
        • รันคำสั่ง sudo systemctl restart opennebula-sunstone.service
        • หลังจากติดตั้ง miniONE จะมีการจัดการค่าทาง network ใหม่ เราต้องแก้ไขให้ Ubuntu Desktop ได้รับ DHCP IP ดังนี้ ตั้งค่า renderer: networkd ตั้งชื่อ ethernets ที่ใช้ และ dhcp4: yes แก้ไขที่ไฟล์ /etc/netplan/01-network-manager-all.yaml
        • รันคำสั่ง sudo netplan apply
        • รันคำสั่ง ip addr
      • เข้า Browser ไปที่ URL http://NOTEBOOK_IP:8080 และ Login เข้าใช้ด้วย username คือ oneadmin และ password ที่ได้รับ
      • ปรับแต่งให้ Ubuntu Desktop ทำ enable packet forwarding for IPv4 เข้าออก VM ได้
        • ตั้งค่า net.ipv4.ip_forward=1 แก้ไขที่ไฟล์ /etc/sysctl.conf
        • รันคำสั่ง sudo sysctl -p

    (ติดตั้ง OpenNebula miniONE on KVM)

    1. สร้าง VM 
      • สร้าง VM Template ชื่อ Install new ubuntu และระบุว่าจะใช้ ubuntu-20.04.1-live-server-amd64.iso ในขั้นตอนติดตั้ง
      • สร้าง VM จาก VM Template ที่สร้างในข้อที่แล้ว
      • เปิด VM และ เข้าไปทำงานทางหน้า Web console จากนั้น login เข้าใช้งาน
      • ติดตั้ง Ubuntu Server (ติดตั้ง Ubuntu Server 20.04 ใน VM ของ miniONE KVM)
      • ติดตั้ง apache2 web server (เปิด port 80) พร้อม php และลงซอฟต์แวร์ชื่อ CMSimple version 5.3 สำหรับทำเป็น CMS Web Server อย่างง่าย ไม่มี database (แตกไฟล์ CMSimple_5-3.zip ไว้ใน /var/www/html/cms/)
        (ติดตั้ง CMSimple version 5.3 ใน VM ของ miniONE KVM)
      • ทดสอบการเข้าใช้งานจาก Ubuntu Desktop ที่โน้ตบุ๊ค เพราะว่าในตอนนี้ OpenNebula miniONE จะสร้าง network ชื่อ vnet บน Interface ชื่อ minionebr ทำให้เข้าถึง http://VM_IP/cms/ ได้เฉพาะจากเครื่องโน้ตบุ๊คนี้เท่านั้น

    (สร้าง VM OpenNebula miniONE on KVM)

    1. ปรับแต่งให้ Ubuntu Desktop ทำหน้าที่เป็น proxy web server
      • ติดตั้ง haproxy
      • ตั้งค่า haproxy.conf ให้ชี้ไปที่ VM web server ที่ถูกต้อง ตามค่า URL path คือ /cms/  

    (ติดตั้ง haproxy บน Ubuntu Desktop)

    1. ทดสอบใช้งาน http://NOTEBOOK_IP/cms/ จากเครื่องอื่นใน LAN
  • ติดตั้ง haproxy บน Ubuntu Desktop

    เป็นขั้นตอนที่ทำขึ้น เพื่อทำการ redirect port 80 เข้าไปยัง web server ใน VM (OpenNebula miniONE on KVM) ที่เราติดตั้งไว้ในเครื่อง Ubuntu Desktop ในตัวอย่างนี้ Ubuntu Desktop มี IP 192.168.1.70 และ VM มี IP 172.16.100.3

    ขั้นตอน

    1. เปิด Terminal และติดตั้ง haproxy ด้วยคำสั่ง sudo apt install haproxy
    2. เข้าทำงานสิทธิ root ด้วยคำสั่ง sudo  su  –
      และไปในไดเรกทอรี cd  /etc/haproxy
      เก็บสำรองไฟล์ config ไว้ก่อน ด้วย cp  haproxy.cfg  haproxy.cfg.orig
      เข้าไปแก้ไขไฟล์ vi  haproxy.cfg
    3. เพิ่มบรรทัดเหล่านี้ ต่อท้ายบรรทัด errorfile 504 /etc/haproxy/errors/504.http

    frontend www-http

       bind *:80

       mode http

       acl is_cms path -i -m beg /cms/

       use_backend be_cms if is_cms

    backend be_cms

       option forwardfor

       server cms 172.16.100.3:80

    1. ทำการ restart haproxy และ ดู status
    2. ทดสอบการเข้าใช้งานจากเครื่องใน network เดียวกันกับเครื่อง Ubuntu Desktop ของเรา ไปที่ http://REAL-IP/cms/ 

    จบครับ

  • ติดตั้ง CMSimple version 5.3 ใน VM ของ miniONE KVM

    เป็น CMS Web Server อย่างง่าย ไม่มี database ติดตั้งลงใน OS ที่เป็น Ubuntu Server 20.04 ที่ได้ติดตั้ง apache2 web server (เปิด port 80) พร้อม php ไว้แล้วด้วยคำสั่ง sudo apt install apache2 php php-xml

    ขั้นตอน

    1. ไปที่เครื่อง Ubuntu Desktop ของเรา เข้าเว็บเบราว์เซอร์ OpenNebula Sunstone และเปิด VM ที่เป็น Ubuntu Server (สมมติว่า VM มี IP 172.16.100.3)
    2. เปิดเพจของ CMSimple
    3. ดาวน์โหลด CMSimple_5-3.zip
    4. ใช้คำสั่ง scp คัดลอกไฟล์ไปไว้ใน VM
      scp CMSimple_5-3.zip  papa@172.16.100.3
      เสร็จแล้ว ssh เข้าไปใน VM
      ssh  papa@172.16.100.3
    5. แตกไฟล์ CMSimple_5-3.zip
    6. หากยังไม่ได้ติดตั้ง apache2 และ php ให้ใช้คำสั่ง sudo apt install apache2 php และคำสั่ง sudo apt  install  php-xml
    7. นำไปไว้ใน /var/www/html/cms/
      sudo  mv  CMSimple_5-3  /var/www/html/cms
      sudo  chown  -R  www-data:www-data  /var/www/html/cms
    8. ทำ restart apache2
      sudo su –
      service apache2 restart
    9. ไปที่หน้าเว็บ http://VM_IP/cms/
    10. ศึกษาวิธีตั้ง Password ครั้งแรกได้จากไฟล์ readme.php
    11. ทำขั้นตอน setup Password ของ CMSimple
      sudo su –
      cd /var/www/html/cms/
      cp  ./setup/setupControl.php  .
      chmod 666 setupControl.php
    12. ไปที่หน้า login ของเว็บ http://VM_IP/cms/ และใส่ Password 
    13. ไปเปลี่ยน Password ที่เมนู Settings > CMS
    14. ตั้ง Password และคลิก Save
    15. ลอง logout แล้ว login ใหม่
    16. ใส่ Password ที่ตั้งใหม่
    17. ตอนนี้ก็จัดการ Pages ต่าง ๆ ที่ให้มาเป็นตัวอย่าง ศึกษาวิธีทำเพจได้เอง 
    18. เมื่อ logout ทุกครั้ง จะมีแจ้งว่า ได้บันทึกเพจไว้ 2 ไฟล์ พร้อมวันที่บันทึกเป็นสำเนา

    จบ คิดว่า มันง่ายดีในการนำมาใช้ทดสอบ และ ใช้งานได้จริงสำหรับเว็บเพจง่าย ๆ

  • สร้าง VM OpenNebula miniONE on KVM ตอนที่ 2 add one-context

    เป็นขั้นตอนติดตั้ง one-context ต่อจากตอนที่แล้ว

    ขั้นตอน

    1. คำสั่ง sudo su – และ คำสั่ง 

    wget https://github.com/OpenNebula/addon-context-linux/releases/download/v5.12.0.2/one-context_5.12.0.2-1.deb

    1. ลบ cloud-init ด้วยคำสั่ง apt-get purge -y cloud-init
      ติดตั้งด้วยคำสั่ง dpkg -i one-context_*deb || apt-get install -fy
    2. เมื่อเสร็จ ให้ออกจาก web console และ คลิก Power off hard
    3. เอา CD-ROM ออก
    4. เมื่อถึงตรงนี้ VM นี้ก็พร้อมใช้เป็นต้นแบบในครั้งต่อไปได้ เราจึง Save as Template สมมติให้ชื่อว่า ubuntu-server-20.04
    5. ปรับแต่ VM Template เพื่อเติมสิ่งที่เกี่ยวกับ Context โดยคลิกปุ่ม Update
    6. คลิกที่ Context และ คลิกที่ตัวเลือกทุกอัน
    7. ใส่ Custom vars คือ SET_HOSTNAME, USERNAME และ PASSWORD
    8. ตอนนี้ VM Template นี้ ก็พร้อมใช้งาน เพื่อสร้าง VM ใหม่อันต่อไป โดยจะคลิกที่คำว่า Instantiate ก็ได้
    9. เลือกได้ว่าจะให้สร้างทีละกี่ instances ส่วนชื่อให้ละไว้ไม่ต้องใส่ก็ได้
    10. จะได้ชื่อจาก ชื่อ VM Template และต่อท้ายด้วย VMID
    11. คลิกที่ web console เพื่อเข้าไปใช้งาน VM
    12. จะได้หน้านี้
    13. ทดสอบ login ด้วย username ชื่อ papa ตามที่เราตั้งใน Context
    14. หน้า Dashboard หลังจากที่เราสร้างเสร็จ 1 ตัว
    15. หากเข้าหน้าเว็บ Sunstone ไม่ได้เพราะลืม password ของ username oneadmin ดูที่นี่
    16. ถึงตรงนี้ เราควรจะ ssh จาก ubuntu desktop เข้าไปยัง VM ได้ แต่หากเราไม่สามารถ ssh เข้าไปยัง VM เพราะว่า ssh host key ไม่มีเนื่องจากข้อผิดพลาดในขั้นตอนติดตั้ง Ubuntu server ให้สร้างด้วยคำสั่ง ssh-keygen -A ในเครื่อง VM แล้ววนกลับไปสร้าง VM Template ใหม่ 

    ในตอนต่อไปก็จะเป็นการติดตั้ง CMS Web Site เพื่อใช้ในการทดสอบการให้บริการ TCP port 80 ผ่าน HAPROXY ของเครื่อง ubuntu desktop