Last active
July 18, 2018 11:12
-
-
Save svperfecta/46d30ce711a2b1e14d698e8cce0eced0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### | |
###' ejabberd configuration file | |
### | |
### | |
### The parameters used in this configuration file are explained in more detail | |
### in the ejabberd Installation and Operation Guide. | |
### Please consult the Guide in case of doubts, it is included with | |
### your copy of ejabberd, and is also available online at | |
### http://www.process-one.net/en/ejabberd/docs/ | |
### The configuration file is written in YAML. | |
### Refer to http://en.wikipedia.org/wiki/YAML for the brief description. | |
### However, ejabberd treats different literals as different types: | |
### | |
### - unquoted or single-quoted strings. They are called "atoms". | |
### Example: dog, 'Jupiter', '3.14159', YELLOW | |
### | |
### - numeric literals. Example: 3, -45.0, .0 | |
### | |
### - quoted or folded strings. | |
### Examples of quoted string: "Lizzard", "orange". | |
### Example of folded string: | |
### > Art thou not Romeo, | |
### and a Montague? | |
###. ======= | |
###' LOGGING | |
## | |
## loglevel: Verbosity of log files generated by ejabberd. | |
## 0: No ejabberd log at all (not recommended) | |
## 1: Critical | |
## 2: Error | |
## 3: Warning | |
## 4: Info | |
## 5: Debug | |
## | |
loglevel: 3 | |
## | |
## rotation: Disable ejabberd's internal log rotation, as the Debian package | |
## uses logrotate(8). | |
log_rotate_size: 10485760 | |
log_rotate_count: 10 | |
## | |
## overload protection: If you want to limit the number of messages per second | |
## allowed from error_logger, which is a good idea if you want to avoid a flood | |
## of messages when system is overloaded, you can set a limit. | |
## 100 is ejabberd's default. | |
log_rate_limit: 100 | |
## | |
## watchdog_admins: Only useful for developers: if an ejabberd process | |
## consumes a lot of memory, send live notifications to these XMPP | |
## accounts. | |
## | |
## watchdog_admins: | |
## - "[email protected]" | |
###. =============== | |
###' NODE PARAMETERS | |
## | |
## net_ticktime: Specifies net_kernel tick time in seconds. This options must have | |
## identical value on all nodes, and in most cases shouldn't be changed at all from | |
## default value. | |
## | |
## net_ticktime: 60 | |
###. ================ | |
###' SERVED HOSTNAMES | |
## | |
## hosts: Domains served by ejabberd. | |
## You can define one or several, for example: | |
## hosts: | |
## - "example.net" | |
## - "example.com" | |
## - "example.org" | |
## | |
hosts: | |
- "mycorp.net" | |
- "admin.local" | |
- "webadmin.local" | |
## | |
## route_subdomains: Delegate subdomains to other XMPP servers. | |
## For example, if this ejabberd serves example.org and you want | |
## to allow communication with an XMPP server called im.example.org. | |
## | |
## route_subdomains: s2s | |
###. =============== | |
###' LISTENING PORTS | |
## | |
## listen: The ports ejabberd will listen on, which service each is handled | |
## by and what options to start it with. | |
## | |
listen: | |
- | |
port: 5222 | |
ip: "::" | |
module: ejabberd_c2s | |
certfile: "/etc/ejabberd/star.mycorp.net.pem" | |
starttls_required: false | |
## | |
## Custom OpenSSL options | |
## | |
protocol_options: | |
- "no_sslv2" | |
- "no_sslv3" | |
## - "no_tlsv1" | |
max_stanza_size: 65536 | |
shaper: c2s_shaper | |
access: c2s | |
zlib: false | |
resend_on_timeout: true | |
ciphers: "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS" | |
dhfile: "/etc/ejabberd/dh.pem" | |
stream_management: false | |
resume_timeout: 60 | |
- | |
# We only use this for load testing, SG limits access to within VPC | |
port: 5223 | |
ip: "::" | |
module: ejabberd_c2s | |
max_stanza_size: 65536 | |
shaper: c2s_shaper | |
access: c2s | |
zlib: false | |
resend_on_timeout: true | |
- | |
port: 5269 | |
ip: "::" | |
module: ejabberd_s2s_in | |
## | |
## ejabberd_service: Interact with external components (transports, ...) | |
## | |
## - | |
## port: 8888 | |
## module: ejabberd_service | |
## access: all | |
## shaper_rule: fast | |
## ip: "127.0.0.1" | |
## hosts: | |
## "icq.example.org": | |
## password: "secret" | |
## "sms.example.org": | |
## password: "secret" | |
## | |
## ejabberd_stun: Handles STUN Binding requests | |
## | |
# - | |
# port: 3478 | |
# transport: udp | |
# module: ejabberd_stun | |
- | |
port: 5349 | |
module: ejabberd_stun | |
tls: true | |
use_turn: false | |
certfile: "/etc/ejabberd/star.mycorp.net.pem" | |
## | |
## To handle SIP requests: | |
## | |
# - | |
# port: 5060 | |
# module: ejabberd_sip | |
- | |
port: 5061 | |
module: ejabberd_sip | |
tls: true | |
certfile: "/etc/ejabberd/star.mycorp.net.pem" | |
## | |
## To handle XML-RPC requests that provide admin credentials: | |
## | |
- | |
port: 4560 | |
module: ejabberd_xmlrpc | |
access_commands: {} | |
- | |
port: 5280 | |
ip: "::" | |
module: ejabberd_http | |
# request_handlers: | |
# "/websocket": ejabberd_http_ws | |
## "/pub/archive": mod_http_fileserver | |
web_admin: true | |
# http_bind: true | |
## register: true | |
captcha: true | |
# tls: true | |
# certfile: "/etc/ejabberd/star.mycorp.net.pem" | |
## Disabling digest-md5 SASL authentication. digest-md5 requires plain-text | |
## password storage (see auth_password_format option). | |
disable_sasl_mechanisms: | |
- "digest-md5" | |
- "scram-sha-1" | |
###. ================== | |
###' S2S GLOBAL OPTIONS | |
s2s_use_starttls: required_trusted | |
s2s_certfile: "/etc/ejabberd/star.mycorp.net.pem" | |
s2s_protocol_options: | |
- "no_sslv2" | |
- "no_sslv3" | |
- "no_tlsv1" | |
s2s_dhfile: "/etc/ejabberd/dh.pem" | |
s2s_ciphers: "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS" | |
## domain_certfile: Specify a different certificate for each served hostname. | |
## | |
## host_config: | |
## "example.org": | |
## domain_certfile: "/path/to/example_org.pem" | |
## "example.com": | |
## domain_certfile: "/path/to/example_com.pem" | |
## | |
## S2S whitelist or blacklist | |
## | |
## Default s2s policy for undefined hosts. | |
## | |
## s2s_access: s2s | |
## | |
## Outgoing S2S options | |
## | |
## Preferred address families (which to try first) and connect timeout | |
## in milliseconds. | |
## | |
## outgoing_s2s_families: | |
## - ipv4 | |
## - ipv6 | |
## outgoing_s2s_timeout: 10000 | |
###. ============== | |
###' AUTHENTICATION | |
## | |
## auth_method: Method used to authenticate the users. | |
## The default method is the internal. | |
## If you want to use a different method, | |
## comment this line and enable the correct ones. | |
## | |
# NOTE: DO NOT TURN ON IN PRODUCTION @BJC | |
# anonymous_protocol: login_anon | |
allow_multiple_connections: true | |
## | |
## Store the plain passwords or hashed for SCRAM: | |
auth_password_format: plain | |
## auth_password_format: scram | |
## | |
## Define the FQDN if ejabberd doesn't detect it: | |
## fqdn: "server3.example.com" | |
## | |
## Authentication using external script | |
## Make sure the script is executable by ejabberd. | |
## | |
## auth_method: external | |
## extauth_program: | |
## - "/etc/ejabberd/auth.sh" | |
## | |
## Authentication using ODBC | |
## Remember to setup a database in the next section. | |
## | |
## auth_method: odbc | |
## | |
## Authentication using PAM | |
## | |
## auth_method: pam | |
## pam_service: "pamservicename" | |
## | |
## Authentication using LDAP | |
## | |
## auth_method: ldap | |
## | |
## List of LDAP servers: | |
## ldap_servers: | |
## - "localhost" | |
## | |
## Encryption of connection to LDAP servers: | |
## ldap_encrypt: none | |
## ldap_encrypt: tls | |
## | |
## Port to connect to on LDAP servers: | |
## ldap_port: 389 | |
## ldap_port: 636 | |
## | |
## LDAP manager: | |
## ldap_rootdn: "dc=example,dc=com" | |
## | |
## Password of LDAP manager: | |
## ldap_password: "******" | |
## | |
## Search base of LDAP directory: | |
## ldap_base: "dc=example,dc=com" | |
## | |
## LDAP attribute that holds user ID: | |
## ldap_uids: | |
## - "mail": "%[email protected]" | |
## | |
## LDAP filter: | |
## ldap_filter: "(objectClass=shadowAccount)" | |
## | |
## Anonymous login support: | |
## auth_method: anonymous | |
## anonymous_protocol: sasl_anon | login_anon | both | |
## allow_multiple_connections: true | false | |
# We use this during testing only @BJC | |
## auth_method: anonymous | |
## anonymous_protocol: both | |
# We use this for prod @BJC | |
# auth_method: http | |
# auth_opts: | |
# host: "auth.mycorp.net" | |
# connection_pool_size: 20 | |
# NOTE: Doesn't seem to work with auth_method: http | |
# TODO: We need to re-enable internal | |
host_config: | |
"admin.local": | |
auth_method: internal | |
"webadmin.local": | |
auth_method: internal | |
"mycorp.net": | |
auth_method: http | |
auth_opts: | |
host: "auth.mycorp.net" | |
connection_pool_size: 20 | |
## | |
## To use both anonymous and internal authentication: | |
## | |
## host_config: | |
## "public.example.org": | |
## auth_method: | |
## - internal | |
## - anonymous | |
###. ============== | |
###' DATABASE SETUP | |
default_db: mnesia | |
## ejabberd by default uses the internal Mnesia database, | |
## so you do not necessarily need this section. | |
## This section provides configuration examples in case | |
## you want to use other database backends. | |
## Please consult the ejabberd Guide for details on database creation. | |
## | |
## MySQL server: | |
## | |
## odbc_type: mysql | |
## odbc_server: "server" | |
## odbc_database: "database" | |
## odbc_username: "username" | |
## odbc_password: "password" | |
## | |
## If you want to specify the port: | |
## odbc_port: 1234 | |
sql_type: mysql | |
sql_server: "db.mycorp.net" | |
sql_port: 3306 | |
sql_database: "chat" | |
sql_username: "username" | |
sql_password: "apassword" | |
sql_pool_size: 50 | |
## | |
## PostgreSQL server: | |
## | |
## sql_type: pgsql | |
## sql_server: "" | |
## sql_port: 3306 | |
## sql_database: "" | |
## sql_username: "" | |
## sql_password: "" | |
## If you use PostgreSQL, have a large database, and need a | |
## faster but inexact replacement for "select count(*) from users" | |
## | |
## pgsql_users_number_estimate: true | |
## | |
## SQLite: | |
## | |
## odbc_type: sqlite | |
## odbc_database: "/path/to/database.db" | |
## | |
## ODBC compatible or MSSQL server: | |
## | |
## odbc_type: odbc | |
## odbc_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd" | |
## | |
## Interval to make a dummy SQL request to keep the connections to the | |
## database alive. Specify in seconds: for example 28800 means 8 hours | |
## | |
## odbc_keepalive_interval: undefined | |
###. =============== | |
###' TRAFFIC SHAPERS | |
shaper: | |
## | |
## The "normal" shaper limits traffic speed to 1000 B/s | |
## | |
normal: 1000 | |
## | |
## The "fast" shaper limits traffic speed to 50000 B/s | |
## | |
fast: 50000 | |
evil: 100000 | |
## | |
## This option specifies the maximum number of elements in the queue | |
## of the FSM. Refer to the documentation for details. | |
## | |
max_fsm_queue: 10000 | |
###. ==================== | |
###' ACCESS CONTROL LISTS | |
acl: | |
## | |
## The 'admin' ACL grants administrative privileges to XMPP accounts. | |
## You can put here as many accounts as you want. | |
## | |
admin: | |
server: "admin.local" | |
user: | |
- "admin": "admin.local" | |
webadmin: | |
server: "webadmin.local" | |
user: | |
- "admin": "webadmin.local" | |
## | |
## Blocked users | |
## | |
## blocked: | |
## user: | |
## - "baduser": "example.org" | |
## - "test" | |
## Local users: don't modify this. | |
## | |
local: | |
user_regexp: "" | |
## | |
## More examples of ACLs | |
## | |
## jabberorg: | |
## server: | |
## - "jabber.org" | |
## aleksey: | |
## user: | |
## - "aleksey": "jabber.ru" | |
## test: | |
## user_regexp: "^test" | |
## user_glob: "test*" | |
## | |
## Loopback network | |
## | |
loopback: | |
ip: | |
- "127.0.0.0/8" | |
## | |
## Bad XMPP servers | |
## | |
## bad_servers: | |
## server: | |
## - "xmpp.zombie.org" | |
## - "xmpp.spam.com" | |
## | |
## Define specific ACLs in a virtual host. | |
## | |
## host_config: | |
## "localhost": | |
## acl: | |
## admin: | |
## user: | |
## - "bob-local": "localhost" | |
###. ============ | |
###' ACCESS RULES | |
access: | |
## Maximum number of simultaneous sessions allowed for a single user: | |
max_user_sessions: | |
all: 10 | |
## Maximum number of offline messages that users can have: | |
max_user_offline_messages: | |
admin: 5000 | |
all: 50 | |
## This rule allows access only for local users: | |
local: | |
local: allow | |
## Only non-blocked users can use c2s connections: | |
c2s: | |
blocked: deny | |
all: allow | |
## For C2S connections, all users except admins use the "normal" shaper | |
c2s_shaper: | |
admin: none | |
all: normal | |
## All S2S connections use the "fast" shaper | |
s2s_shaper: | |
all: fast | |
## Only admins can send announcement messages: | |
announce: | |
admin: allow | |
## Only admins can use the configuration interface: | |
configure: | |
admin: allow | |
webadmin: allow | |
## Admins of this server are also admins of the MUC service: | |
muc_admin: | |
admin: allow | |
## Only accounts of the local ejabberd server can create rooms: | |
muc_create: | |
local: allow | |
## All users are allowed to use the MUC service: | |
muc: | |
all: allow | |
## Only accounts on the local ejabberd server can create Pubsub nodes: | |
pubsub_createnode: | |
local: allow | |
## In-band registration allows registration of any possible username. | |
## To disable in-band registration, replace 'allow' with 'deny'. | |
register: | |
all: allow | |
## Only allow to register from localhost | |
trusted_network: | |
loopback: allow | |
## Do not establish S2S connections with bad servers | |
## s2s: | |
## bad_servers: deny | |
## all: allow | |
## By default the frequency of account registrations from the same IP | |
## is limited to 1 account every 10 minutes. To disable, specify: infinity | |
## registration_timeout: 600 | |
## | |
## Define specific Access Rules in a virtual host. | |
## | |
## host_config: | |
## "localhost": | |
## access: | |
## c2s: | |
## admin: allow | |
## all: deny | |
## register: | |
## all: deny | |
###. ================ | |
###' DEFAULT LANGUAGE | |
## | |
## language: Default language used for server messages. | |
## | |
language: "en" | |
## | |
## Set a different default language in a virtual host. | |
## | |
## host_config: | |
## "localhost": | |
## language: "ru" | |
###. ======= | |
###' CAPTCHA | |
## | |
## Full path to a script that generates the image. | |
## | |
## captcha_cmd: "/usr/share/ejabberd/captcha.sh" | |
## | |
## Host for the URL and port where ejabberd listens for CAPTCHA requests. | |
## | |
## captcha_host: "example.org:5280" | |
## | |
## Limit CAPTCHA calls per minute for JID/IP to avoid DoS. | |
## | |
## captcha_limit: 5 | |
###. ======= | |
###' MODULES | |
## | |
## Modules enabled in all ejabberd virtual hosts. | |
## | |
modules: | |
mod_adhoc: {} | |
mod_admin_extra: {} | |
# mod_announce: # recommends mod_adhoc | |
# access: announce | |
# mod_blocking: {} # requires mod_privacy | |
mod_caps: {} | |
# mod_carboncopy: {} | |
# mod_client_state: {} | |
mod_configure: {} # requires mod_adhoc | |
mod_cron: | |
tasks: | |
- time: 1 | |
units: days | |
module: mod_muc_admin | |
function: rooms_unused_destroy | |
arguments: | |
- "mycorp.net" | |
- 1 | |
- time: 1 | |
units: minutes | |
module: mod_garbageman | |
function: collect | |
arguments: "> []." | |
mod_disco: {} | |
# mod_echo: {} | |
# mod_irc: {} | |
mod_http_bind: {} | |
## mod_http_fileserver: | |
## docroot: "/var/www" | |
## accesslog: "/var/log/ejabberd/access.log" | |
# mod_last: {} | |
mod_muc: | |
db_type: mnesia | |
access_persistent: admins | |
access_admin: admins | |
history_size: 50 | |
max_users: 200 | |
max_users_admin_threshold: 5 | |
max_user_conferences: 10 | |
min_message_interval: 0.4 | |
max_users_presence: 50 | |
default_room_options: | |
allow_change_subj: false | |
allow_private_messages: true | |
allow_private_messages_from_visitors: nobody | |
allow_query_users: false | |
allow_user_invites: false | |
allow_visitor_nickchange: false | |
allow_visitor_status: false | |
anonymous: true | |
captcha_protected: false | |
logging: false | |
mam: true | |
max_users: 200 | |
members_by_default: true | |
members_only: false | |
moderated: false | |
password: "roompass123" | |
password_protected: false | |
persistent: true | |
public: false | |
public_list: true | |
## mod_muc_log: {} | |
mod_muc_admin: {} | |
mod_mam: | |
iqdisc: one_queue | |
cache_size: 20000 | |
db_type: sql | |
default: always | |
assume_mam_usage: true | |
## mod_multicast: {} | |
mod_offline: | |
access_max_user_messages: max_user_offline_messages | |
mod_ping: | |
send_pings: true | |
ping_interval: 60 | |
ping_ack_timeout: 22 | |
timeout_action: kill | |
## mod_pres_counter: | |
## count: 5 | |
## interval: 60 | |
# mod_privacy: {} | |
# mod_private: {} | |
## mod_proxy65: {} | |
mod_pubsub: | |
access_createnode: pubsub_createnode | |
## reduces resource comsumption, but XEP incompliant | |
ignore_pep_from_offline: true | |
## XEP compliant, but increases resource comsumption | |
## ignore_pep_from_offline: false | |
last_item_cache: false | |
plugins: | |
- "flat" | |
- "hometree" | |
- "pep" # pep requires mod_caps | |
# mod_register: | |
# ## | |
# ## Protect In-Band account registrations with CAPTCHA. | |
# ## | |
# ## captcha_protected: true | |
# | |
# ## | |
# ## Set the minimum informational entropy for passwords. | |
# ## | |
# ## password_strength: 32 | |
# | |
# ## | |
# ## After successful registration, the user receives | |
# ## a message with this subject and body. | |
# ## | |
# welcome_message: | |
# subject: "Welcome!" | |
# body: |- | |
# Hi. | |
# Welcome to this Evil Chat server. | |
# | |
# ## | |
# ## When a user registers, send a notification to | |
# ## these XMPP accounts. | |
# ## | |
# ## registration_watchers: | |
# ## - "[email protected]" | |
# | |
# ## | |
# ## Only clients in the server machine can register accounts | |
# ## | |
# ip_access: trusted_network | |
# | |
# ## | |
# ## Local c2s or remote s2s users cannot register accounts | |
# ## | |
# ## access_from: deny | |
# | |
# access: register | |
# mod_roster: {} | |
# mod_shared_roster: {} | |
mod_stats: {} | |
# mod_time: {} | |
# mod_vcard: | |
# search: false | |
mod_version: {} | |
## | |
## Enable modules with custom options in a specific virtual host | |
## | |
## host_config: | |
## "localhost": | |
## modules: | |
## mod_echo: | |
## host: "mirror.localhost" | |
## | |
## Enable modules management via ejabberdctl for installation and | |
## uninstallation of public/private contributed modules | |
## (enabled by default) | |
## | |
allow_contrib_modules: true | |
###. | |
###' | |
### Local Variables: | |
### mode: yaml | |
### End: | |
### vim: set filetype=yaml tabstop=8 foldmarker=###',###. foldmethod=marker: | |
### ===================== | |
### SESSION MANAGEMENT DB | |
redis_server: "redis.mycorp.net" | |
redis_port: 6379 | |
redis_db: 0 | |
sm_db_type: redis |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment