Skip to content

shaula/rpi-prosody

Repository files navigation

Prosody XMPP server for Raspberry Pi

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

Features

  • Secure by default
    • SSL certificate required
    • End-to-end encryption required (using OMEMO or OTR)
  • Data storage
    • SQLite message store
    • Configured file upload and image sharing
  • Allows registration
  • Multi-user chats

Requirements

  • 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.

Image Details

Ports

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

Directories

  • 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/
  • SSL certificates: /usr/local/etc/prosody/certs/
    • expects private key to be named prosody.key and certificate (fullchain) to be prosody.crt

Run

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

Extend

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.

Debugging

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"};
};

Upgrade

When migrating from 0.10, you need to update the database once:

docker-compose exec server bash
prosodyctl mod_storage_sql upgrade

About

Prosody XMPP server for Raspberry Pi

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published