-- Prosody configuration for SàT Docker image ---------- Server-wide settings ---------- -- we use environment variable to get the domain local domain = os.getenv("DOMAIN") or "libervia.int" -- default admin is admin@DOMAIN admins = { "admin@"..(domain) } -- Enable use of libevent for better performance under high load -- For more information see: http://prosody.im/doc/libevent --use_libevent = true; -- Documentation on modules can be found at: http://prosody.im/doc/modules modules_enabled = { -- used by SàT -- SàT PubSub "delegation"; "privilege"; -- Not mandatory but neat "ipcheck"; "http_upload"; -- Generally required "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 "dialback"; -- s2s dialback support "disco"; -- Service discovery -- Not essential, but recommended "private"; -- Private XML storage (for room bookmarks, etc.) "vcard"; -- Allow users to set vCards -- These are commented by default as they have a performance impact --"privacy"; -- Support privacy lists --"compression"; -- Stream compression (Debian: requires lua-zlib module to work) -- Nice to have "version"; -- Replies to server version requests "uptime"; -- Report how long server has been running "time"; -- Let others know the time here on this server "ping"; -- Replies to XMPP pings with pongs -- "pep"; -- Enables users to publish their mood, activity, playing music and more -- we don't want to allow self registering, this is managed by a SàT plugin --"register"; -- Allow users to register on this server using a client and change passwords -- Admin interfaces "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands --"admin_telnet"; -- Opens telnet console interface on localhost port 5582 -- HTTP modules --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP" --"http_files"; -- Serve static files from a directory over HTTP -- Other specific functionality "posix"; -- POSIX functionality, sends server to background, enables syslog, etc. --"groups"; -- Shared roster support -- announce is usefull on a Libervia instance "announce"; -- Send announcement to all online users --"welcome"; -- Welcome users who register accounts --"watchregistrations"; -- Alert admins of registrations --"motd"; -- Send a message to users when they log in --"legacyauth"; -- Legacy authentication. Only used by some old clients and bots. }; -- to disable them then uncomment them here: modules_disabled = { -- "offline"; -- Store offline messages -- "c2s"; -- Handle client connections -- "s2s"; -- Handle server-to-server connections }; -- Disable account creation by default, for security -- For more information see http://prosody.im/doc/creating_accounts allow_registration = false; -- We keep foreground for Docker daemonize = false; -- Debian: -- Please, don't change this option since /var/run/prosody/ -- is one of the few directories Prosody is allowed to write to -- pidfile = "/var/run/prosody/prosody.pid"; -- We want to use the certificat in /usr/share/sat ssl = { key = "/usr/share/sat/certificates/libervia.key"; certificate = "/usr/share/sat/certificates/libervia.crt"; } c2s_require_encryption = true -- Force certificate authentication for server-to-server connections? -- This provides ideal security, but requires servers you communicate -- with to support encryption AND present valid, trusted certificates. -- NOTE: Your version of LuaSec must support certificate verification! -- For more information see http://prosody.im/doc/s2s#security s2s_secure_auth = false -- Many servers don't support encryption or have invalid or self-signed -- certificates. You can list domains here that will not be required to -- authenticate using certificates. They will be authenticated using DNS. --s2s_insecure_domains = { "gmail.com" } -- Even if you leave s2s_secure_auth disabled, you can still require valid -- certificates for some domains by specifying a list here. --s2s_secure_domains = { "jabber.org" } -- Select the authentication backend to use. The 'internal' providers -- use Prosody's configured data storage to store the authentication data. -- To allow Prosody to offer secure authentication mechanisms to clients, the -- default provider stores passwords in plaintext. If you do not trust your -- server please see http://prosody.im/doc/modules/mod_auth_internal_hashed -- for information about using the hashed backend. authentication = "internal_plain" -- we listen to the world for components (but we do *NOT* -- expose the port! It's just for linked containers) component_interface="0.0.0.0" log = { -- Log to files and console (change 'info' to 'debug' for debug logs): info = "/var/log/prosody/prosody.log"; error = "/var/log/prosody/prosody.err"; info = "*console"; -- Log to the console, so "docker logs" will show them } VirtualHost (domain) privileged_entities = { ["pubsub."..domain] = { roster = "get"; message = "outgoing"; }, } delegations = { ["urn:xmpp:mam:1"] = { filtering = {"node"}; jid = "pubsub."..domain; }, ["http://jabber.org/protocol/pubsub"] = { jid = "pubsub."..domain; }, } ------ Components ------ ---Set up a MUC (multi-user chat) room server on conference.example.com: Component ("chat."..domain) "muc" -- Set up a SOCKS5 bytestream proxy for server-proxied file transfers: Component ("proxy."..domain) "proxy65" -- 50 MiB limit for upload Component ("upload."..domain) "http_upload" http_upload_file_size_limit = 50 * 1024 * 1024 Component ("pubsub."..domain) component_secret = os.getenv("SAT_PUBSUB_SECRET") modules_enabled = {"privilege", "delegation"} Component ("salut."..domain) component_secret = os.getenv("SAT_SALUT_SECRET") ------ Additional config files ------ -- For organizational purposes you may prefer to add VirtualHost and -- Component definitions in their own config files. This line includes -- all config files in /etc/prosody/conf.d/ -- conf.d is not used in this Docker image, -- but if needed just uncomment the next line -- Include "conf.d/*.cfg.lua"