Using Prosody with coturn

coturn is a TURN and STUN server.


This assumes a Debian system. Commands for installation and config file paths may vary with operating system.

Install coturn

sudo apt install coturn

Check whether it was started automatically,

sudo systemctl status coturn

If not, do so (or wait until after configuring).

sudo systemctl enable --now coturn


If you have a firewall enabled, make sure to allow coturn through.

sudo ufw allow Turnserver

Install mod_external_services

This step can be skipped after version 0.12 because mod_turn_external and mod_external_services are included with Prosody.

See page about installing modules.


Enable the module in the modules_enabled list:

modules_enabled = {
    -- other modules ...

Generate a suitably strong shared secret and put it both as static-auth-secret in /etc/turnserver.conf and as turn_external_secret in Prosodys configuration. A realm is also needed.

In Prosodys configuration, /etc/prosody/prosody.cfg.lua, add:

modules_enabled = {
    -- other modules ...

turn_external_host = ""
turn_external_secret = "s1kr3t"

That should be it! Don’t forget to check out coturns own documentation and skim through the rest of the default configuration file.


By using a client with an XML console, manually request temporary credentials as per XEP-0215. These can be tested using