คู่มือการติดตั้ง LiveKit Server บน Ubuntu พร้อม Apache Reverse Proxy
อ้างอิง
1. เตรียมระบบ Ubuntu
อัปเดตแพ็กเกจ
sudo apt update
sudo apt upgrade -y
ติดตั้งเครื่องมือพื้นฐาน
sudo apt install -y curl wget unzip
2. ติดตั้ง LiveKit Server
ดาวน์โหลด LiveKit เวอร์ชันล่าสุด
wget https://github.com/livekit/livekit/releases/latest/download/livekit-server_linux_amd64.tar.gz
แตกไฟล์
tar -xzf livekit-server_linux_amd64.tar.gz
ย้ายไฟล์ไปยังระบบ
sudo mv livekit-server /usr/local/bin/
sudo chmod +x /usr/local/bin/livekit-server
ตรวจสอบเวอร์ชัน
livekit-server --version
3. สร้างไฟล์ Config
สร้างไฟล์
sudo mkdir -p /etc/livekit
sudo nano /etc/livekit/livekit.yaml
ตัวอย่าง
port: 7880
rtc:
tcp_port: 7881
use_external_ip: true
keys:
devkey: secret
logging:
level: info
4. เริ่มต้น LiveKit
ทดสอบแบบ Development
livekit-server --dev
หรือ
livekit-server --config /etc/livekit/livekit.yaml
ตรวจสอบ
curl http://127.0.0.1:7880
ผลลัพธ์
{"status":"OK"}
ตรวจสอบ Port
sudo ss -lntp | grep 7880
ควรพบ
LISTEN *:7880
5. ติดตั้ง Apache Modules ที่จำเป็น
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl
Restart Apache
sudo systemctl restart apache2
ตรวจสอบ
apachectl -M | grep proxy
ควรพบ
proxy_module
proxy_http_module
proxy_wstunnel_module
6. ตั้งค่า Apache Reverse Proxy
ตัวอย่าง VirtualHost
<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>
<VirtualHost *:80>
ServerName video.example.com
Redirect permanent / https://video.example.com/
</VirtualHost>
<VirtualHost *:443>
Protocols h2 http/1.1
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:7880/
ProxyPassReverse / http://127.0.0.1:7880/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/(.*)$ ws://127.0.0.1:7880/$1 [P,L]
ServerName video.example.com
SSLEngine On
SSLProxyEngine On
SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/privkey.pem
</VirtualHost>
หมายเหตุสำคัญ
หากไม่กำหนดส่วนนี้
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/(.*)$ ws://127.0.0.1:7880/$1 [P,L]
LiveKit จะไม่สามารถสร้าง WebSocket Signaling Connection ได้
และจะพบ Error
Websocket connection could not be established
7. เปิด Firewall
เปิดพอร์ตที่จำเป็น
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 7881/tcp
sudo ufw allow 50000:60000/udp
หรือเปิดใน Cloud Firewall ของผู้ให้บริการ VPS
พอร์ตที่จำเป็น
80/TCP
443/TCP
7881/TCP
50000-60000/UDP
8. ทดสอบผ่าน Browser
ตรวจสอบ Reverse Proxy
เปิด
https://video.example.com
ควรแสดง
OK
หรือ
{"status":"OK"}
9. ทดสอบด้วย LiveKit Connection Test
เปิด
กรอก
LiveKit URL:
wss://video.example.com
ใส่ Room Token
หากทุกอย่างถูกต้อง จะผ่านการทดสอบดังนี้
Connecting to signal connection via WebSocket
PASS
Establishing WebRTC connection
PASS
Can connect via TURN
PASS
Can publish audio
PASS
Can publish video
PASS
10. ทดสอบด้วย LiveKit Example App
เปิด
เลือก
Custom Server
กรอก
wss://video.example.com
ใส่ Token ที่สร้างจาก LiveKit
กด Connect
หากเชื่อมต่อได้สำเร็จ จะสามารถเข้าห้อง Video Call ได้ทันที
11. สร้าง Access Token
ติดตั้ง LiveKit CLI
sudo apt install -y jq
curl -sSL https://get.livekit.io/cli | bash
สร้าง Token
lk token create \
--api-key devkey \
--api-secret secret \
--join \
--room test-room \
--identity user1 \
--valid-for 24h
12. การตรวจสอบปัญหาเบื้องต้น
ตรวจสอบว่า LiveKit ทำงาน
curl http://127.0.0.1:7880
ตรวจสอบ Port
sudo ss -lntp | grep 7880
ตรวจสอบ Apache
curl -vk https://video.example.com
ดู Log Apache
tail -f /var/log/apache2/error.log
หรือ
tail -f /path/to/helloapp-error.log
สรุป
สำหรับการใช้งาน Production
- ใช้ HTTPS เสมอ
- ใช้ URL แบบ
wss:// - เปิดพอร์ต UDP 50000-60000
- เปิด TCP 7881
- ตั้งค่า Apache ให้รองรับ WebSocket Upgrade
- ทดสอบด้วย LiveKit Connection Test ก่อนนำไปใช้งานจริง
- เหมาะสำหรับ .NET MAUI, ASP.NET Core และระบบ Telemedicine