คำตอบสั้น ๆ: ตั้ง Timezone ของเซิร์ฟเวอร์เป็น Asia/Bangkok เปิดการซิงก์เวลาผ่าน NTP ด้วย systemd-timesyncd หรือ chrony และรีสตาร์ตบริการที่ต้องใช้เวลาที่ถูกต้อง
คู่มือนี้อธิบาย Timezone ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Cloud Server ส่วนใหญ่ตั้ง Timezone เป็น UTC มาตั้งแต่ต้น ซึ่งช้ากว่าเวลาประเทศไทย 7 ชั่วโมง ผลที่ตามมาคือเวลาใน Log ไม่ตรงกับเวลาที่เกิดเหตุจริง Cronjob ที่ตั้งไว้ตี 2 กลับทำงานตอน 9 โมงเช้า และเวลาในอีเมลหรือรายงานผิดเพี้ยน นอกจาก Timezone แล้ว นาฬิกาของเครื่องก็ต้องตรงด้วย เพราะเวลาที่คลาดเคลื่อนทำให้ SSL/TLS, การยืนยันตัวตนแบบ OTP และ Replication ของฐานข้อมูลมีปัญหาได้
คู่มือนี้อธิบายการตั้ง Timezone เป็น Asia/Bangkok และการเปิดซิงก์เวลาอัตโนมัติผ่าน NTP บน Ubuntu 22.04/24.04 (ใช้ systemd-timesyncd) และ AlmaLinux/Rocky Linux 8-9 (ใช้ chrony)
สิ่งที่ต้องเตรียม
- สิทธิ์ root หรือผู้ใช้ที่ใช้
sudoได้ - เซิร์ฟเวอร์ต้องออกอินเทอร์เน็ตทาง UDP Port 123 ได้ (ส่วนใหญ่เปิดอยู่แล้ว เพราะเป็นการเชื่อมต่อขาออก)
- ถ้าเซิร์ฟเวอร์รันฐานข้อมูลหรือแอปที่พึ่งพาเวลา ให้เลือกช่วงเวลาที่กระทบผู้ใช้น้อยสำหรับรีสตาร์ตบริการหลังเปลี่ยน Timezone
ขั้นตอนที่ 1: ดูการตั้งค่าเวลาปัจจุบัน
timedatectl
ตัวอย่างผลลัพธ์บนเครื่องที่ยังเป็น UTC
Local time: Sat 2026-09-19 02:15:04 UTC
Universal time: Sat 2026-09-19 02:15:04 UTC
RTC time: Sat 2026-09-19 02:15:04
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
บรรทัดที่ต้องดูคือ Time zone, System clock synchronized (นาฬิกาซิงก์แล้วหรือยัง) และ NTP service (บริการซิงก์เวลาทำงานอยู่หรือไม่)
ขั้นตอนที่ 2: ตั้ง Timezone เป็นเวลาประเทศไทย
ดูชื่อ Timezone ที่ถูกต้องก่อน
timedatectl list-timezones | grep -i bangkok
ผลลัพธ์คือ Asia/Bangkok จากนั้นตั้งค่า
sudo timedatectl set-timezone Asia/Bangkok
คำสั่งนี้แก้ลิงก์ /etc/localtime ให้ชี้ไปยังข้อมูล Timezone ใหม่ และมีผลทันทีโดยไม่ต้องรีบูต ส่วน Ubuntu ยังมีไฟล์ /etc/timezone ที่บางโปรแกรมอ่าน ถ้าไฟล์นี้ยังแสดงค่าเดิม ให้รัน sudo dpkg-reconfigure -f noninteractive tzdata เพื่อให้ตรงกัน
หมายเหตุ: บางทีมเลือกให้เซิร์ฟเวอร์อยู่ที่ UTC ต่อไป แล้วให้แอปแปลงเป็นเวลาท้องถิ่นเอง ซึ่งสะดวกเมื่อมีเซิร์ฟเวอร์หลายประเทศ ถ้าเซิร์ฟเวอร์ทั้งหมดของคุณให้บริการในไทย การตั้งเป็น
Asia/Bangkokจะอ่าน Log และตั้ง Cronjob ได้ง่ายกว่า ประเทศไทยไม่มีการปรับเวลาตามฤดูกาล จึงไม่มีปัญหาเวลาซ้ำหรือหายไปปีละครั้ง
ขั้นตอนที่ 3: เปิดการซิงก์เวลาอัตโนมัติ
sudo timedatectl set-ntp true
คำสั่งนี้เปิดบริการซิงก์เวลาที่ติดตั้งอยู่ในเครื่อง แต่ละ Distro ใช้บริการต่างกัน ตรวจตามหัวข้อด้านล่าง
Ubuntu: systemd-timesyncd
systemctl status systemd-timesyncd
timedatectl timesync-status
สถานะต้องเป็น active (running) ส่วน timesync-status แสดง Server ที่ใช้ (ค่าเริ่มต้นคือ ntp.ubuntu.com) และค่า Offset ซึ่งควรเป็นหลักมิลลิวินาทีหรือน้อยกว่า ถ้าไม่พบ Service นี้ ให้ติดตั้งด้วย sudo apt install systemd-timesyncd
ถ้าต้องการเปลี่ยน Server เช่น ใช้ Pool ของประเทศไทย ให้สร้างไฟล์ตั้งค่าเพิ่มเติม
sudo mkdir -p /etc/systemd/timesyncd.conf.d
sudo nano /etc/systemd/timesyncd.conf.d/local.conf
[Time]
NTP=0.th.pool.ntp.org 1.th.pool.ntp.org
FallbackNTP=ntp.ubuntu.com
sudo systemctl restart systemd-timesyncd
AlmaLinux / Rocky Linux: chrony
sudo dnf install -y chrony
sudo systemctl enable --now chronyd
chronyc tracking
chronyc sources -v
chronyc tracking ต้องมี Leap status : Normal และค่า System time ที่ห่างจากเวลาจริงเพียงเล็กน้อย ส่วน chronyc sources ต้องมีอย่างน้อยหนึ่ง Server ที่ขึ้นต้นด้วย ^* ซึ่งหมายถึง Server ที่กำลังซิงก์อยู่
เปลี่ยน Server ได้ที่ไฟล์ /etc/chrony.conf โดยแก้บรรทัด pool เดิม เช่น
pool th.pool.ntp.org iburst
sudo systemctl restart chronyd
หมายเหตุ: ติดตั้งบริการซิงก์เวลาเพียงตัวเดียว ถ้าติดตั้ง
chronyบน Ubuntu แพ็กเกจจะถอดsystemd-timesyncdออกให้เอง แต่อย่าติดตั้งntpdคู่กับchronyเพราะจะแย่งกันปรับนาฬิกา