Cách cài đặt Turn Server cho WebRTC
Đã 5 tháng tức lúc mình viết ra bài "WebRTC là cái hợi gì?" mình luôn tự nhủ bản thân phải làm hết series về WebRTC. Nhưng do dịch bệnh, và do bận một số công chuyện ở công ty cũng như các dự án cá nhân, nên mình đã pending lại các blogs trong một khoảng thời gian. Hôm nay mình sẽ viết các bài viết tiếp theo về WebRTC trên series để làm sao chúng ta có thể build được 1 ứng dụng có thể hội thoại trực tuyển từ 10 - 15 người nhé. Bài viết hôm nay sẽ là về Turn Server
Ở bài viết trước giới thiệu về WebRTC mình đã đi hầu hết các khái niệm, nhưng mình sẽ nhắc lại một chút về Turn Server là gì để cho các bạn không đọc bài viết trước có thể keep up được luôn.
Khi làm việc với WebRTC chúng ta sẽ tạo một kết nối giữa 2 khác hoặc cùng mạng với nhau, do một số vấn đề gì như là làm thế nào để kết nối được 2 máy tính khác mạng? Vì giả sử một máy tính trong mạng A muốn kết nối với một máy tính trong mạng B. Nhưng trong mạng A hoặc mạng B có 10 máy tính, thì làm sao để có thể kết nối được 2 máy tính có mong muốn được kết nối với nhau. Có rất nhiều cách được đề ra trong đó có TURN và STUN là hai cách chủ yếu để kết nối.
Bình thường chúng ta hoàn toàn có thể dùng server STUN (có rất nhiều server miễn phí ở đây, và có các server của google hoàn toàn miễn phí) đây là một phương pháp nhẹ và đơn giản nhất để kết nối hai máy với nhau tuy nhiên cách này chỉ có thể cover khoảng 80% các kết nối, đối với các kết nối có tường lửa giống như là mạng 3G, 4G ở một số quốc gia thì việc kết nối qua STUN là việc không thể. Vậy nên nó sinh ra khái niệm TURN. Các bạn có thể nhìn hình ảnh phía trên để xem cách kết nối giữa hai máy với TURN server. Ở bài viết này mình sẽ không nói chi tiết về cách hoạt động của TURN server, mà mình sẽ chỉ cho bạn cách để tạo 1 server TURN để có thể kết nối hai máy tính với nhau.
Note: Để giảm thiểu độ trễ, TURN server nên ở gần nhất với máy tính mà muốn kết nối với nó và TURN server sẽ ngốn rất nhiều băng thông vì nó phải nhận và truyền âm thanh và hình ảnh của cả 2 máy.
Cài đặt Coturn Server trên Ubuntu
Corturn là một open-source có thể tạo ra TURN và STURN server cho VOIP và WebRTC. Coturn hiện tại có sẵn trên Ubuntu repository mà không cần cài Repo ngoài thế nên là nó khá tiện, để cài đặt chúng ta sử dụng câu lệnh
sudo apt install coturn
systemctl status coturn
sudo systemctl start coturn
sudo systemctl enable coturn
Cấu hình Coturn
Chỉnh sửa config file tạisudo nano /etc/turnserver.conf
- Thay thế your-domain.com thành domain name của bạn (optional)
- Thay đổi 12.24.56.78 thành địa chỉ IP public của bạn (ifconfig.me)
- Cài đặt mã xác thực để chỉ có mình bạn có thể truy cập vào server
# Run as TURN server only, all STUN requests will be ignored.
# If you want run STUN along with TURN, just comment this line
no-stun
# Specify listening port. Change to 80 or 443 to go around some strict NATs.
listening-port=8443
tls-listening-port=5349
# Specify listening IP, if not set then Coturn listens on all system IPs.
listening-ip=12.34.56.78
relay-ip=12.34.56.78
# These lines enable support for WebRTC
fingerprint
lt-cred-mech
realm=your-domain.com
# Authentication method
use-auth-secret
static-auth-secret=your-auth-secret
total-quota=100
# Total bytes-per-second bandwidth the TURN server is allowed to allocate
# for the sessions, combined (input and output network streams are treated separately).
bps-capacity=0
# This line provides extra security.
stale-nonce
log-file=/var/log/turnserver/turn.log
no-loopback-peers
no-multicast-peers
sudo systemctl restart coturn