Sunday, April 5, 2026

Hacked Axios 1.14.1 && 0.30.4 และ ตรวจสอบ version axios ใน nodejs project ใน Docker container

Ref: https://www.blognone.com/node/150163

  • ประเด็นคือ  axios โดยวาง trojan ไว้ ซึ่งมันจะทำงานเมื่อ axios ที่ติด malware ทำงานมันจะติดตั้ง plain-crypto-js เพิ่มเข้าไป ใน projecct และ แล้วไปควานหาข้อมูลที่สำคัญทุกอย่างใน .env แล้วส่งข้อมูลออกไปให้ ผู้ไม่ประสงค์ดี remote access trojan (RAT) นำไปใช้เจาะระบบท่านต่อไป และมันจะถอน lib plain-crypto-js ออกไปแบบเนียนๆ เลย

  • axios ที่โดน version 1.14.1 และ 0.30.4
  • เราจะตรวจสอบใน  container เราอย่างไรล่ะทีนี้

Solved

วิธีแรกรันจาก host แม่ได้เลย

$ docker exec mynode_name_container npm ls axios

วิธ๊ที่สอง เข้าไปใน  container ก่อนแล้วรันคำสั่งและ exit ออกมา

$ docker exec -it mynode_name_container sh

  • แล้วรันคำสั่งตรวจสอบ ใน container ต่อได้โดย

# npm ls axios

