Uptime Kuma บน VPS: วิธีตั้งค่าการมอนิเตอร์เว็บไซต์และเซิร์ฟเวอร์

2 อ่านขั้นต่ำแล้ว
Tropic
Uptime Kuma บน VPS: วิธีตั้งค่าการมอนิเตอร์เว็บไซต์และเซิร์ฟเวอร์

Language: th

Uptime Kuma: ตั้งค่าระบบมอนิเตอร์เว็บไซต์ของคุณเองบน VPS

เว็บไซต์อาจมีปัญหาแต่ยังคงตอบกลับ 200 OK ได้ การสำรองข้อมูลอาจหยุดทำงานโดยไม่แสดงข้อผิดพลาดชัดเจน Uptime Kuma ตรวจพบปัญหาทั้งสองแบบได้ โดยตรวจสอบเว็บไซต์ API พอร์ต และงานเบื้องหลัง แล้วส่งการแจ้งเตือนเมื่อเกิดสิ่งผิดปกติ

เราจะดูว่าควรวางระบบมอนิเตอร์ไว้ที่ไหน ต้องใช้ VPS แบบใด และติดตั้ง Uptime Kuma 2 เปิด HTTPS เชื่อมต่อ Telegram และสร้างหน้าสถานะอย่างไร

Uptime Kuma ในเจ็ดขั้นตอน

  1. จัดสรร VPS ขนาดเล็กแยกจากโปรเจกต์ที่ต้องการตรวจสอบ
  2. ชี้ซับโดเมน เช่น monitor.example.com มาที่ VPS
  3. ติดตั้ง Docker และรัน Uptime Kuma 2
  4. ปิดพอร์ตภายใน 3001 และเปิดใช้ HTTPS
  5. สร้างมอนิเตอร์แบบ HTTP, DNS, TCP หรือ push
  6. ตั้งค่า Telegram และสร้างหน้าสถานะหากจำเป็น
  7. ตั้งค่าการอัปเดตและการสำรองไดเรกทอรีข้อมูลไปยังพื้นที่ภายนอก

Uptime Kuma คืออะไร

Uptime Kuma เป็นเครื่องมือโอเพนซอร์สฟรีสำหรับโฮสต์ด้วยตนเอง แผงควบคุมและประวัติการตรวจสอบจะถูกเก็บไว้บนเซิร์ฟเวอร์ของคุณ

เครื่องมือนี้ตรวจสอบ HTTP(S), พอร์ต TCP, ping, DNS, WebSocket, ข้อความและ JSON ในการตอบกลับ สัญญาณ push และคอนเทนเนอร์ Docker ได้ ช่วงเวลาตรวจสอบขั้นต่ำคือ 20 วินาที นอกจากนี้ยังมีช่องทางแจ้งเตือนหลายสิบแบบ การยืนยันตัวตนสองขั้นตอน กราฟ latency การตรวจสอบใบรับรอง TLS และหน้าสถานะหลายหน้า

ตรวจจับข้อผิดพลาดที่ซ่อนอยู่หลัง 200 OK ได้อย่างไร

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

สำหรับการมอนิเตอร์ที่แม่นยำขึ้น ให้ใช้:

  • Keyword — ค้นหาวลีที่คาดว่าจะมี เช่น ชื่อเว็บไซต์หรือข้อความ “แผงบัญชี”;
  • JSON Query — ตรวจสอบค่าในผลตอบกลับของ API เช่น status: healthy

ด้วยวิธีนี้มอนิเตอร์จะยืนยันไม่ใช่แค่การเปิดพอร์ตได้ แต่ยังยืนยันว่าแอปพลิเคชันมีสัญญาณอย่างน้อยหนึ่งอย่างที่แสดงว่าทำงานถูกต้อง

Push monitor สำหรับแบ็กอัปและงาน cron

Push monitor จะไม่ส่งคำขอไปตรวจบริการ แต่รอสัญญาณตามช่วงเวลาจากตัวบริการเอง สคริปต์สำรองข้อมูลหรืองาน cron จะเรียก URL เฉพาะหลังทำงานสำเร็จ หากไม่มีสัญญาณมาตามเวลา Uptime Kuma จะแจ้งข้อผิดพลาด

วิธีนี้ช่วยตรวจพบปัญหาแบบ “เงียบ”: เว็บไซต์ยังทำงานอยู่ แต่ไม่ได้สร้างแบ็กอัปรายวันมาหลายวันแล้ว

