- Callers are unable to connect
- Callers cannot see each other's video/screen shares
- Callers cannot hear each other's audio
- Chat messages are not being received
Zextras has a write-up for installing reTURN on their Wiki, but some of the information appears to be outdated:
- RedHat/CentOS: https://wiki.zextras.com/wiki/ZxChat_wi ... n_Centos_7
- Ubuntu: https://wiki.zextras.com/wiki/ZxChat_wi ... untu_14.04
1.) Install CentOS with the minimal install options, and set the host name, ip address, DNS, gateway options.
2.) Upon first boot, run "yum upgrade" then reboot.
3.) Run "yum install epel-release". This installs the repo where the reTURN server can be installed.
4.) Run "yum install resiprocate-turn-server"
5.) In the /etc/reTurn/reTurnServer.config file, make these changes:
Required Settings
TurnAddress = your server's public IP address (1.2.3.4)
TurnPort = 3478
AuthenticationRealm = any valid domain name (example.com)
UserDatabaseHashedPasswords = true
AllocationPortRangeMin = 49152
AllocationPortRangeMax = 65535
Optional Settings
TlsTurnPort = 443
TlsServerCertificateFilename = server.pem
All other settings not mentioned above can be left at their defaults.
6.) If you set the optional settings noted above, you will need to either setup Let's Encrypt or purchase an SSL certificate. In server.pem, you'll need to include the private key, domain certificate, and CA certificate, in that order, concatenated together in a single file.
7.) You'll need to create a single user account for Zimbra Connect to authenticate with the reTURN server. For example, if you want to create a user name of "zimbra", a password of "long-password" and you set the AuthenticationRealm value in step 5 above to "example.com", run this command:
echo -n zimbra:example.com:long-password | md5sum
This will create an MD5 hash that looks like:
403f476b81442de0bf2df8424bad31b3 -
Next, open the /etc/reTurn/users.txt file, comment out the test user sample and add a new line:
zimbra:403f476b81442de0bf2df8424bad31b3:example.com:authorized
The syntax is: login:password:realm:state.
8.) On your reTURN server you will need to open these firewall ports:
- Required
- TCP 3478, UDP 3478
- UDP 49152 - 65535
- Optional
- TCP 443
9.) Start the TURN service: "systemctl restart resiprocate-turn-server", then check the /var/log/messages and /var/log/reTurn/reTurnServer.log log files. If all is working well, you should see log entries similar to:
Mar 19 16:36:47 turn reTurnServer: INFO | 20200319-163647.815 | | RETURN | 140267831281792 | ReTurnConfig.cxx:293 | Processed 1 user(s) from 23 line(s) in /etc/reTurn/users.txt
You can also run "netstat -npl | grep -i turn" to confirm that reTURN is listening to the expected ports:
tcp 0 0 1.2.3.4:3478 0.0.0.0:* LISTEN 1102/reTurnServer
tcp 0 0 1.2.3.4 :443 0.0.0.0:* LISTEN 1102/reTurnServer
tcp6 0 0 :::3478 :::* LISTEN 1102/reTurnServer
tcp6 0 0 :::443 :::* LISTEN 1102/reTurnServer
udp 0 0 1.2.3.4 :3478 0.0.0.0:* 1102/reTurnServer
udp6 0 0 :::3478 :::* 1102/reTurnServer
10.) Finally, from your Zimbra server, where the mailboxd service is installed, as the Zimbra user, run:
zxsuite connect iceServer add turn:1.2.3.4:3478?transport=udp credential long-password username zimbra
Where:
- "1.2.3.4:3478?transport=udp" is the public IP address, port number, and transport for your reTURN server
- "long-password" is the password that you setup in step 7
- "zimbra" is the user name that you setup in step 7
zxsuite connect iceServer remove turn:1.2.3.4:3478?transport=udp credential long-password username zimbra
To see a list of registered TURN servers in Zimbra, use: "zxsuite connect iceServer get"
Tips
After the installation of a TURN server and configuration of the TURN server in Zimbra, if callers are still having trouble connecting, or chat messages are not being received, you can use this site to test your reTURN server: https://webrtc.github.io/samples/src/co ... ickle-ice/ . If problems continue, next check the WebRTC capabilities of the clients using:
- https://test.webrtc.org
- WebRTC debugging tool in Chrome: chrome://webrtc-internals