XMPP: audio/video call support (prosody)

__  __  __  __   ___   ___   _
\ \/ / |  \/  | | _ \ | _ \ (_)
 >  <  | |\/| | |  _/ |  _/  _
/_/\_\ |_|  |_| |_|   |_|   (_)


                  _   _           __        _      _
 __ _   _  _   __| | (_)  ___    / / __ __ (_)  __| |  ___   ___
/ _` | | || | / _` | | | / _ \  / /  \ V / | | / _` | / -_) / _ \
\__,_|  \_,_| \__,_| |_| \___/ /_/    \_/  |_| \__,_| \___| \___/


             _   _
 __   __ _  | | | |
/ _| / _` | | | | |
\__| \__,_| |_| |_|


                                       _
 ___  _  _   _ __   _ __   ___   _ _  | |_
(_-< | || | | '_ \ | '_ \ / _ \ | '_| |  _|
/__/  \_,_| | .__/ | .__/ \___/ |_|    \__|
            |_|    |_|

  __                                   _         __
 / /  _ __   _ _   ___   ___  ___   __| |  _  _  \ \
| |  | '_ \ | '_| / _ \ (_-< / _ \ / _` | | || |  | |
| |  | .__/ |_|   \___/ /__/ \___/ \__,_|  \_, |  | |
 \_\ |_|                                   |__/  /_/

╔─*──*──*──*──*──*──*──*──*──*──*──*──*──*──*──*─╗
║1   ........................................   1║
║2*  ........................................  *2║
║3   ........................................   3║
║1   ...........Posted: 2025-03-09...........   1║
║2*  ...Tags: sysadmin linux xmpp prosody ...  *2║
║3   ........................................   3║
║1   ........................................   1║
╚────────────────────────────────────────────────╝

Some sloppy notes for you about how to enable audio/video calling for a prosody
server in debian.

https://prosody.im/doc/turn
https://gist.github.com/iNPUTmice/a28c438d9bbf3f4a3d4c663ffaa224d9

This is an extension of my other article

reliability of calls bad, basically not work

prosody stun/turn testing: https://prosody.im/doc/turn#testing-your-setup also
prosodyctl check turn

sudo apt-get update sudo apt-get install coturn

vi /etc/turnserver.conf

i set `realm=xmpp.someodd.zip` uncommented `use-auth-secret` then set
`static-auth-secret` to some gibberish set by keepassxc.

then `sudo systemctl restart coturn`

sudo ufw allow 3478,5349/tcp comment 'Allow TURN server TCP ports' sudo ufw
allow 3478,5349/udp comment 'Allow TURN server UDP ports'

dont' forget forward ports router

## prosody

sudo vi /etc/prosody/prosody.cfg.lua

i actually just uncommented `turn_external` in the `modules_enabled` section.

then i had to set `turn_external_host` to `xmpp.someodd.zip` and use the secret
i set earlier in `turn_external_secret`.

then i think you can use sudo prosodyctl reload OR systemctl reload prosody

baudrillard@simulacra ~ % sudo prosodyctl check turn Identified 1 TURN services.

Testing TURN service xmpp.someodd.zip:3478... 1 warnings:

```
STUN returned a private IP! Is the TURN server behind a NAT and misconfigured?
```

Success!

All checks passed, congratulations!

sudo journalctl -u coturn

sudo prosodyctl check turn -v --ping=stun.conversations.im

baudrillard@simulacra ~ % sudo prosodyctl check turn -v
--ping=stun.conversations.im Identified 1 TURN services.

Testing TURN service xmpp.someodd.zip:3478... 2 warnings:

```
STUN returned a private IP! Is the TURN server behind a NAT and misconfigured?
TURN external IP vs relay address mismatch! Is the TURN server behind a NAT and misconfigured?
```

External IP: 192.168.1.1 Relayed address 1: 192.168.1.100:50367 TURN external
address: 24.130.51.197:50367 Success!

All checks passed, congratulations!

# further debugging

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ you
have to edit /etc/turnserver.conf and sudo systemctl restart coturn and

# Uncomment to use long-term credential mechanism.

# By default no credentials mechanism is used (any user allowed).

#

#lt-cred-mech #user=testuser:testpassword

i feel like i'm still having issues between clients. dino works best?