
Rust VoIP - Janus LiveKit Server #1: Giới thiệu khóa học - Setup LiveKit Server
Chào mừng các bạn đến với bài học đầu tiên của khóa học lập trình Rust VoIP. Trong video này, chúng ta sẽ bắt đầu làm quen với LiveKit Media Server – một giải pháp Media Server thế hệ mới mạnh mẽ, giúp đơn giản hóa việc xây dựng các hệ thống VoIP phức tạp so với các mô hình truyền thống
1. Tổng quan về mô hình VoIP:
Nhìn lại mô hình thực tế của các hệ thống Call Center (App-to-App, SIP-to-App, Auto Call Out) và sự chuyển dịch từ cấu hình Janus phức tạp sang mô hình LiveKit tối giản hơn.
Ưu điểm của LiveKit Media Server: Tìm hiểu cách LiveKit tự động xử lý các tác vụ khó khăn như build/rewind SDP hay phân tích candidate, giúp lập trình viên sử dụng dễ dàng thông qua các hàm có sẵn thay vì phải can thiệp sâu vào kỹ thuật.
2. Hướng dẫn cài đặt chi tiết bằng Docker:
Sử dụng Docker Compose để thiết lập hệ thống gồm 3 thành phần chính: Redis (hỗ trợ clustering), LiveKit Server, và LiveKit SIP
Cấu hình mạng ở chế độ network_mode: host để xử lý các bản tin SIP và luồng WebRTC hiệu quả
Cấu hình hệ thống (Configuration):
Thiết lập các tham số quan trọng như: API Port (7880), dải RTC Port (50.000 - 60.000), External IP cho VPS và cấu hình Webhook để colback về module Rust
Kết nối giữa LiveKit SIP và LiveKit Server thông qua API Key và Secret để bảo mật
Lộ trình khóa học: Sau bài học cài đặt này, chúng ta sẽ lần lượt triển khai các tính năng: cấu hình nhận cuộc gọi, xử lý DTMF, thực hiện gọi tự động và kết nối đa nền tảng giữa WebRTC và SIP.
3. livekit.yaml
port: 7880
rtc:
port_range_start: 50000
port_range_end: 60000
tcp_port: 7881
use_external_ip: true
keys:
your_api_key: b1b1073d08639ed260d1963e7135b44a
logging:
level: info
redis:
address: localhost:6380
webhook:
urls:
- http://103.216.118.205:20004/livekit/event
api_key: your_api_key
4. sip.yaml
api_key: your_api_key
api_secret: b1b1073d08639ed260d1963e7135b44a
ws_url: ws://localhost:7880
sip_port: 40005
udp_port: 40005
rtp_port: 10000
rtp_port_count: 500
external_ip: 103.216.118.205
use_external_ip: true
logging:
level: debug
redis:
address: localhost:6380
5. docker-compose.yaml
version: '3.8'
services:
redis:
image: 'redis:7-alpine'
container_name: 'livekit-redis'
volumes:
- ./data/redis:/data
command: redis-server --save 60 1 --appendonly yes
ports:
- '6380:6379'
restart: 'unless-stopped'
livekit:
image: 'livekit/livekit-server:latest'
container_name: 'livekit-server'
volumes:
- './config/livekit.yaml:/etc/livekit.yaml'
- './souds:/etc/souds'
command: '--config /etc/livekit.yaml'
restart: 'unless-stopped'
network_mode: 'host'
depends_on:
- 'redis'
livekit-sip:
image: 'livekit/sip:latest'
container_name: 'livekit-sip'
command: '--config /etc/sip.yaml'
environment:
- 'LIVEKIT_URL=ws://localhost:7880'
- 'LIVEKIT_API_KEY=your_api_key'
- 'LIVEKIT_API_SECRET=your_api_key'
depends_on:
- 'livekit'
volumes:
- './config/sip.yaml:/etc/sip.yaml'
restart: 'unless-stopped'
network_mode: 'host'Khóa học này hướng dẫn bạn xây dựng một hệ thống realtime communication hoàn chỉnh bằng LiveKit kết hợp với Rust Programming Language — một trong những stack hiện đại và mạnh mẽ nhất hiện nay dành cho Voice AI, WebRTC và SIP Telephony. Trong nhiều năm, việc xây dựng hệ thống gọi điện realtime thường phụ thuộc vào các nền tảng phức tạp như Asterisk, FreeSWITCH hoặc các giải pháp C/C++ khó mở rộng và khó maintain. Với sự phát triển của WebRTC và LiveKit, việc xây dựng hệ thống voice/video realtime đã trở nên linh hoạt hơn rất nhiều. LiveKit cung cấp SFU media server hiện đại cùng hệ sinh thái SDK mạnh mẽ, hỗ trợ voice, video, screen sharing, AI Agents và SIP Telephony. Trong khóa học này, bạn sẽ không chỉ học cách “gọi video” đơn giản, mà sẽ hiểu cách xây dựng toàn bộ kiến trúc realtime communication thực tế để deploy production. Bạn sẽ bắt đầu bằng việc tìm hiểu: WebRTC hoạt động như thế nào SFU là gì Media flow giữa browser và server RTP/SRTP ICE, STUN, TURN Signaling architecture SIP và PSTN hoạt động ra sao LiveKit bridge SIP ↔ WebRTC như thế nào Sau phần nền tảng, khóa học sẽ đi vào xây dựng backend bằng Rust với kiến trúc async hiệu năng cao sử dụng Tokio. Bạn sẽ học cách: Tạo API backend cho LiveKit Generate JWT token Quản lý room Quản lý participant Dispatch user vào room Xây signaling service riêng Theo dõi trạng thái cuộc gọi realtime Scale realtime system Rust được lựa chọn vì khả năng: Hiệu năng cao Memory-safe Async concurrency mạnh Phù hợp cho realtime networking Triển khai production ổn định Đây là stack rất phù hợp để xây: Voice AI Call Center Customer Support Platform Telephony Gateway Omnichannel Communication SIP/WebRTC Gateway AI Calling Platform Một phần quan trọng của khóa học là xây dựng các flow gọi điện thực tế. 1. Call App ↔ App Bạn sẽ học cách xây dựng hệ thống gọi giữa: Browser ↔ Browser Mobile ↔ Browser Desktop ↔ Mobile Bao gồm: Audio Call Video Call Screen Share Realtime Events Participant Management Room State Mute/Unmute Recording Bạn cũng sẽ hiểu: Media publish/subscribe Track management SFU forwarding Low latency optimization 2. Call SIP → App Đây là phần rất quan trọng dành cho VoIP và Telephony. Bạn sẽ học cách: Nhận cuộc gọi từ SIP trunk Kết nối từ PSTN/SIP vào LiveKit room Dispatch SIP participant vào ứng dụng Bridge audio từ điện thoại vào WebRTC app Flow thực tế: Người dùng gọi số điện thoại SIP provider gửi INVITE vào LiveKit LiveKit tạo SIP participant Rust backend xử lý routing Agent/Web App tham gia room Audio được bridge RTP ↔ WebRTC Bạn sẽ học: SIP INVITE SDP negotiation Codec negotiation RTP flow SIP trunk configuration Dispatch rule DTMF handling Sau phần này, bạn có thể xây: Tổng đài AI Hotline support SIP gateway AI receptionist Virtual call center 3. Call App → SIP Khóa học cũng hướng dẫn chiều ngược lại: Từ WebRTC App gọi ra số điện thoại SIP/PSTN Bạn sẽ học: Outbound SIP trunk Dialing flow SIP authentication Caller ID Outbound routing SIP participant creation Flow: User click Call trong app Rust backend tạo SIP participant LiveKit gửi SIP INVITE tới provider Provider route tới PSTN Điện thoại nhận cuộc gọi Đây là nền tảng để xây: Softphone AI outbound calling Auto-call system Telemarketing platform CRM Calling System 4. Production Architecture Khóa học không chỉ demo local mà còn tập trung vào kiến trúc production thực tế. Bạn sẽ học: Self-host LiveKit Redis integration Horizontal scaling Monitoring Logging SIP gateway deployment TURN server setup TLS/HTTPS Docker deployment Reverse proxy Load balancing
Công nghệ sử dụng
Tác giả
ByteBuffer
Coder cỏ tại DTS Group và IPAS
Chuyên gia về Rust và hệ thống VoIP/WebRTC. Nhiều năm kinh nghiệm xây dựng các hệ thống real-time communication với hiệu năng cao và độ trễ thấp.