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?