Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.allthingslinux.org/llms.txt

Use this file to discover all available pages before exploring further.

Prosody modules extend the server with additional functionality. atl.chat manages community modules via a modules.list file that is processed during the Docker image build.

Module directories

The Prosody container uses two directories for community modules:
DirectoryPurpose
/usr/local/lib/prosody/prosody-modules/Full community modules repository (cloned from hg.prosody.im)
/usr/local/lib/prosody/prosody-modules-enabled/Symlinks to active modules from the repository
During the Docker build, the Containerfile clones the prosody-modules Mercurial repository, then creates symlinks in the enabled directory for each module listed in modules.list. Modules not in the list are removed to reduce image size. At container startup, docker-entrypoint.sh runs setup_community_modules() which verifies the enabled directory exists and logs the count of active modules.

Built-in modules

Prosody ships with a comprehensive set of built-in modules. You enable them in prosody.cfg.lua:
modules_enabled = {
  "roster",
  "saslauth",
  "tls",
  "dialback",
  "disco",
  "carbons",
  "pep",
  "private",
  "blocklist",
  "vcard4",
  "version",
  "uptime",
  "time",
  "ping",
  "register",
  "admin_adhoc",
}

Community modules

Community modules are declared in apps/prosody/modules.list, one module name per line. The current list includes:
ModulePurpose
mod_cloud_notify_extensionsPush notification extensions
mod_cloud_notify_filtersPush notification filtering
mod_cloud_notify_encryptedEncrypted push notifications
mod_cloud_notify_priority_tagPriority tagging for push notifications
mod_compliance_2023XMPP compliance suite 2023
mod_compliance_latestLatest XMPP compliance checks
mod_muc_notificationsMUC room notifications
mod_muc_offline_deliveryOffline message delivery for MUC
mod_muc_limitsRate limiting for MUC rooms
mod_muc_moderationMessage moderation in MUC
mod_muc_mam_hintsMAM hints for MUC
mod_muc_mam_markersRead markers for MUC MAM
mod_muc_markersChat markers for MUC
mod_muc_defaultsDefault MUC room settings
mod_muc_slow_modeSlow mode for MUC rooms
mod_muc_thread_polyfillThread support polyfill for MUC
mod_muc_webchat_urlAdvertise web chat URL in room disco#info (via XMPP_WEBCHAT_URL)
mod_default_bookmarksDefault bookmark entries for new users
mod_http_avatarServes vCard avatars at /avatar/<username>
mod_http_statusHTTP status endpoint
mod_http_admin_apiHTTP admin API
mod_http_oauth2OAuth2 authentication
mod_http_pep_avatarPEP avatar HTTP access
mod_measure_modulesModule performance metrics
mod_anti_spamSpam detection and filtering
mod_admin_blocklistServer-wide blocklist management
mod_spam_reportingXEP-0377 spam reporting
mod_report_forwardForward spam reports to admins
mod_csi_battery_saverClient State Indication battery optimisation
mod_invitesInvitation-based registration
mod_s2s_statusServer-to-server connection status
mod_s2s_keepaliveKeep S2S connections alive
mod_log_slow_eventsLog slow event processing
mod_pastebinAuto-paste long messages
mod_reload_modulesReload modules without restart
mod_pubsub_subscriptionPubSub subscription management
mod_pubsub_feedsPubSub Atom/RSS feeds
mod_groups_internalInternal contact groups
mod_support_contactSupport contact information
mod_idlecompatIdle time compatibility

Adding a community module

  1. Find the module in the prosody-modules repository
  2. Add the module name to apps/prosody/modules.list:
    mod_new_module
    
  3. Rebuild the Docker image:
    docker compose build atl-xmpp-server
    
  4. Enable the module in prosody.cfg.lua if it is not auto-loaded:
    modules_enabled = {
      -- existing modules...
      "new_module",
    }
    
  5. Restart or reload Prosody:
    # Reload config without restart
    just xmpp reload
    
    # Full restart if needed
    docker compose restart atl-xmpp-server