/usr/src/app # npm ls axios
nodeslide@1.0.0 /usr/src/app
`-- axios@1.xx.2
  • แบบนี้รอดคับ
  • หรือ yarn โดย

# yarn list --pattern axios

วิธีที่สามลองตรวจสอบดูว่า โปรเจคมี plain-crypto-js ติดตั้งไว้หรือไม่

# npm ls plain-crypto-js

  • ถ้าผลลัพธ์ได้ -- (empty) ก็โชคดีไป

กรณีโดนแล้ว

  • ให้ไป revoke token key ของ บริการที่เราเรียกใช้ใน project ที่มีใน .env ก่อนเลย แล้ว invoke  ใหม่
  • จากนั้น ไปแก้ไข package.json แล้ว แก้ axios version  ไปใช้ตัวใหม่ล่าสุด ที่ไม่ใช่ 1.14.1 และ 0.30.4  แล้วบันทึกไฟล์ให้เรียบร้อย

sudo nano ./package.json

  • ลบ folder ชื่อ node_mudules และ ไฟล์ package.lock.json ออก

sudo rm -rf ./node_modules && sudo rm ./package.lock.json

  • แล้วติดตั้ง lib ใหม่

sudo npm install

ติดตั้ง Android Studio + Flutter แบบ snap สำหรับ Ubuntu 24.04

Android
  • ติดตั้ง Android Studio (Ubuntu 24.04 มันจะได้ Android Studio Narwhal 3 Feature Drop | 2025.1.3 ถ้าอยากได้ panda ต้อง download ติดตั้งผ่าน .tar.gz เอง แบบ manual)
  • ติดตั้งผ่าน snap

sudo apt update

sudo snap install android-studio --classic

  • เพิ่ม user เราเพื่อรัน emulator

sudo adduser $USER kvm

Flutter

  • ติดตั้ง Flutter SDK (วิธีที่ง่ายที่สุด)

sudo snap install flutter --classic

  • ตั้งค่า Android Toolchain
  • หลังจากลง Flutter เสร็จแล้ว คุณต้องเชื่อมต่อ Flutter เข้ากับ Android Studio ที่เพิ่งลงไป:

flutter doctor --android-licenses

  • ถ้ารันคำสั่งนี้ได้ผลลัพธ์ประมาณนี้

Android sdkmanager not found. Update to the latest Android SDK and ensure that the cmdline-tools are installed to resolve this.

  • ให้เราติดตั้ง Command-line Tools ผ่าน Android Studio
  • เปิดโปรแกรม Android Studio
  • ไปที่ Settings (ถ้าอยู่ที่หน้า Welcome ให้คลิก More Actions หรือถ้าเปิดโปรเจกต์อยู่ให้ไปที่ File > Settings)
  • ไปที่หัวข้อ Languages & Frameworks > Android SDK
  • คลิกที่แถบ SDK Tools (อยู่ข้างๆ SDK Platforms)
  • มองหารายการที่ชื่อว่า Android SDK Command-line Tools (latest)
  • ติ๊กถูกที่หน้าช่องนั้น แล้วกด Apply หรือ OK เพื่อเริ่มการดาวน์โหลดและติดตั้ง
  • รันคำสั่งยอมรับ License อีกครั้ง

flutter doctor --android-licenses

  • เช็กความเรียบร้อยครั้งสุดท้าย

flutter doctor

  • ติดตั้งเครื่องมือเสริมสำหรับ Linux (optional)
  • เนื่องจาก Ubuntu 24.04 เป็นระบบที่เน้นการพัฒนา Desktop app ด้วย คุณต้องลง library เหล่านี้เพื่อให้ Flutter ทำงานได้ครบถ้วน:

sudo apt update

sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev

เพิ่มเติม

  • หากติดตั้งแล้วยังใช้ไม่ได้ อาจเป็นเพราะ Flutter หาตำแหน่ง SDK ไม่เจอ ให้คุณลองรันคำสั่งนี้ใน Terminal เพื่อระบุ Path (ปกติ Android Studio จะลงไว้ที่นี่ครับ):

flutter config --android-sdk ~/Android/Sdk

  • Dell Inspiron 14 5000 series เรารัน emulator android ไม่ขึ้นหว่า รันผ่าน physical device สาย usb ใน debug mode เท่านั้นหว่า 

สร้าง Alias Ubuntu 24.04 for IPSec VPN short

Ref: https://gemini.google.com/share/bb42a14dfb9a

1. การสร้าง Alias (ชั่วคราว)

หากคุณต้องการทดลองใช้ใน Session ปัจจุบันก่อน สามารถพิมพ์คำสั่งนี้ใน Terminal ได้เลย:

alias ipsec-conname-up='sudo ipsec up conname'

หมายเหตุ: วิธีนี้จะหายไปเมื่อคุณปิด Terminal


2. การสร้าง Alias (ถาวร)

เพื่อให้คำสั่งนี้ใช้งานได้ตลอดไปแม้จะ Restart เครื่อง ให้ทำตามขั้นตอนดังนี้ครับ:

  1. เปิดไฟล์คอนฟิก: โดยปกติจะใช้ไฟล์ .bashrc (สำหรับ Bash ซึ่งเป็น Default ของ Ubuntu)

    nano ~/.bashrc
  2. เพิ่มบรรทัด Alias: เลื่อนลงไปด้านล่างสุดของไฟล์ แล้วพิมพ์คำสั่งนี้ลงไป:

    alias ipsec-conname-up='sudo ipsec up conname'
  3. บันทึกและออกจากโปรแกรม: * กด Ctrl + O แล้วกด Enter เพื่อบันทึก

    • กด Ctrl + X เพื่อออก

  4. อัปเดตการตั้งค่า: เพื่อให้ระบบรับทราบการเปลี่ยนแปลงทันทีโดยไม่ต้อง Restart:

    source ~/.bashrc

ข้อควรรู้เพิ่มเติม

  • เรื่องรหัสผ่าน: เนื่องจากใน alias มีคำสั่ง sudo อยู่ เมื่อคุณพิมพ์ ipsec-conname-up ระบบจะยังคงถามรหัสผ่านของ User คุณตามปกติ (เว้นแต่คุณจะตั้งค่า NOPASSWD ในไฟล์ sudoers ซึ่งไม่แนะนำในด้านความปลอดภัย)

  • การตั้งชื่อ: หากคุณต้องการเปลี่ยนชื่อ alias เป็นอย่างอื่นในอนาคต เช่น vpn-on คุณก็เพียงแค่เปลี่ยนชื่อข้างหน้าเครื่องหมาย = ในขั้นตอนที่ 2 ครับ

Tip: หากคุณใช้งาน Zsh (เช่น ติดตั้ง Oh My Zsh เพิ่มเติม) ให้เปลี่ยนจากไฟล์ .bashrc เป็น .zshrc แทนนะครับ

Thursday, April 2, 2026

Setup connection IPSec Fortinet VPN

Ref:

  • https://community.fortinet.com/t5/FortiGate/Technical-Tip-IPsec-connection-between-FortiGate-and-Ubuntu-via/ta-p/207149

Env

  • Ubuntu 24.04 (sudo apt upgrade)

# install main and plugin package strongswan 

sudo apt update

sudo apt install strongswan

sudo apt install charon-systemd

sudo apt install strongswan libcharon-extra-plugins libstrongswan-standard-plugins

# check plugin load able

sudo ipsec statusall | grep "plugins"

  • คอนฟิก /etc/ipsec.conf อย่าลืมกันเหนียวก่อน

# config /etc/ipsec.conf เพิ่ม connection ไว้ด้านล่างสุดได้เลย อย่าลืม ด้านล่าง FGT ต้อง indent ด้วยนะ

conn "FGT"

    keyexchange=ikev1

    ikelifetime=1440m

    keylife=720m

    aggressive=yes            # <--- ลองเปลี่ยนจาก no เป็น yes

    ike=aes256-sha256-modp2048 # <--- มั่นใจว่าเป็น modp2048 (Group 14) [cite: 100, 137]

    esp=aes256-sha256-modp2048

    xauth=client

    left=%defaultroute

    leftsourceip=%config

    leftauth=psk

    rightauth=psk

    leftauth2=xauth

    right=122.x.x.xxx      # [cite: 54]

    rightid=122.x.x.xxx    # [cite: 54]

    rightsubnet=0.0.0.0/0

    xauth_identity=myuservpn     # <--- ใส่ Username ตามตัวอย่าง [cite: 157]

    auto=add

  • คอนฟิก secret key อย่าลืมกันเหนียวด้วย /etc/ipsec.secret

# config /etc/ipsec.secrets

122.x.x.xxx : PSK "pass share key"

myuservpn : XAUTH "mypasswordvpn"

  • ผิดอยู่ตั้งนานที่ตรงนี้

# % 122.x.x.xxx : PSK "passkey" ไม่ต้องมี % นำหน้า 122

  • สตาร์ท vpn connection ที่สร้างไว้ชือ่ FGT

# start vpn connection 

sudo ufw allow 500/udp

sudo ufw allow 4500/udp

sudo ipsec restart

sudo ipsec up FGT

  • ถ้าเชื่อมต่อได้ปกติ จะขึ้นประมาณนี้

connection 'FGT' established successfully

  • หยุดก็น่าจะประมาณนี้
sudo ipsec down FGT
IKE_SA [1] closed successfully
  • ถ้ายังเชื่อมต่อไม่ได้ให้ไปดู log
sudo tail -f /var/log/syslog | grep --color=auto charon
  • แล้วเอา log ไปถาม ลูกพี่ต่อนะจ้ะ
เพิ่มเติม
  • กรณีสั่ง sudo ipsec up CON_NAME แล้ว shutdown เครื่องโดยไม่สั่ง sudo ipsec down CON_NAME 
  • เปิดเครื่องใหม่สั่ง sudo ipsecc up CON_NAME แล้ว
2026-04-05T10:03:47.597027+07:00 Inspiron-5458 charon: 03[NET] no socket implementation registered, sending failed

2026-04-05T10:03:54.797559+07:00 Inspiron-5458 charon: 16[IKE] sending retransmit 2 of request message ID 0, seq 1

2026-04-05T10:03:54.798356+07:00 Inspiron-5458 charon: 16[NET] sending packet: from 192.168.1.86 to 122.154.130.253[500] (560 bytes)

2026-04-05T10:03:54.798599+07:00 Inspiron-5458 charon: 03[NET] no socket implementation registered, sending failed

  • เชื่อมต่อ VPN ไม่ได้ ลูกพี่บอกว่า มัน มี service ที่รันอยู่แล้วเพราะไม่สั่ง down ก่อนหน้า เลยพยายามเปิด socket ซ้ำซ้อน

1. แก้ไขปัญหาเฉพาะหน้า (เพื่อให้รันได้ทันที) อันนี้ลองแล้วใช้ได้คับ

  • สั่งหยุดและเคลียร์ Service ที่ค้างอยู่ แล้วเริ่มระบบใหม่แบบสะอาดๆ ครับ:

sudo systemctl stop strongswan
sudo systemctl stop strongswan-starter
sudo ipsec restart
sudo ipsec up CON_NAME

2. วิธีแก้ปัญหาถาวร (ป้องกันไม่ให้เกิดอีกหลัง Reboot) อันนี้ลอง ไม่ down แล้วปิดและเปิดใหม่ สามารถ สั่ง up ได้ปกติ

ใน Ubuntu 24.04 แพ็กเกจ strongswan จะพยายามรัน charon-systemd (แบบใหม่) ผ่าน systemd โดยอัตโนมัติ ซึ่งมันไปตีกับ strongswan-starter (แบบเก่าที่คุณใช้คอนฟิก ipsec.conf) ให้คุณปิดตัวที่ก่อปัญหาทิ้งไปครับ:

  1. Disable Service แบบใหม่:

    sudo systemctl disable strongswan && sudo systemctl stop strongswan
  2. ตั้งค่าให้ Service แบบเก่ารันตอนบูตแทน:

    sudo systemctl enable strongswan-starter

สาเหตุที่เกิดขึ้นจาก Log ของคุณ

  • "initiating Aggressive Mode": ระบบพยายามเริ่มเชื่อมต่อตามคอนฟิกที่คุณตั้งไว้ได้ถูกต้องแล้ว

  • "no socket implementation registered": ตัว Daemon (charon) บูตขึ้นมาสมบูรณ์แต่ปลั๊กอินสำหรับสร้าง Network Socket ไม่ทำงาน เนื่องจากมีการรัน Service ซ้อนกัน ทำให้ปลั๊กอินถูกแย่งใช้งานหรือโหลดไม่สำเร็จครับ

ข้อแนะนำเพิ่มเติม

หากคุณต้องใช้ VPN นี้บ่อยๆ และไม่อยากพิมพ์คำสั่งทุกครั้งที่เปิดเครื่อง คุณสามารถเปลี่ยนค่าใน /etc/ipsec.conf จาก:

  • auto=add เป็น auto=start เพื่อให้ระบบพยายามเชื่อมต่อ VPN ให้ทันทีที่บูตเครื่องและมีอินเทอร์เน็ตครับ

  • หากต้องการเปลี่ยนชื่อ หรือ เพิ่ม connection vpn ก็เข้าไปแก้ไฟล์

sudo nanao /etc/ipsec.conf 

  • เมื่อแก้ไขหรือเพิ่ม connection vpn อันใหม่แล้ว restart ipsec และจะใช้ชื่อ connection ใหม่ได้

sudo ipsec restart && sudo ipsec up connection_new

  • เราสามารถตรวจสอบ สถานะต่างๆ แล ip vpn ด้วยคำสั่ง

sudo ipsec statusall

  • หรือ คำสั่ง 

ip addr show

Install Ubuntu 24.04 Dell Inspiron 5458

  • ประเด็นคือ Notebook เก่าเปิดติด เพราะ bios ถ่านหมด mainboard เลยมีการเคลียร์ไฟค้าง suspend mode 
  • เพิ่ม RAM จาก 4 + 8 = 12 และ HD 500GB => SSD 1TB (samsung)
  • boot usb ubuntu 24.04 ติดตั้งเสร็จ (default ทุกอย่างรวมทั้ง disk eraser all and create partition auto) 
  • พอรีสตาร์ทขึ้น 

No bootable devices found.

Press F1 key to retry boot.

Press F2 key for setup utility

Press F5 key to run onboard diagnostics.

  • ลองไปปิด เปิดค่า  Secure Boot ใน bios  หรืออื่นๆ ตาม AI บอกก็ยังบูตไม่ขึ้น
  • สุดท้ายแก้ไขโดย ลงใหม่สิคับ
  • แต่ตอนสร้าง partition เลือกแบบ manual แบ่งเองสิคับ


  • /boot/efi => FAT32 , 1.13GB
  • swap  => 4GB
  • /  => Ext4 ขนาดใช้ที่เหลือทั้งหมด
  • ติดตั้งเสร็จ รีสตาร์ท ก็บูตเข้าระบบได้ปกติ เกือบไม่รอด

2FA authentication phpMyAdmin

 Conversation with Gemini

You said

สอบถามคับ ผมจะใช้ google authenticator สำหรับการเข้าระบบ phpmyadmin ได้มั้ยคับ


Gemini said

ได้แน่นอนครับ การเพิ่ม Two-Factor Authentication (2FA) ด้วย Google Authenticator ให้กับ phpMyAdmin เป็นวิธีที่ดีมากในการยกระดับความปลอดภัย (โดยเฉพาะถ้าคุณเปิดให้เข้าถึงผ่าน Public IP)


คุณสามารถทำได้ 2 วิธีหลัก ตามสภาพแวดล้อมของระบบครับ:

วิธีที่ 1: ใช้ฟีเจอร์ 2FA ของ phpMyAdmin โดยตรง (แนะนำ)

ตั้งแต่เวอร์ชัน 4.8 เป็นต้นไป phpMyAdmin มีระบบ 2FA มาให้ในตัวแล้วครับ

ขั้นตอนการตั้งค่า:

  • Login เข้า phpMyAdmin ด้วยสิทธิ์ root หรือสิทธิ์สูงสุด
  • ไปที่แถบเมนู Settings (การตั้งค่า) ด้านบน
  • เลือกเมนูย่อย Two-factor authentication (การยืนยันตัวตนแบบสองระดับ)
  • คุณจะเห็นตัวเลือก ให้เลือก "Authentication App (2FA)" (ซึ่งรองรับ Google Authenticator)
  • ระบบจะแสดง QR Code ขึ้นมา ให้ใช้แอป Google Authenticator ในมือถือสแกน
  • กรอกรหัส 6 หลักที่ปรากฏในแอปเพื่อยืนยันการเชื่อมต่อ

ข้อควรระวัง: ระบบจะบังคับให้คุณตั้งค่า phpMyAdmin configuration storage (ฐานข้อมูลชื่อ phpmyadmin) ให้เรียบร้อยก่อน หากยังไม่ได้ตั้งค่า ระบบจะแจ้งเตือนให้สร้างตารางเก็บข้อมูลก่อนครับ

-------------------------------------------------------------------------------------

วิธีที่ 2: ใช้ Google Authenticator ผ่าน Apache/Nginx (ระดับ Server)

วิธีนี้จะไม่ได้ไปยุ่งกับตัว phpMyAdmin แต่เป็นการสร้าง "ประตูกั้น" ก่อนจะถึงหน้า Login ของ phpMyAdmin อีกทีครับ เหมาะสำหรับคนที่ต้องการความปลอดภัยชั้นนอกสุด

สำหรับ Linux (Ubuntu/Debian) ด้วย Apache:

  • ติดตั้ง Module: sudo apt-get install libapache2-mod-authn-otp หรือใช้ Google Authenticator PAM module
  • ตั้งค่าในไฟล์ Config ของ Apache (เช่น /etc/apache2/conf-enabled/phpmyadmin.conf) โดยระบุให้เรียกใช้การตรวจสอบสิทธิ์ผ่าน PAM
  • วิธีนี้จะยุ่งยากกว่าวิธีแรก เพราะต้องคอนฟิกไฟล์ระบบในระดับ Server ครับ


ข้อแนะนำเพิ่มเติมสำหรับคุณ (Jui)

  • เนื่องจากคุณใช้งานทั้ง Docker และ Nginx Reverse Proxy บ่อยครั้ง:
  • หากใช้ Docker: คุณสามารถส่งค่า Environment Variable ใน docker-compose.yml เพื่อเปิดใช้งานฟีเจอร์นี้ได้ง่ายขึ้น หรือตรวจสอบว่า Image ที่ใช้อยู่รองรับการเก็บ Session 2FA ไว้ในฐานข้อมูลหรือไม่ (เพื่อไม่ให้รหัสหายเวลา Restart Container)
  • อย่าลืมจด Backup Codes: เมื่อตั้งค่าเสร็จแล้ว ระบบมักจะมีรหัสสำรองมาให้ เผื่อกรณีมือถือหายหรือแอปมีปัญหา ควรเก็บรหัสนั้นไว้ในที่ปลอดภัยครับ
  • สรุป: วิธีที่ง่ายและเร็วที่สุดคือ วิธีที่ 1 ผ่านหน้าเมนู Settings ใน phpMyAdmin ได้เลยครับ
-----------------------------------------------------------------------------
เลือกทำ วิธีที่ 1

ต้องตั้งค่า phpMyAdmin Configuration Storage ก่อน
ขั้นตอนที่ 1: นำเข้าไฟล์ SQL พื้นฐาน
  • phpMyAdmin เตรียมไฟล์สำหรับสร้างตารางเหล่านี้ไว้ให้แล้วครับ
  • เข้าไปในโฟลเดอร์ที่ติดตั้ง phpMyAdmin (ถ้าเป็นบน Windows/XAMPP จะอยู่ที่ C:\xampp\phpMyAdmin\sql)
  • หาไฟล์ที่ชื่อว่า create_tables.sql
  • เปิด phpMyAdmin ของคุณ -> ไปที่แถบ Import (นำเข้า)
  • เลือกไฟล์ create_tables.sql แล้วกด Go (ลงมือ)
  • หรือไปคัดลอก content ใน phpmyadmin/sql/create_tables.sql แล้วเข้าระบบ phpmyadmin ปกติ เลือกเมนู SQL แล้ววาง statement create table ลง จากนั้น กด Go
  • ตอนนี้คุณจะได้ฐานข้อมูลใหม่ชื่อ phpmyadmin พร้อมตารางต่างๆ (เช่น pma__userconfig, pma__2fa)
ขั้นตอนที่ 2: แก้ไขไฟล์ config.inc.php
  • เพื่อให้ phpMyAdmin รู้จักฐานข้อมูลที่เพิ่งสร้างขึ้น คุณต้องไปเปิดใช้งานในไฟล์คอนฟิกครับ
  • เปิดไฟล์ config.inc.php (อยู่ในโฟลเดอร์หลักของ phpMyAdmin)
  • มองหาบรรทัดที่เกี่ยวกับ "User used to manipulate with storage" และลบเครื่องหมาย // ออก หรือเพิ่มโค้ดนี้ลงไป:
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma'; // หรือ root
$cfg['Servers'][$i]['controlpass'] = 'your_password'

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
/* บรรทัดสำคัญสำหรับ 2FA */
$cfg['Servers'][$i]['2fa'] = 'pma__2fa';

  • แล้วลองเข้าระบบใหม่ ด้วย user ที่ pma  หรือ user ที่คุณคอนฟิกให้ใช้ 2FA ไว้
เพิ่มเติม
  • user ที่คอนฟิกใช้ 2FA สำหรับเข้า phpmyadmin จะไม่ส่งผลต่อระบบที่ใช้ user นี้ในการเชื่อมต่อฐานข้อมูล
  • ส่วน user อื่นๆ ที่อยากทำ  2FA ก็ให้ login เข้าปกติ แล้วไปตั้งค่า  setting  2fa  ได้เลย ไม่ต้อง config  อะไรเพิ่มแล้ว เพราะมี db phpmyadmin, กับ config.inc.php  เรียบร้อยแล้ว

Monday, March 30, 2026

เกี่ยวกับ Labtop Dell Inspiron 14 5000 Series เปิดไม่ติด

Dell Inspiron 5458 Service Tag: 8RY8S32

  • ประเด็นคือ คอมโน๊ตบุคเก่าเปิดไม่ติด สัก 5 ปีไม่ได้ใช้ มาเปิดอีกทีเปิดติด
  • มีเสียงลำโพงดัง บอกสัญญาณให้เปลี่ยนถ่าน bios CR2032
  • พอเปลี่ยนเสร็จเปิดติด ปกติ  Windows 10 และปิดเครื่อง
  • ทีนี้เปิดไม่ติดเลย อืมเป็นไรวะ มันเก่าแล้ว 
  • เลยซื้อ แบต (M5Y1K) ใน แอปส้ม 300 กว่าบาท ไม่แพงเปลี่ยน
  • เพิ่ม RAM DDR3L Bus 1600
  • เปลี่ยน HD 500 GB เป็น SSD 1 TB
  • อัพเดท Bios version  A02 to A18 
  • ยังไม่ลองเปลี่ยนสาย AC Power เท่านั้นเอง
  • รีเซต default bios setting แล้วก็ยังเหมือนเดิม
  • ก็ยังอาการเหมือนเดิม เปิดไม่ติด
  • แก้ไขโดย ถอดถ่าน และ แบต ที่เปลี่ยนใหม่แล้วออก เคลียร์ไฟ ค้างบอร์ด 
  • แล้วใส่ถ่าน bios กลับก็จะเปิดติด
  • สุดท้ายลองมั่วๆ ดู ตั้งค่า Bios เรื่อง Power option ให้ AC Wake up อันนี้
  • แล้วใช้งานคือ ตอนปิดเครื่อง แล้วถอด สาย AC ออก (แบตไม่ต้องถอด)
  • พอจะเปิดเครื่องให้ เสียบสาย AC Adapter มันก็จะติดเองซะงั้น




  • จากภาพมั่วๆ อยู่คือ Set default bios ก่อนเลย แล้วตั้งค่าประมาณนี้
  • POST Behavior เลือก Fastboot เป็น Auto (ค่า default จะเป็น Th....)
  • Virtualize เลือก ปิดมันไว้ไม่ต้อง  enable (ค่า default enable)
  • Power Management  เมนู AC Behavior  เลือก enable Wake on AC (ค่า default uncheck)
  • ประเด็นทำ AC Behavior ก็น่าจะพอให้ เสียบสาย AC Adapter แล้วเครื่องใช้งานได้ปกติแล้วคับ

สรุปสิ่งที่ทำ

  • เปลี่ยนถ่าน Bios ให้เรียบร้อย และ ไปตั้งคอนฟิก bios AC wake up
  • ตอนใช้งานก็เปิดฝา ขึ้นมา และ เสียบสาย Adapter AC เครื่องก็จะบูตได้แล้ว

เพิ่มเติม

  •  F12 เลือก boot หรือ เข้า bios

Ref

  • https://www.dell.com/support/product-details/en-th/servicetag/0-RDMzMDczUUhuTUMvcmUrN3lRa0dlZz090/drivers

Saturday, March 21, 2026

JPTC Smart policy

 

Privacy Policy / นโยบายความเป็นส่วนตัว

JPTC Smart – ระบบบริหารจัดการเวรเปล

นโยบายความเป็นส่วนตัว

แอปพลิเคชัน JPTC Smart ("แอป") พัฒนาขึ้นเพื่อให้หน่วยบริการสุขภาพต่างๆ สามารถนำไปใช้บริหารจัดการระบบงานเวรเปลของหน่วยบริการ ได้อย่างมีประสิทธิภาพ นโยบายนี้อธิบายการเก็บรวบรวม ใช้ และปกป้องข้อมูลของผู้ใช้งาน

ข้อมูลที่แอปเก็บรวบรวม

  • ข้อมูลส่วนบุคคล: ชื่อ-นามสกุล, ตำแหน่งงาน, หน่วยงาน, เบอร์โทรศัพท์ 
  • ข้อมูลการทำงาน: สถานีเปล, ประเภทเวร, การบันทึกใบงาน และข้อมูลที่เกี่ยวข้องกับการปฏิบัติงาน
  • ข้อมูลที่สแกนด้วย QR Code: แอปใช้กล้องของอุปกรณ์เพื่อสแกน QR Code สำหรับยืนยันตัวตน ผู้ขอรับบริการ และสถานที่ปลายทางโดยแอปจะไม่บันทึกภาพถ่ายหรือวิดีโอไว้ในอุปกรณ์

วัตถุประสงค์การใช้ข้อมูล

แอปใช้ข้อมูลที่รวบรวมเพื่อวัตถุประสงค์ต่อไปนี้เท่านั้น:

  • บริหารจัดการระบบงานเวรเปลของหน่วยบริการสุขภาพต่างๆ
  • แสดงรายการใบงานที่แจ้งขอใช้บริการเข้ามา
  • ยืนยันตัวตนของผู้ใช้บริการผ่าน QR Code และ ยืนยันสถานที่ปลายทางผ่าน QR Code
  • แสดงรายงานสรุปการทำงานและสถิติงานของเวรนั้นๆ

การอนุญาตที่แอปต้องการ

  • กล้อง (Camera): ใช้เพื่อสแกน QR Code เท่านั้น ไม่ได้ใช้เพื่อถ่ายภาพหรือบันทึกวิดีโอ

การเปิดเผยข้อมูลต่อบุคคลที่สาม

แอปไม่มีการขาย, แลกเปลี่ยน หรือเปิดเผยข้อมูลส่วนบุคคลของผู้ใช้ให้แก่บุคคลภายนอก ยกเว้นเป็นไปตามที่กฎหมายกำหนด

การเก็บรักษาและความปลอดภัยของข้อมูล

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

สิทธิ์ของผู้ใช้

ผู้ใช้มีสิทธิ์ขอดู, แก้ไข หรือลบข้อมูลส่วนบุคคลของตนเองได้ โดยติดต่อผู้ดูแลระบบของหน่วยบริการที่ท่านสังกัด

การเปลี่ยนแปลงนโยบาย

นโยบายนี้อาจได้รับการปรับปรุงเป็นครั้งคราว ผู้ใช้จะได้รับการแจ้งเตือนผ่านทางแอปหรือช่องทางอื่นที่เหมาะสม


Contact / ติดต่อ

หากมีคำถามเกี่ยวกับนโยบายนี้ กรุณาติดต่อ: If you have questions about this policy, please contact:

[Pongpichit Panna] 📧 [pongpichitpanna@gmail.com]

Thursday, February 19, 2026

Change bind repository Github ใน project เรา

  • ประเด็นคือ สร้าง repo version github ชื่อใหม่เลย ไม่อยาก เปลี่ยนชื่อ
  • ทำประมาณนี้
  • สร้าง repo private github ไว้รอก่อน

Step

  • เข้าไป root project

$ cd myproject

  • ดูการผูก repo ปัจจุบันของ project folder

$ git remote -v

  • เปลี่ยน Remote URL ไปยัง  repo ที่เราสร้างใหม่ไว้รอ

$ git remote set-url origin https://github.com/juuier/mynewrepo.git

  • ดูการผูก repo ปัจจุบันของ project folder อีกรอบ

$ git remote -v

  • push code ขึ้น remote repo ใหม่

$ git push -u origin main

เพิ่มเติม

  • กรณีต้องการลบ Repo เก่า: หลังจากตรวจสอบที่ Repo ใหม่แล้วว่าไฟล์และประวัติมาครบ คุณสามารถเข้าไปลบ Repository myrepo ใน GitHub Settings ได้เลยครับ
  • หรือ กรณีเราไม่สร้าง repo ใหม่แค่เปลี่ยนชื่อ repo โดยไปที่ repo นั้น Settings ที่ Repository name 
  • จากนั้นเปลี่ยนชื่อและ คลิกปุ่ม Rename ครั้งแรกจะเป็นการตรวจสอบชื่อว่าซ้ำกับที่มีอยู่หรือไม่
  • จากนั้น คลิกปุ่ม Rename อีกครั้งเพื่อบันทึกการเปลี่ยนชื่อ
  • สุดท้ายสำคัญมาก ที่  project client ที่ผูก repo ไว้ ให้เปลี่ยนการผูกไปชื่อใหม่ด้วยคำสั่ง
$ git remote origin https://github.com/myuser/mynewrepo.git
$ git remote -v

Wednesday, February 18, 2026

เริ่มต้นอีกครั้งกับ Github

echo "# myproject" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/myuser/myproject.git
git push -u origin main

อธิบายโดย GPT

echo "# myproject" >> README.md

ความหมาย

➡️ เขียนข้อความ

# mdispen

ลงไปในไฟล์ชื่อ README.md

ถ้าไฟล์ยังไม่มี → จะสร้างไฟล์ใหม่ให้

ถ้ามีอยู่แล้ว → จะต่อท้ายลงไป

ใช้เพื่อสร้างไฟล์อธิบายโปรเจกต์ (หน้าแรกใน GitHub)

2️⃣

git init

ความหมาย

➡️ สร้าง Git repository ในโฟลเดอร์ปัจจุบัน

คือบอกว่า

โฟลเดอร์นี้ จะเริ่มใช้ Git แล้ว

หลังจากสั่ง จะมีโฟลเดอร์

.git

ถูกสร้างขึ้น

3️⃣

git add README.md

ความหมาย

➡️ เพิ่มไฟล์ README.md เข้า staging area

แปลว่า

เตรียมไฟล์นี้ไว้สำหรับ commit

ยังไม่ได้บันทึกจริง

4️⃣

git commit -m "first commit"

ความหมาย

➡️ บันทึกการเปลี่ยนแปลงลงใน Git

พร้อมข้อความอธิบายว่า

first commit

สรุปคือ

เก็บ snapshot แรกของโปรเจกต์

5️⃣

git branch -M main

ความหมาย

➡️ ตั้งชื่อ branch หลักเป็น main

-M = บังคับเปลี่ยนชื่อ

ใช้ในกรณีที่ branch เดิมอาจชื่อ master

ผลคือ

branch ปัจจุบัน = main

6️⃣

git remote add origin https://github.com/myuser/myproject.git

ความหมาย

➡️ ผูก repo ในเครื่อง

กับ repo บน GitHub

ชื่อ remote คือ

origin

ซึ่งชี้ไปที่

https://github.com/myuser/myproject.git

พูดง่าย ๆ คือ

บอก Git ว่า ปลายทางอยู่ที่ GitHub repo นี้

7️⃣

git push -u origin main

ความหมาย

➡️ ส่ง branch main ขึ้น GitHub

แยกความหมายได้เป็น

origin = ชื่อ remote

main = ชื่อ branch

-u = จำค่านี้ไว้เป็นค่าเริ่มต้น

หลังจากนี้คุณจะสามารถพิมพ์แค่

git push

ได้เลยในครั้งต่อไป

สรุป flow ทั้งชุดนี้ลำดับที่คุณทำคือ

สร้างไฟล์

→ สร้าง git

→ เตรียมไฟล์

→ commit

→ ตั้งชื่อ branch

→ ผูก GitHub

→ push ขึ้น GitHub

⚠️ สำคัญมาก (จาก error ที่คุณเคอเจอ)

จากบทสนทนาก่อนหน้าของคุณที่ขึ้นว่า

Password authentication is not supported

คำสั่งนี้

git push -u origin main

❌ จะใช้ "รหัสผ่าน GitHub" ไม่ได้แล้ว

ต้องใช้

✅ Personal Access Token (PAT)

แทนรหัสผ่าน

ตอนขึ้นถามว่า

Username for 'https://github.com':

Password for 'https://...':

ให้ใส่แบบนี้

Username → myuser

Password → 👉 วาง token

เพิ่มเติม

  • สร้างไฟล์ .gitignore  สำหรับไฟล์ .env หรือ node_module หรือ writable/* ไว้ไม่ต้อง up ขึ้นก็ได้ 
  • เปิด terminal ใน project folder แล้วรันคำสั่ง ตาม step ด้านบนใน project folder ได้เลย

ทบทวนสร้าง private key for remote ssh server

Server Linux Ubuntu

Client Windows 11

  • เปิด power shell

> ssh-keygen -t ed25519 -C "your_email@example.com"

  • ถ้าถาม  key ก็ enter ผ่านไปเลยไม่ต้องใส่ก็ได้ จะได้ไฟล์อยู่ที่
  • C:\Users\YourName\.ssh\
  • id_ed25519 -> private key
  • id_ed25519.pub - > public key
  • นำ Public Key ไปไว้ที่ Server (ฝั่ง Linux)
  • เปิดไฟล์  C:\Users\YourName\.ssh\id_ed25519.pub ใน notepad และ คัดลอก เนื้อหาใน public key ในนั้นไว้
  • จากนั้น remote linux server  วางเนื้อหา  public key ที่คัดลอกไว้จากฝั่ง client  

~/.ssh/authorized_keys

  • และบันทึกไฟล์ที่ server ให้เรียบร้อย
  • ทดสอบ ssh ฝั่ง windows client โดยเปิด power shell

> ssh user@remotehost 

Client Linux หรือ MacOS

$ ssh-keygen -t ed25519 -C "your_email@example.com"

ขั้นตอนการตอบคำถาม:

  1. ระบบจะถามที่เก็บไฟล์ (Enter file in which to save the key): ให้กด Enter เพื่อใช้ค่าเริ่มต้น (/Users/yourname/.ssh/id_ed25519)

  2. ระบบจะถาม Passphrase: แนะนำให้ตั้งรหัสผ่านสั้นๆ เพื่อล็อคไฟล์ Key ไว้ (หรือกด Enter ข้ามไปเลยถ้าไม่ต้องการ)

$ ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip
  • หลังจากนั้น Key จะถูกไปวางแบบ appendใน ~/.ssh/authorized_keys บน Server ให้ทันที
  • ทดสอบ ssh remote host ได้เลย หรือ ใช้ vscode remote ssh ได้เลย โดยใช้ private key เข้าระบบได้เลย

Sunday, February 15, 2026

Run OWASP ZAP บน windows 11 แล้ว error no jvm


  • โหลดและติดตั้ง ZAP 2.17 https://www.zaproxy.org/download/ สำหรับ windows 11 แล้วรันขึ้น Error
  • ไปโหลด  JDK 8.0++ มาก็รันไม่ได้ (มันเวอร์ชั่นเก่ามากๆ ต้องโหลดใหม่กว่านี้น่าจะผ่าน)

No JVM could be found on your system.
Please define EXE4J_JAVA_HOME to point to an installed 64-bit JDK or JRE or download a JRE from https://adoptium.net
Log: C:user...
Solved
  • เข้าเว็บ https://adoptium.net ดาวน์โหลด Eclipe OpenJDK มาแล้วติดตั้งก็รันได้แล้ว
  • หรือเข้าเว็บ  Oracle  ไปโหลด https://www.oracle.com/asean/java/technologies/downloads/

Monday, January 26, 2026

Install MariaDB / MySQL MacOS 26.2

  • ติดตั้ง 

$ brew install mariadb

  • ให้รันอัตโนมัติทุกครั้งที่เปิดเครื่อง:

$ brew services start mariadb

  • รันเฉพาะตอนที่อยากใช้งาน (Manual):

$ mariadb-server

  • ตั้งความปลอดภัย พร้อมตั้งรหัสผ่าน root (ถามรหัสผ่าน root ครั้งแรกกด enter ผ่านเลย)

$ sudo mariadb-secure-installation

  • เข้าสู่ระบบ

$ mariadb -u root -p

  • เปลี่ยนรหัสผ่าน root

$ mariadb-admin -u root -p password "รหัสผ่านใหม่ที่ต้องการ" 
  • ตรวจสอบการเปิดพอร์ต

$ sudo lsof -i -nP -P | grep LISTEN | grep 3306 

  • ถ้าอยากใช้ MySQL เปลี่ยน mariadb -> mysql

$ brew install mysql 

$ brew services start mysql

$ sudo mysql_secure_installation 

$ mysql -u root -p

$ brew services stop mariadb
$ brew uninstall mariadb 

Use CLI dcoker on MacOS

$ brew install colima $ colima start $ docker ps -a
Env
  • MacOS 26.2 

Ref

  • https://apple.stackexchange.com/questions/373888/how-do-i-start-the-docker-daemon-on-macos 

Popular Posts