Files
MKs-Docker-Compose/social/prosody/prosody.cfg.lua
2026-04-03 15:40:14 -03:00

226 lines
9.4 KiB
Lua

-- Prosody MK Configuration File
--
-- Tip: You can check that the syntax of this file is correct
-- when you have finished by running this command:
-- prosodyctl check config
---------- Server-wide settings ----------
local xmpp_domain = Lua.os.getenv("XMPP_DOMAIN") or "example.com"
local xmpp_admin = Lua.os.getenv("XMPP_ADMIN") or ("admin@" .. xmpp_domain)
admins = { xmpp_admin }
--plugin_paths = {}
-- This is the list of modules Prosody will load on startup.
-- Documentation for bundled modules can be found at: https://prosody.im/doc/modules
modules_enabled = {
-- Generally required
"disco", -- Service discovery
"roster", -- Allow users to have a roster. Recommended ;)
"saslauth", -- Authentication for clients and servers. Recommended if you want to log in.
"tls", -- Add support for secure TLS on c2s/s2s connections
-- Not essential, but recommended
"blocklist", -- Allow users to block communications with other users
"bookmarks", -- Synchronise the list of open rooms between clients
"carbons", -- Keep multiple online clients in sync
"dialback", -- Support for verifying remote servers using DNS
"limits", -- Enable bandwidth limiting for XMPP connections
"pep", -- Allow users to store public and private data in their account
"private", -- Legacy account storage mechanism (XEP-0049)
"smacks", -- Stream management and resumption (XEP-0198)
"vcard4", -- User profiles (stored in PEP)
"vcard_legacy", -- Conversion between legacy vCard and PEP Avatar, vcard
-- Nice to have
"csi_simple", -- Simple but effective traffic optimizations for mobile devices
"invites", -- Create and manage invites
"invites_adhoc", -- Allow admins/users to create invitations via their client
"invites_register", -- Allows invited users to create accounts
"ping", -- Replies to XMPP pings with pongs
"register", -- Allow users to register on this server using a client and change passwords
"time", -- Let others know the time here on this server
"uptime", -- Report how long server has been running
"version", -- Replies to server version requests
"mam"; -- Store recent messages to allow multi-device synchronization
--"turn_external"; -- Provide external STUN/TURN service for e.g. audio/video calls
-- Admin interfaces
"admin_adhoc", -- Allows administration via an XMPP client that supports ad-hoc commands
"admin_shell", -- Allow secure administration via 'prosodyctl shell'
-- HTTP modules
"http_file_share"; -- HTTP file upload for sharing files/images in chat (XEP-0363)
--"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
--"http_openmetrics"; -- for exposing metrics to stats collectors
--"websocket"; -- XMPP over WebSockets
-- Other specific functionality
"announce"; -- Send announcement to all online users
--"groups"; -- Shared roster support
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
--"mimicking"; -- Prevent address spoofing
--"motd"; -- Send a message to users when they log in
--"proxy65"; -- Enables a file transfer proxy service which clients behind NAT can use
--"s2s_bidi"; -- Bi-directional server-to-server (XEP-0288)
--"server_contact_info"; -- Publish contact information for this service
--"tombstones"; -- Prevent registration of deleted accounts
--"watchregistrations"; -- Alert admins of registrations
--"welcome"; -- Welcome users who register accounts
}
-- These modules are auto-loaded, but should you want
-- to disable them then uncomment them here:
modules_disabled = {
-- "offline"; -- Store offline messages
-- "c2s"; -- Handle client connections
-- "s2s"; -- Handle server-to-server connections
-- "posix"; -- POSIX functionality, sends server to background, etc.
}
-- Server-to-server authentication
-- Require valid certificates for server-to-server connections?
-- If false, other methods such as dialback (DNS) may be used instead.
s2s_secure_auth = true
-- Some servers have invalid or self-signed certificates. You can list
-- remote domains here that will not be required to authenticate using
-- certificates. They will be authenticated using other methods instead,
-- even when s2s_secure_auth is enabled.
--s2s_insecure_domains = { "insecure.example" }
-- Even if you disable s2s_secure_auth, you can still require valid
-- certificates for some domains by specifying a list here.
--s2s_secure_domains = { "jabber.org" }
-- Rate limits
-- Enable rate limits for incoming client and server connections. These help
-- protect from excessive resource consumption and denial-of-service attacks.
limits = {
c2s = {
rate = "50kb/s",
},
s2sin = {
rate = "300kb/s",
},
}
-- Authentication
-- Many authentication providers, including the default one, allow you to
-- create user accounts via Prosody's admin interfaces. For details, see the
-- documentation at https://prosody.im/doc/creating_accounts
authentication = "internal_hashed"
-- Storage
-- Select the storage backend to use. By default Prosody uses flat files
-- in its configured data directory, but it also supports more backends
-- through modules. An "sql" backend is included by default, but requires
-- additional dependencies. See https://prosody.im/doc/storage for more info.
storage = "sql" -- Default is "internal"
-- For the "sql" backend, you can uncomment *one* of the below to configure:
sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
--sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
-- Archiving configuration
-- If mod_mam is enabled, Prosody will store a copy of every message. This
-- is used to synchronize conversations between multiple clients, even if
-- they are offline. This setting controls how long Prosody will keep
-- messages in the archive before removing them.
archive_expires_after = "1w" -- Remove archived messages after 1 week
-- You can also configure messages to be stored in-memory only. For more
-- archiving options, see https://prosody.im/doc/modules/mod_mam
-- Audio/video call relay (STUN/TURN)
-- To ensure clients connected to the server can establish connections for
-- low-latency media streaming (such as audio and video calls), it is
-- recommended to run a STUN/TURN server for clients to use. If you do this,
-- specify the details here so clients can discover it.
-- Find more information at https://prosody.im/doc/turn
-- Specify the address of the TURN service (you may use the same domain as XMPP)
--turn_external_host = "turn.example.com"
-- This secret must be set to the same value in both Prosody and the TURN server
--turn_external_secret = "your-secret-turn-access-token"
-- Logging configuration
-- For advanced logging see https://prosody.im/doc/logging
log = {
-- Docker: log to stdout/stderr
info = "*console";
error = "*console";
-- "*syslog"; -- Uncomment to also log to syslog
}
-- statistics = "internal"
-- Certificates
ssl = {
certificate = "/etc/prosody/certs/certs/" .. xmpp_domain .. ".crt",
key = "/etc/prosody/certs/private/" .. xmpp_domain .. ".key",
}
-- HTTP file upload (XEP-0363)
http_file_share_size_limit = 10 * 1024 * 1024 -- 10 MB per file
http_file_share_expire_after = 60 * 60 * 24 * 14 -- delete after 14 days
http_external_url = "https://" .. xmpp_domain .. "/"
----------- Virtual hosts -----------
-- You need to add a VirtualHost entry for each domain you wish Prosody to serve.
-- Settings under each VirtualHost entry apply *only* to that host.
VirtualHost(xmpp_domain)
------ Components ------
-- You can specify components to add hosts that provide special services,
-- like multi-user conferences, and transports.
-- For more information on components, see https://prosody.im/doc/components
-- Multi-user chat (group chats)
Component("conference." .. xmpp_domain, "muc")
modules_enabled = { "muc_mam" } -- store group chat history
-- Default room settings applied to every newly created room
muc_room_default_public = true -- rooms are listed in the room browser
muc_room_default_persistent = true -- rooms survive when the last user leaves
muc_room_default_members_only = false -- anyone can join
muc_room_default_allow_register = true -- users can bookmark with a nickname
muc_room_default_history_length = 50 -- messages shown on join
---Set up an external component (default component port is 5347)
--
-- External components allow adding various services, such as gateways/
-- bridges to non-XMPP networks and services. For more info
-- see: https://prosody.im/doc/components#adding_an_external_component
--
--Component "gateway.example.com"
-- component_secret = "password"
---------- End of the Prosody Configuration file ----------
-- You usually **DO NOT** want to add settings here at the end, as they would
-- only apply to the last defined VirtualHost or Component.
--
-- Settings for the global section should go higher up, before the first
-- VirtualHost or Component line, while settings intended for specific hosts
-- should go under the corresponding VirtualHost or Component line.
--
-- For more information see https://prosody.im/doc/configure