สิ่งที่ Uptime Kuma ใช้แทนไม่ได้

Uptime Kuma เน้นตรวจสอบความพร้อมใช้งานและเวลาตอบสนองเป็นหลัก สำหรับการตรวจสอบ CPU, RAM, ดิสก์, log และเมตริกของคอนเทนเนอร์ ให้ใช้ร่วมกับ Prometheus, Netdata, Zabbix หรือระบบมอนิเตอร์อื่น: Kuma ตรวจพบปัญหาจากภายนอก ส่วนเมตริกช่วยค้นหาสาเหตุ

เหตุใดระบบมอนิเตอร์ควรทำงานบน VPS แยกต่างหาก

หากติดตั้ง Uptime Kuma ไว้ข้างเว็บไซต์ ความขัดข้องของ VPS เครือข่าย หรือดาต้าเซ็นเตอร์จะปิดทั้งโปรเจกต์และระบบมอนิเตอร์ การแจ้งเตือนอาจถูกส่งไม่สำเร็จ

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

ข้อกำหนดเซิร์ฟเวอร์ของ Uptime Kuma

โปรเจกต์ไม่ได้กำหนดขั้นต่ำอย่างเป็นทางการที่ตายตัวสำหรับ CPU และ RAM การตั้งค่าเริ่มต้นที่เหมาะสมสำหรับการติดตั้งขนาดเล็กคือ:

  • 1 vCPU;
  • RAM 1 GB;
  • SSD 10 GB;
  • Ubuntu 24.04 LTS;
  • IPv4;
  • โดเมนหรือซับโดเมนสำหรับ HTTPS

โดยทั่วไปการตั้งค่านี้เพียงพอสำหรับการตรวจสอบแบบง่ายหลายสิบรายการ หากมีมอนิเตอร์หลายร้อยรายการ เก็บประวัติเป็นเวลานาน หรือตรวจสอบผ่านเบราว์เซอร์ ให้เลือก RAM 2 GB ขึ้นไป

วิธีติดตั้ง Uptime Kuma บน VPS

ตัวอย่างนี้ใช้ Ubuntu 24.04 และซับโดเมน monitor.example.com

1. ตั้งค่า DNS และไฟร์วอลล์

สร้างระเบียน DNS A ที่ชี้ไปยังที่อยู่ IPv4 ของ VPS เชื่อมต่อผ่าน SSH แล้วเปิดพอร์ตที่จำเป็น:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

อย่าปิดเซสชัน SSH ปัจจุบันจนกว่าจะทดสอบการเชื่อมต่อใหม่สำเร็จ

2. ติดตั้ง Docker และ Docker Compose

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

docker compose version

3. เริ่มต้น Uptime Kuma 2

mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma

cat > compose.yaml <<'EOF'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data:/app/data
EOF

docker compose up -d
docker compose ps

ใช้แท็ก :2 เพราะ latest ยังคงชี้ไปยังสาขา v1 ที่ล้าสมัย ไดเรกทอรี /app/data ควรเก็บไว้บนดิสก์ภายในเครื่องหรือ Docker volume ทั่วไป NFS และระบบจัดเก็บข้อมูลที่ล็อกไฟล์ได้ไม่ถูกต้องอาจทำให้ฐานข้อมูลเสียหาย

พอร์ต 3001 เข้าถึงได้เฉพาะผ่าน 127.0.0.1 reverse proxy ที่ใช้ HTTPS จะเผยแพร่แผงควบคุมออกภายนอก

