Was ist XMPP?
XMPP (Extensible Messaging and Presence Protocol) ist ein offenes, dezentrales Kommunikationsprotokoll. Im Gegensatz zu WhatsApp, Signal oder Telegram betreibst du deinen eigenen Server und behältst die volle Kontrolle über deine Daten. XMPP nutzt eine föderierte Architektur – ähnlich wie E-Mail –, sodass Nutzer verschiedener Server problemlos miteinander kommunizieren können.
Was ist OMEMO?
OMEMO ist eine Ende-zu-Ende-Verschlüsselung für XMPP, die auf dem Signal-Protokoll (Double Ratchet) basiert. Im Unterschied zu OTR unterstützt OMEMO mehrere Geräte gleichzeitig und verschlüsselt auch Dateien. Der Server sieht dabei nur verschlüsselte Daten – selbst als Admin kannst du keine Nachrichten mitlesen.
Prosody installieren
Wir verwenden Prosody als XMPP-Server. Auf Debian oder Ubuntu installierst du zuerst das offizielle Repository:
sudo apt install apt-transport-https
echo "deb https://packages.prosody.im/debian $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/prosody.list
curl -fsSL https://prosody.im/files/prosody-debian-packages.key | \
sudo tee /etc/apt/trusted.gpg.d/prosody.asc
sudo apt update
sudo apt install prosody prosody-modules
TLS-Zertifikate einrichten
sudo apt install certbot
sudo certbot certonly --standalone -d xmpp.example.com \
-d conference.xmpp.example.com \
-d upload.xmpp.example.com
sudo prosodyctl --root cert import /etc/letsencrypt/live/
PEP und PubSub für OMEMO aktivieren
Öffne die Hauptkonfiguration unter /etc/prosody/prosody.cfg.lua:
modules_enabled = {
-- Core
"roster";
"saslauth";
"tls";
"dialback";
"disco";
-- OMEMO-relevante Module
"pep";
"pep_simple";
"pubsub";
-- Nützliche Erweiterungen
"carbons"; -- Nachrichten an alle Geräte
"mam"; -- Nachrichtenarchiv
"smacks"; -- Stream Management
"csi_simple"; -- Client State Indication
"cloud_notify"; -- Push-Benachrichtigungen
"http_upload"; -- Datei-Upload
"blocklist";
"bookmarks";
"vcard_legacy";
}
Wichtig: Das Modul
pepist zwingend erforderlich. Ohne PEP kann kein Client seine OMEMO-Schlüssel veröffentlichen, und die Verschlüsselung schlägt fehl.
HTTP File Upload für verschlüsselte Medien
Component "upload.xmpp.example.com" "http_upload"
http_upload_file_size_limit = 104857600 -- 100 MB
http_upload_expire_after = 60 * 60 * 24 * 30 -- 30 Tage
http_upload_quota = 1073741824 -- 1 GB pro Nutzer
http_external_url = "https://upload.xmpp.example.com/"
server {
listen 443 ssl http2;
server_name upload.xmpp.example.com;
location / {
proxy_pass http://127.0.0.1:5281/upload/;
proxy_set_header Host $host;
client_max_body_size 105m;
}
}
MAM (Message Archive Management) konfigurieren
archive_expires_after = "4w"
default_archive_policy = true
VirtualHost "xmpp.example.com"
ssl = {
key = "/etc/prosody/certs/xmpp.example.com.key";
certificate = "/etc/prosody/certs/xmpp.example.com.crt";
}
Component "conference.xmpp.example.com" "muc"
modules_enabled = { "muc_mam"; }
muc_log_by_default = true
muc_log_expires_after = "4w"
Benutzer anlegen und Server starten
sudo prosodyctl register alice xmpp.example.com sicheres-passwort
sudo prosodyctl register bob xmpp.example.com anderes-passwort
sudo systemctl enable --now prosody
sudo prosodyctl status
Empfohlene Clients
- Conversations (Android) – Der Goldstandard. OMEMO ist standardmäßig aktiviert.
- Gajim (Windows/Linux) – Feature-reicher Desktop-Client.
- Dino (Linux) – Moderner, schlanker GTK-Client mit nativer OMEMO-Unterstützung.
- Siskin IM (iOS) – Gute OMEMO-Integration und Push-Support für Apple-Geräte.
Fehlerbehebung und häufige Probleme
OMEMO wird im Client nicht angeboten
Stelle sicher, dass mod_pep geladen ist. Prüfe die Logs unter /var/log/prosody/prosody.log.
Datei-Upload schlägt fehl
curl -I https://upload.xmpp.example.com/
Häufige Ursachen: Fehlende CORS-Header, falscher http_external_url, oder die Firewall blockiert Port 5281.
Verbindungsprobleme mit anderen Servern
_xmpp-client._tcp.xmpp.example.com. 3600 IN SRV 0 5 5222 xmpp.example.com.
_xmpp-server._tcp.xmpp.example.com. 3600 IN SRV 0 5 5269 xmpp.example.com.
Tipp: Führe regelmäßig
sudo apt update && sudo apt upgrade prosody prosody-modulesaus. Sicherheitslücken in XMPP-Servern werden schnell ausgenutzt.
Wer selbst einen XMPP-Account will: xmpp.voidcall.dev