This docker image provides you with a configured Prosody XMPP server. The image is intended to run on a Raspberry Pi (as it is based on resin/rpi-raspbian). The server was tested using the Android App Conversations and the Desktop client Gajim.
While Conversations got everything set-up out-of-the-box, Gajim was used with the following extensions:
- HttpUpload
- Off-The-Record Encryption
- OMEMO (requires python-axolotl to be installed)
- Url Image preview
- Secure by default
- Data storage
- SQLite message store
- Configured file upload and image sharing
- Allows registration
- Multi-user chats
- You need a SSL certificate. I recommend LetsEncrypt for that.
- Your Raspberry Pi should have docker set-up and running. You could use the Raspberry image for Hypriot OS to get started quickly.
The following ports are exposed:
- 5000: proxy65 port used for file sharing
- 5222: c2s port (client to server)
- 5269: s2s port (server to server)
- 5347: XMPP component port
- 5280: BOSH / websocket port
- 5281: Secure BOSH / websocket port
- Data:
/usr/local/var/lib/prosody/
- used for SQLite file
- used for HTTP uploads
- this is exposed as docker volume
- Bundled modules:
/usr/local/lib/prosody/modules/
- Additionally installed prosody modules:
/usr/local/lib/prosody/custom-modules/
- Config:
/usr/local/etc/prosody/
- containing the main config file called
prosody.cfg.lua
- containing additional config files within
conf.d/
- containing the main config file called
- SSL certificates:
/usr/local/etc/prosody/certs/
- expects private key to be named
prosody.key
and certificate (fullchain) to beprosody.crt
- expects private key to be named
I recommend using a docker-compose.yml
file:
version: '2'
services:
server:
image: shaula/rpi-prosody:0.11.6
ports:
- "5000:5000"
- "5222:5222"
- "5269:5269"
- "5281:5281"
environment:
- DOMAIN=your.domain.com
volumes:
- ./privkey.pem:/usr/local/etc/prosody/certs/prosody.key
- ./fullchain.pem:/usr/local/etc/prosody/certs/prosody.crt
- ./data:/usr/local/var/lib/prosody
restart: unless-stopped
Boot it via: docker-compose up -d
Inspect logs: docker-compose logs -f
There is a helper script that eases installing additional prosody modules: docker-prosody-module-install
It downloads the current prosody-modules repository. The specified modules are copied and its name is added to the modules_enabled
variable within conf.d/01-modules.cfg.lua
.
If you need additional configuration just overwrite the respective cfg.lua file or add new ones.
Change to verbose logging by replacing the following config lines within prosody.cfg.lua
:
log = {
{levels = {min = "info"}, to = "console"};
};
with:
log = {
{levels = {min = "debug"}, to = "console"};
};
When migrating from 0.10, you need to update the database once:
docker-compose exec server bash
prosodyctl mod_storage_sql upgrade