4. เปิด HTTPS ด้วย Caddy

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
monitor.example.com {
    reverse_proxy 127.0.0.1:3001
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

หาก DNS ชี้มาที่ VPS แล้ว Caddy จะขอใบรับรอง TLS โดยอัตโนมัติและพร็อกซีการเชื่อมต่อ WebSocket วางแผงควบคุมไว้ที่ root ของโดเมนหรือซับโดเมน: ที่อยู่แบบ example.com/kuma ไม่รองรับ

5. สร้างบัญชีผู้ดูแล

เปิด https://monitor.example.com สร้างบัญชีด้วยรหัสผ่านยาวและไม่ซ้ำ แล้วเปิดการยืนยันตัวตนสองขั้นตอน

วิธีเพิ่มมอนิเตอร์แรก

กด Add New Monitor แล้วเลือก HTTP(s):

  1. ใส่ชื่อและ URL แบบเต็ม
  2. ตั้งช่วงเวลา เช่น 60 วินาที
  3. เพิ่มการลองซ้ำสองครั้งเพื่อรองรับปัญหาเครือข่ายชั่วคราว
  4. เลือกช่องทางแจ้งเตือน
  5. บันทึกมอนิเตอร์และตรวจสอบว่ามีผลการตรวจสอบสำเร็จปรากฏขึ้น

สำหรับเว็บไซต์หลัก การตรวจสอบ HTTP และ Keyword มีประโยชน์ สำหรับ API ให้ใช้ health-endpoint และ JSON Query อย่าเปิดฐานข้อมูลหรือพอร์ตผู้ดูแลบนอินเทอร์เน็ตเพียงเพื่อให้มอนิเตอร์ทำงาน ให้ใช้เครือข่ายที่เชื่อถือได้หรือ VPN

ตัวอย่าง Push monitor สำหรับแบ็กอัป

หลังสร้างมอนิเตอร์ Push แล้ว ให้เพิ่ม URL เฉพาะของมันไว้ท้ายสคริปต์:

backup-command && \
  curl -fsS "https://monitor.example.com/api/push/SECRET_TOKEN?status=up&msg=backup-ok"

คำขอจะทำงานหลังสำรองข้อมูลสำเร็จเท่านั้น ให้ถือว่า push token เป็นรหัสผ่าน เพราะใครก็ตามที่รู้ URL สามารถส่งสัญญาณปลอมได้

วิธีเชื่อมต่อ Telegram

สร้างบอตผ่าน @BotFather ส่งข้อความให้บอต แล้วเปิด Settings → Notifications → Telegram ใส่ Bot Token และ Chat ID กด Test และกำหนดช่องทางให้กับมอนิเตอร์ สำหรับบริการสำคัญควรเพิ่มช่องทางที่สอง เช่น อีเมล

วิธีสร้างหน้าสถานะ

ในส่วน Status Pages คุณสามารถจัดกลุ่มมอนิเตอร์ แสดงสถานะปัจจุบันและประวัติความพร้อมใช้งาน กำหนดโดเมน และแจ้งงานบำรุงรักษาตามกำหนดผ่าน Maintenance อย่าเผยแพร่ IP ภายในหรือ URL ทางเทคนิค ลูกค้าต้องเห็นเพียงส่วนประกอบ เช่น “เว็บไซต์” “API” “แผงบัญชี” และ “การชำระเงิน”

การอัปเดตและการสำรอง Uptime Kuma

ก่อนอัปเดตครั้งใหญ่ ให้หยุดคอนเทนเนอร์และบันทึกไดเรกทอรีข้อมูล:

cd /opt/uptime-kuma
docker compose down

tar -czf /root/uptime-kuma-$(date +%F).tar.gz \
  data compose.yaml

docker compose up -d

ย้ายไฟล์เก็บถาวรไปยังอุปกรณ์อื่นหรือพื้นที่ภายนอก สำเนาบน VPS เดียวกันไม่ป้องกันการลบเซิร์ฟเวอร์หรือดิสก์ขัดข้อง

สำหรับการอัปเดตทั่วไป:

cd /opt/uptime-kuma
docker compose pull
docker compose up -d --force-recreate

หลังเริ่มระบบ ให้ตรวจสอบ docker compose ps เปิดแผงควบคุม และส่งการแจ้งเตือนทดสอบ

เลือก VPS แบบใดสำหรับ Uptime Kuma

การติดตั้งขนาดเล็กต้องการ Linux VPS ที่มี 1 vCPU และ RAM 1 GB ความเป็นอิสระสำคัญกว่าประสิทธิภาพสูงสุด: มอนิเตอร์ควรทำงานต่อได้เมื่อโปรเจกต์หลักไม่พร้อมใช้งาน

คุณสามารถวาง Uptime Kuma บน VPS จาก tropic.host หากบริการที่ตรวจสอบอยู่บนแพลตฟอร์มหรือโหนดอิสระอื่น Ubuntu, Docker และ IP แบบคงที่ช่วยให้เริ่มแผงควบคุมได้รวดเร็ว และสามารถเพิ่มทรัพยากรเมื่อจำนวนการตรวจสอบเพิ่มขึ้น

หาก production ทำงานอยู่บนโครงสร้างพื้นฐานเดียวกัน ให้เลือกโหนดอื่นหรือเพิ่มการมอนิเตอร์ภายนอก การแยกขอบเขตความขัดข้องมีประโยชน์กว่าการเพิ่ม CPU อีกหนึ่งคอร์

ข้อผิดพลาดที่พบบ่อย

ข้อผิดพลาดเหตุใดจึงเป็นปัญหาวิธีที่ดีกว่า
ระบบมอนิเตอร์อยู่ข้างโปรเจกต์ความขัดข้องร่วมกันจะปิดทั้งบริการและการแจ้งเตือนใช้ VPS หรือแพลตฟอร์มแยกต่างหาก
เปิดพอร์ต 3001 ไว้บนอินเทอร์เน็ตแผงควบคุมเข้าถึงได้โดยไม่มี reverse proxy หรือ HTTPSผูกพอร์ตไว้กับ 127.0.0.1
ตรวจสอบเฉพาะรหัสสถานะ 200ข้อผิดพลาดของแอปอาจดูเหมือนการตอบกลับสำเร็จเพิ่ม Keyword หรือ JSON Query
ใช้แท็ก latestแท็กนี้ชี้ไปยังสาขา v1 ที่ล้าสมัยใช้ louislam/uptime-kuma:2
เก็บแบ็กอัปไว้บน VPS เดียวกันแบ็กอัปจะหายไปพร้อมเซิร์ฟเวอร์คัดลอกไดเรกทอรี data ไปที่อื่น

สรุป

Uptime Kuma เปลี่ยน VPS ขนาดเล็กให้เป็นศูนย์มอนิเตอร์ของคุณเองสำหรับเว็บไซต์ API DNS พอร์ต ใบรับรอง และงานเบื้องหลัง Keyword ช่วยตรวจพบหน้าที่เสีย JSON Query ช่วยตรวจคำตอบ API ที่ไม่ถูกต้อง ส่วน Push ช่วยตรวจแบ็กอัปหรืองาน cron ที่หยุดทำงาน

สำหรับการตั้งค่าที่เชื่อถือได้ ให้วางระบบมอนิเตอร์แยกจาก production ปิดพอร์ต 3001 เปิด HTTPS และ 2FA และตั้งค่าการแจ้งเตือนสองช่องทาง จากนั้นจัดการสำรองไดเรกทอรีข้อมูลไปยังภายนอกและตรวจสอบ Uptime Kuma ด้วยระบบอิสระ

FAQ

Uptime Kuma ฟรีหรือไม่

ใช่ โปรเจกต์เป็นโอเพนซอร์สและเผยแพร่ภายใต้สัญญาอนุญาต MIT ค่าใช้จ่ายมีเพียงโครงสร้างพื้นฐาน โดเมน และแบ็กอัปภายนอก

Uptime Kuma ต้องใช้ RAM เท่าไร

สำหรับการติดตั้งขนาดเล็ก ควรเริ่มที่ RAM 1 GB สำหรับการตรวจสอบหลายร้อยรายการ เก็บประวัตินาน หรือใช้ Browser Engine ให้จัดสรร 2 GB ขึ้นไป

ติดตั้ง Uptime Kuma โดยไม่ใช้ Docker ได้หรือไม่

ได้ โดยใช้ Node.js และ PM2 แต่ Docker Compose มักอัปเดต ย้าย และกู้คืนบน VPS ได้ง่ายกว่า

ใช้ Uptime Kuma โดยไม่มีโดเมนได้หรือไม่

ในทางเทคนิคได้ ผ่าน IP หรือ SSH tunnel แต่สำหรับการเข้าถึงจากอินเทอร์เน็ตอย่างถาวร ควรใช้ซับโดเมนพร้อม HTTPS เพื่อความปลอดภัย

Uptime Kuma แสดงการใช้ CPU, RAM และดิสก์หรือไม่

ไม่ใช่ในฐานะระบบเมตริกเซิร์ฟเวอร์แบบเต็มรูปแบบ สำหรับการตรวจสอบทรัพยากรเซิร์ฟเวอร์ ให้ใช้ Prometheus, Netdata, Zabbix หรือเครื่องมือเฉพาะทางอื่นร่วมกับ Uptime Kuma