add howto for setting up your very own TURN server
							parent
							
								
									ba87eb6753
								
							
						
					
					
						commit
						9bcedf224e
					
				|  | @ -0,0 +1,89 @@ | |||
| How to enable VoIP relaying on your Home Server with TURN | ||||
| 
 | ||||
| Overview | ||||
| -------- | ||||
| The synapse Matrix Home Server supports integration with TURN server via the | ||||
| TURN server REST API | ||||
| (http://tools.ietf.org/html/draft-uberti-behave-turn-rest-00). This allows | ||||
| the Home Server to generate credentials that are valid for use on the TURN | ||||
| server through the use of a secret shared between the Home Server and the | ||||
| TURN server. | ||||
| 
 | ||||
| This document described how to install coturn | ||||
| (https://code.google.com/p/coturn/) which also supports the TURN REST API, | ||||
| and integrate it with synapse. | ||||
| 
 | ||||
| coturn Setup | ||||
| ============ | ||||
| 
 | ||||
|  1. Check out coturn:: | ||||
|       svn checkout http://coturn.googlecode.com/svn/trunk/ coturn | ||||
|       cd coturn | ||||
| 
 | ||||
|  2. Configure it:: | ||||
|       ./configure | ||||
|     You may need to install libevent2: if so, you should do so | ||||
|     in the way recommended by your operating system. | ||||
|     You can ignore warnings about lack of database support: a | ||||
|     database is unnecessary for this purpose. | ||||
| 
 | ||||
|  3. Build and install it:: | ||||
|       make | ||||
|       make install | ||||
| 
 | ||||
|  4. Make a config file in /etc/turnserver.conf. You can customise | ||||
|     a config file from turnserver.conf.default. The relevant | ||||
|     lines are:: | ||||
|       lt-cred-mech | ||||
|       use-auth-secret | ||||
|       static-auth-secret=[your secret key here] | ||||
|     See turnserver.conf.default for explanations of the options. | ||||
|     One way to generate the static-auth-secret is with pwgen:: | ||||
| 
 | ||||
|        pwgen -s 64 1 | ||||
| 
 | ||||
|  5. Ensure youe firewall allows traffic into the TURN server on | ||||
|     the ports you've configured it to listen on (remember to allow | ||||
|     both TCP and UDP if you've enabled both). | ||||
| 
 | ||||
|  6. If you've configured coturn to support TLS/DTLS, generate or | ||||
|     import your private key and certificate. | ||||
| 
 | ||||
|  7. Start the turn server:: | ||||
|        bin/turnserver -o | ||||
| 
 | ||||
| 
 | ||||
| synapse Setup | ||||
| ============= | ||||
| 
 | ||||
| Your home server configuration file needs the following extra keys: | ||||
| 
 | ||||
|  1. "turn_uris": This needs to be a comma-separated | ||||
|     list of public-facing URIs for your TURN server to be given out  | ||||
|     to your clients. Add separate entries for each transport your | ||||
|     TURN server supports. | ||||
| 
 | ||||
|  2. "turn_shared_secret": This is the secret shared between your Home | ||||
|     server and your TURN server, so you should set it to the same | ||||
|     string you used in turnserver.conf. | ||||
| 
 | ||||
|  3. "turn_user_lifetime": This is the amount of time credentials | ||||
|     generated by your Home Server are valid for (in milliseconds). | ||||
|     Shorter times offer less potential for abuse at the expense | ||||
|     of increased traffic between web clients and your home server | ||||
|     to refresh credentials. The TURN REST API specification recommends | ||||
|     one day (86400000). | ||||
| 
 | ||||
| As an example, here is the relevant section of the config file for | ||||
| matrix.org:: | ||||
| 
 | ||||
|     turn_uris: turn:turn.matrix.org:3478?transport=udp,turn:turn.matrix.org:3478?transport=tcp | ||||
|     turn_shared_secret: n0t4ctuAllymatr1Xd0TorgSshar3d5ecret4obvIousreAsons | ||||
|     turn_user_lifetime: 86400000 | ||||
| 
 | ||||
| Now, restart synapse:: | ||||
| 
 | ||||
|     cd /where/you/run/synapse | ||||
|     ./synctl restart | ||||
| 
 | ||||
| ...and your Home Server now supports VoIP relaying! | ||||
		Loading…
	
		Reference in New Issue
	
	 David Baker
						David Baker