คู่มือ Deploy LiveKit Server บน Ubuntu สำหรับ Production
อ้างอิง
13. ติดตั้ง LiveKit แบบ Production
หลังจากทดสอบด้วย
livekit-server --dev
จนสามารถใช้งานได้แล้ว ควรเปลี่ยนมาใช้ Production Mode
13.1 สร้าง API Key และ Secret
ไม่ควรใช้
devkey
secret
ใน Production
สร้าง Secret ใหม่
openssl rand -base64 32
ตัวอย่าง
API Key : telemed_prod
API Secret : 2O3nT6gJgW9fEw6P2m7rQ4...
13.2 สร้าง Config สำหรับ Production
สร้างไฟล์
sudo mkdir -p /etc/livekit
sudo nano /etc/livekit/livekit.yaml
ตัวอย่าง
port: 7880
rtc:
tcp_port: 7881
use_external_ip: true
keys:
telemed_prod: "YOUR_SECRET"
logging:
level: info
13.3 ทดสอบ Config
livekit-server --config /etc/livekit/livekit.yaml
ตรวจสอบ
curl http://127.0.0.1:7880
ผลลัพธ์
{"status":"OK"}
14. สร้าง Systemd Service
เพื่อให้ LiveKit ทำงานอัตโนมัติเมื่อเครื่อง Boot
สร้างไฟล์
sudo nano /etc/systemd/system/livekit.service
ใส่ข้อมูล
[Unit]
Description=LiveKit Server
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/livekit-server \
--config /etc/livekit/livekit.yaml
Restart=always
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
บันทึกไฟล์
15. เปิดใช้งาน Service
Reload Systemd
sudo systemctl daemon-reload
Enable ให้เริ่มอัตโนมัติหลัง Boot
sudo systemctl enable livekit
เริ่ม Service
sudo systemctl start livekit
ตรวจสอบสถานะ
sudo systemctl status livekit
ควรพบ
Active: active (running)
16. คำสั่งจัดการ Service
เริ่ม Service
sudo systemctl start livekit
หยุด Service
sudo systemctl stop livekit
Restart Service
sudo systemctl restart livekit
Reload Config (ถ้ารองรับ)
sudo systemctl reload livekit
ตรวจสอบสถานะ
sudo systemctl status livekit
ตรวจสอบการเริ่มอัตโนมัติ
sudo systemctl is-enabled livekit
ปิดการเริ่มอัตโนมัติ
sudo systemctl disable livekit
17. ดู Log ของ LiveKit
ดู Log แบบ Real-Time
sudo journalctl -u livekit -f
ดู Log ล่าสุด
sudo journalctl -u livekit -n 100
ดู Log ตั้งแต่ Boot ล่าสุด
sudo journalctl -u livekit -b
18. ตรวจสอบ Port
ตรวจสอบว่า LiveKit เปิด Port แล้ว
sudo ss -lntup | grep livekit
หรือ
sudo ss -lntup | grep -E '7880|7881'
ควรพบ
*:7880
*:7881
19. Firewall สำหรับ Production
Ubuntu UFW
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 7881/tcp
sudo ufw allow 50000:60000/udp
ตรวจสอบ
sudo ufw status
20. Cloud Firewall
หากใช้งาน VPS ควรตรวจสอบ Cloud Firewall ของผู้ให้บริการด้วย
เปิดพอร์ต
80/TCP
443/TCP
7881/TCP
50000-60000/UDP
ตัวอย่างผู้ให้บริการ
21. ตรวจสอบหลัง Restart Server
Restart เครื่อง
sudo reboot
หลังเครื่องกลับมา
ตรวจสอบ
sudo systemctl status livekit
และ
curl http://127.0.0.1:7880
ควรได้
{"status":"OK"}
22. ตรวจสอบ Reverse Proxy
ทดสอบจากภายนอก
curl -vk https://video.example.com
ควรได้
OK
หรือ
{"status":"OK"}
23. ทดสอบ Production ด้วย LiveKit Connection Test
เปิด
กำหนด
LiveKit URL:
wss://video.example.com
ผลลัพธ์ควรผ่านทุกหัวข้อ
Connecting to signal connection via WebSocket
PASS
Establishing WebRTC connection
PASS
Can connect via TURN
PASS
Can publish audio
PASS
Can publish video
PASS
24. ข้อแนะนำสำหรับ Telemedicine
สำหรับระบบ Telemedicine
สถาปัตยกรรมที่แนะนำ
Internet
│
▼
Apache + SSL
│
▼
LiveKit Server
│
▼
ASP.NET Core API
│
▼
MariaDB / MySQL
โดย
- ASP.NET Core เป็นผู้สร้าง Access Token
- .NET MAUI App เชื่อมต่อ LiveKit โดยตรง
- Web App แพทย์เชื่อมต่อ LiveKit โดยตรง
- ใช้ HTTPS และ WSS เท่านั้น
- ไม่ควรเปิด Port 7880 ออก Internet โดยตรง
- ให้ Apache Reverse Proxy เป็นผู้รับ HTTPS จากภายนอก
25. รายการตรวจสอบก่อนใช้งานจริง (Production Checklist)
✅ Domain Name ทำงานปกติ
✅ SSL Certificate ถูกต้อง
✅ Apache Reverse Proxy ทำงาน
✅ WebSocket Upgrade ทำงาน
✅ LiveKit Service ทำงานผ่าน Systemd
✅ Auto Start หลัง Boot
✅ Port 443 เปิดใช้งาน
✅ Port 7881 เปิดใช้งาน
✅ Port 50000-60000/UDP เปิดใช้งาน
✅ ทดสอบผ่าน LiveKit Connection Test
✅ ทดสอบ Video Call จริงจากเครือข่ายภายนอก
✅ เปลี่ยน API Secret จากค่า Default แล้ว
✅ เก็บ API Secret ไว้นอก Source Code