Get Started
Developing a WebRTC application is easy, but solving the issue of NAT could be a difficult task. If you want to build your WebRTC environment without using any 3rd Party cloud solutions, I think you should take a look at an open source lib - rfc5766-turn-server. Because it not only supports TURN, but also STUN.
In this tutorial, you will learn how to set up a STUN & TURN server.
1.Download rfc5766-turn-server package
$ wget http://ftp.cn.debian.org/debian/pool/main/r/rfc5766-turn-server/rfc5766-turn-server_3.2.4.4-1_amd64.deb
2. Install
$ sudo apt-get update
$ sudo apt-get install gdebi-core
$ sudo gdebi rfc5766-turn-server_3.2.4.4-1_amd64.deb
Refer to docs in folder /usr/share/doc/rfc5766-turn-server
vim /opt/etc/turnserver.conf.default
3. Configuration
$ sudo vi /etc/turnserver.conf
// Setup IP address - listening-ip and external-ip are required to set up on EC2 of AWS.
listening-ip=172.31.4.37
external-ip=54.223.149.60
// If TURN server is used for WebRTC,please set long-term credential mechanism as shown below.
lt-cred-mech
// Add a user
user=weishihhsun:mypassword
// Setup realm
realm=mycompany.org
4. Start TURN Server
sudo turnserver -c /usr/local/etc/turnserver.conf --daemo
5. Setup TURN Server`s IP address
"iceServers": [{
"url": "stun:stun.l.google.com:19302"
}, {
"url": "turn:54.223.149.60", // Your Server
"username": "weishihhsun", // your Account
"credential": "mypassword" // Your Password
}]
6. Open firewall`s ports
TCP 443
TCP 3478-3479
TCP 32355-65535
UDP 3478-3479
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 3478:3479 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 32355:65535 -j ACCEPT
iptables -A INPUT -p udp -m tcp --dport 3478:3479 -j ACCEPT