Prosody Notes
Table of Contents
Prosody is surprisingly easy to set up, and surprisingly resource-light! I set it up on a raspberry pi zero and it's humming along quite happily.
On Raspbian 1:6.12.47-1+rpt1 (2025-09-16) I had to install:
- luarocks (so that
prosodyctlcan install community modules) - liblua5.4-dev (to solve this luarocks issue)
My router makes admin functionality annoyingly difficult, so I set up a Tailscale funnel (tailscale funnel --bg --tcp=443 tcp://hostname:port).
I pointed that to the prosody https port and haven't had any issues so far.
I added certs to prosody that I obtained with tailscale cert, but I'm pretty sure you could find a way to do this with self-signed certs as well.
Modules and more that I found useful:
- conversejs provides an okay web interface, although the default color scheme is horrendous. I had to configure the websocket url to use the normal port like this:
conversejs_options = {
websocket_url = "wss://hostname/xmpp-websocket"
}
- I turned on
mamfor multi-device sync - I also turned on
boshandwebsocket, although I'm not sure this was really necessary - I turned on
net_multiplex(see "Port Multiplexing") so I only have to funnel one port, although I was pleasantly surprised to learn that funnel can be set up for multiple ports at the same time. I should have expected that, but I didn't. Configuration looks like this:
ports = { 8000, 8000, 8000 }
ssl_ports = { 8080, 8080 }
http_external_url = "https://hostname/"
- I turned on the http_file_share component like this:
Component "share.hostname" "http_file_share"
http_host = "hostname"
modules_disabled = {
"s2s";
}
I'm still having an occasional client disconnect (all clients simultaneously) with an "unexpected eof" error, I suspect due to some misconfiguration and/or this issue.