de:die_konfigurationsdatei_von_ejabberd_erklaert
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Die Konfigurationsdatei von ejabberd erklärt
Voraussetzung
- Dieses Howto hat keine Voraussetzungen. Es kann aber sein, dass hier Funktionen erklärt werden, die in Howtos vorkommen, die du noch nicht gelesen hast.
Einleitung
Ich werde hier die Konfigurationsdatei von ejabberde „ejabberd.yml“ in kleine Abschnitte einteilen und deren Funktion erläutern.
ejabber.yml
Kopfzeilen
Bei den Kopfzeilen muss ich wohl nichts weiter erklären. Hier gibt es lediglich Kommentare und Verweise zu Anleitungen.
### ### ejabberd configuration file ### ### The parameters used in this configuration file are explained at ### ### https://docs.ejabberd.im/admin/configuration ### ### The configuration file is written in YAML. ### ******************************************************* ### ******* !!! WARNING !!! ******* ### ******* YAML IS INDENTATION SENSITIVE ******* ### ******* MAKE SURE YOU INDENT SECTIONS CORRECTLY ******* ### ******************************************************* ### Refer to http://en.wikipedia.org/wiki/YAML for the brief description. ###
Hosts, Loglevel und Zertifikate
hosts: ### Für welche Domains ist der Server zuständig weitere Domains können pro Zeile angegeben werden - localhost loglevel: info ### Was soll alles protokolliert werden? "info" sehr wenig, "error" alle Fehler und "debug" alles certfiles: ### Wo findet der Server das Zertifikat zu den Domains unter hosts - "/home/ejabberd/certs/certs.pem"
Listen
### Auf welchen Ports "lauscht" dein Server nach eingehenden Verbindungen:
listen:
-
port: 5222 ### Port 5222 ist der Standardport für Clients/Apps
ip: "::" ### Abkürzung für "Lausche auf allen IP Adresse, localhost, IPv4 und IPv6.
module: ejabberd_c2s ### Welches Modul wird verwendet, hier: client to server
max_stanza_size: 262144 ### Wie groß dürfen maximal sein. Siehe auch Begriffserklärung hier im Wiki
shaper: c2s_shaper ### Es wird auf den shaper c2s_shaper verwiesen. Erklärungen weiter unten
access: c2s ### Wer darf sich verbinden, alle die unter der Access Rule c2s weiter unten definiert wurden
starttls_required: true ### StartTLS Verschlüsselung wird erzwungen, sonst keine Verbindung möglich
-
port: 5223 ### Port 5223 ist ein weiterer Standardport für Clients, früher LegacyAuth, heute für Verbindungen mit TLS statt StartTLS
ip: "::"
tls: true
module: ejabberd_c2s
max_stanza_size: 262144
shaper: c2s_shaper
access: c2s
starttls_required: true
-
port: 5269 ### Standardport für Server zu Server kommunikation mit StartTLS
ip: "::"
module: ejabberd_s2s_in ### Welches Modul soll verwendet werden, hier server zu server
max_stanza_size: 524288
-
port: 5270 ### ein weiterer Standardport für Server zu Server Kommunikation. Mit TLS statt StartTLS
ip: "::"
tls: true ### TLS soll verwendet werden
module: ejabberd_s2s_in
max_stanza_size: 524288
-
port: 5443 ### Standardport für HTTPS Zugriffe
ip: "::"
module: ejabberd_http
tls: true
request_handlers: ### Welche Anfragen sollen beantwortet werden
/admin: ejabberd_web_admin ### Pfad zum Webinterface
/api: mod_http_api ### Pfad zur API
/bosh: mod_bosh ### Pfad zu BOSH (Anbindung bestimmter Clients)
/captcha: ejabberd_captcha ### Pfad zum Captcha
/upload: mod_http_upload ### Pfad zum Upload für Dateiaustausch (senden von Bildern, Videos oder Musik)
/ws: ejabberd_http_ws ### Pfad zu Websocket (Anbindung bestimmter Clients)
-
port: 5280 ### Standartport für HTTP
ip: "::"
module: ejabberd_http
request_handlers:
/admin: ejabberd_web_admin
/.well-known/acme-challenge: ejabberd_acme ### Für eingebauten Let's Encrypt Client
-
port: 3478 ### Standardport für Audio-/Videocalls
transport: udp ### nur udp soll verwendet werden, Standard bei unverschlüsselten Calls
use_turn: true ### Benutze den eingebauten TURN Server
turn_ipv4_address: <0.0.0.0> ### Welche IPv4 Adresse soll verwendet werden, muss definiert werden, Platzhalter für "alle IP Adressen" unzulässig
turn_ipv6_address: <::> ### Welche IPV6 Adresse soll verwendet werden, muss definiert werden, Platzhalter für "alle IP Adressen" unzulässig
auth_type: user ### Wer darf den Server nutzen, alle registrierten User
auth_realm: <beispiel.de> ### Welche Domain wird verwendet
module: ejabberd_stun
-
port: 3478
transport: tcp ### TCP als alternative
use_turn: true
turn_ipv4_address: <0.0.0.0>
turn_ipv6_address: <::>
auth_type: user
auth_realm: <beispiel.de>
module: ejabberd_stun
-
port: 5349 ### Standardport für verschlüsselte Audio-/Videocalls
transport: tcp ### Verschlüsselung geht nur über TCP
use_turn: true
tls: true
ip: <0.0.0.0>
turn_ipv4_address: <0.0.0.0>
turn_ipv6_address: <::>
auth_type: user
auth_realm: <beispiel.de>
module: ejabberd_stun
-
port: 1883 ### ejabberd bietet auch MQTT, wird vielleicht in einem späteren Howto vorkommen
ip: "::"
module: mod_mqtt
backlog: 1000
s2s Einstellungen
s2s_access: s2s ### Welche Access Rule wird angewendet, welcher Server darf mit diesem kommunizieren s2s_use_starttls: required ### Server dürfen nur Verschlüsselt kommunizieren s2s_protocol_options: ### Optinen, hier verbiete SSLv2 und SSLv3 (unsichere Verschlüsselung) - "no_sslv3" - "no_sslv2" ### Welche Chiffren sind zur Verschlüsselung freigegeben: s2s_ciphers: "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-SEED-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA" s2s_dhfile: "/home/ejabberd/certs/dhparams.pem" ### Pfard zur DHPARAMS um Perfect Forward Secrecy (PFS) zu ermöglichen ### Das gleiche auch für die Kommunikation zwischen Client und Server c2s_protocol_options: - "no_sslv3" - "no_sslv2" c2s_ciphers: "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-SEED-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA" c2s_dhfile: "/home/ejabberd/certs/dhparams.pem"
ACL
acl: ### Access Listen definieren Listen mit unterschiedlichen Inhalten
admin: ### ACL mit Namen "admin"
user: ### ACL "admin" enhält "user"
- <benutzer1>@<beispiel.de> ### 1. User der Liste "admin"
- <benutzer2>@<beispiel.de> ### 2. User der Liste "admin
local:
user_regexp: ""
loopback:
ip:
- 127.0.0.0/8
- ::1/128
soft_blocked: ### ACL mit Namen "soft_blocked"
server: ### ACL enthält Server
- "<spamserver1.de>" ### 1. Server der Liste "soft_blocked"
- "<werbung2.com>" ### 2. Server der Liste "soft_blocked"
hard_blocked:
server:
- "<werbeserver1.de>"
- "<adserver2.com>"
Access Rules
access_rules:
local: ### Definiere die Access Rule local
allow: local ### Erlaube ACL den Inhalt local
c2s: ### Definiere die Access Rule c2s
deny: blocked ### Verbiete den Inhalt von blocked
allow: all ### Erlaube alles andere
announce:
allow: admin
configure:
allow: admin
muc_create:
allow: local
pubsub_createnode:
allow: local
trusted_network:
allow: loopback
register:
allow: all
strangers:
deny: soft_blocked
allow: all
s2s:
deny: hard_blocked
allow: all
Captcha
captcha_cmd: "/home/ejabberd/captcha/captcha-ng.sh" captcha_url: "https://<beispiel.de>:5443" language: "de"
API Berechtigungen
api_permissions:
"console commands":
from:
- ejabberd_ctl
who: all
what: "*"
"admin access":
who:
access:
allow:
- acl: loopback
- acl: admin
oauth:
scope: "ejabberd:admin"
access:
allow:
- acl: loopback
- acl: admin
what:
- "*"
- "!stop"
- "!start"
"public commands":
who:
ip: 127.0.0.1/8
what:
- status
- connected_users_number
Shaper und Shaper Rules
shaper:
normal:
rate: 3000
burst_size: 20000
fast: 100000
shaper_rules:
max_user_sessions: 10
max_user_offline_messages:
5000: admin
100: all
c2s_shaper:
none: admin
normal: all
s2s_shaper: fast
Module
modules:
mod_adhoc: {}
mod_admin_extra: {}
mod_announce:
access: announce
mod_avatar: {}
mod_blocking: {}
mod_bosh: {}
mod_caps: {}
mod_carboncopy: {}
mod_client_state: {}
mod_configure: {}
mod_disco: {}
mod_fail2ban: {}
mod_http_api: {}
mod_http_upload:
put_url: https://@HOST@:5443/upload
custom_headers:
"Access-Control-Allow-Origin": "https://@HOST@"
"Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS"
"Access-Control-Allow-Headers": "Content-Type"
mod_last: {}
mod_mam:
## Mnesia is limited to 2GB, better to use an SQL backend
## For small servers SQLite is a good fit and is very easy
## to configure. Uncomment this when you have SQL configured:
## db_type: sql
assume_mam_usage: true
default: always
mod_mqtt: {}
mod_muc:
access:
- allow
access_admin:
- allow: admin
access_create: muc_create
access_persistent: muc_create
access_mam:
- allow
default_room_options:
mam: true
mod_muc_admin: {}
mod_offline:
access_max_user_messages: max_user_offline_messages
mod_ping: {}
mod_privacy: {}
mod_private: {}
mod_proxy65:
access: local
max_connections: 5
mod_pubsub:
access_createnode: pubsub_createnode
plugins:
- flat
- pep
force_node_config:
## Avoid buggy clients to make their bookmarks public
storage:bookmarks:
access_model: whitelist
mod_push: {}
mod_push_keepalive: {}
mod_register:
## Only accept registration requests from the "trusted"
## network (see access_rules section above).
## Think twice before enabling registration from any
## address. See the Jabber SPAM Manifesto for details:
## https://github.com/ge0rg/jabber-spam-fighting-manifesto
ip_access: trusted_network
mod_roster:
versioning: true
mod_s2s_dialback: {}
mod_shared_roster: {}
mod_stream_mgmt:
resend_on_timeout: if_offline
mod_stun_disco: {}
mod_vcard: {}
mod_vcard_xupdate: {}
mod_version:
show_os: false
Dateiende
### Local Variables: ### mode: yaml ### End: ### vim: set filetype=yaml tabstop=8
de/die_konfigurationsdatei_von_ejabberd_erklaert.1669373167.txt.gz · Zuletzt geändert: von Christoph Stoltz
