Jabber Server mit Prosody

Aus Hackerspace Bielefeld Wiki
Version vom 11. Februar 2022, 21:56 Uhr von Inflac (Diskussion | Beiträge) (Verschoben, weil nicht mehr aktuell)
Zur Navigation springen Zur Suche springen

Um einen jabber Server mit Prosody zu installieren, muß man als erstes das Debian installieren. Ich habe zusätzlich zur Installation noch die Pakete vim und ssh installiert.

apt-get install vim ssh

Die Installation des Jabber Servers geschieht mit

apt-get install prosody lua-dbi-mysql:amd64

Der Datenbank Layer für Lua wird installiert, da ich die Userdaten des Prosody in einer MySQL Datenbank ablegen möchte. Das wird später in der Config Datei extra eingestellt.

Die Konfigurationsdateien befinden sich unter /etc/prosody. Die zentrale Konfig datei lautet prosody.cfg.lua.

In der prosody.cfg.lua habe ich folgende Einstellungen gemacht:

Globale Einstellungen:

bosh_ports = {
 {
  port = 5280;
  path = "http-bind";
  
  interface = "[IP Adresse des Prosody Servers]";
 }
}

Damit habe ich den HTTP Zugriff des Jabber Servers konfiguriert. Das muß normalerweise nicht gemacht werden. Zum reinen Betrieb des Jabebr Servers reicht ein XMPP CLient aus. Da ich aber neuen Chattern die Möglichkeit geben möchte "auf die schnelle" mal in die Lobby zu gelangen habe ich dafür den Candy Webclient installiert. Für diesen Webclient Zugriff brauche ich den BOSH Server.

Für die User Registrierung ist der Eintrag

allow_registration = false


zuständig. Standard ist false, sodass sich keine neuen User per Jabber Client registrieren können.

durch andauernde Massen registrierungen mussten wir wir wieder auf false stellen

Eingefügt habe ich noch den Parameter

c2s_idle_timeout = 1800

Damit die Clients nicht einfach aus dem chat fliegen. Das betrifft vorallem Mobile Clients, da das Betriebssystem Android oder iOS ja auch mal in den Standby Modus gehen.

storage = "sql" -- Default is "internal"
sql = { 
 driver = "MySQL", 
 database = "[Datenbank Name]",
 username = "[Datenbank User]",
 password = "[Datenbank Password]",
 host = "[Datenbank Server]" }

ssl = {
 key = "/etc/ssl/[Jabber Server Key].key";
 certificate = "/etc/ssl/[Jabber Server SSL Zertifikat].crt";

options = { "no_sslv2", "no_ticket", "no_compression", "cipher_server_preference", "single_dh_use", "single_ecdh_use", "no_sslv3" };

--Allow perfect forward secrecy;
}

Zu der SSL Konfiguration ist zu sagen, daß ich erst Probleme hatte die Zertifikate im Jabber Server ans laufen zu bekommen. Durch Zufall habe ich im Internet einen EIntrag gefunden, worin geschrieben stand, daß man ein SAM/UCC Zertifikat für den Jabber Server benötigt, da jabber sowohl den DN Namen im Zertifikat abfrage wie auch 1 Alternate Name. Bei "normalen" Webserver SSL Zertifikaten wird aber kein Alternate Name gesetzt. Also müsste man etwas mehr bezahlen und ein entsprechendes Zertifikat zu bekommen. Die Alternative heisst hier Startssl.com, da man dort auch XMPP SAN Zertifikate bekommen kann. Für umsonst. Allerdings dann nur für 1 Jahr.

Ich habe

VirtualHost "[Internet Domäne]" 
 --enabled = false -- Remove this line to enable this host
 -- Assign this host a certificate for TLS, otherwise it would use the one
 -- set in the global section (if any).
 -- Note that old-style SSL on port 5223 only supports one certificate, and will always
 -- use the global one.

Damit wird der Virtualhost des Jabber Serves eingestellt. Es gibt dabei allerdings Unterschiede im Vergleich zu den Virtualhost Einstellungen eines Apache Webservers.

Component "conference.westchat.de" "muc"

Damit wird eine Adresse für einen MUC (Multi User Chat) definiert. Im Grunde ein Chatraum oder auch #Channel wir im IRC.

Darin können dann die Räume wie z.b. lobby@conference.westchat.de erstellt werden. DNS Einstellungen der Zone

Damit die XMPP Server und Clients sich finden sind extra DNS einstellungen notwendig. Etwa wie bei SIP Telefonie, oder auch Mail Exchange einstellgen:

_jabber._tcp.[Internet Domäne]. IN SRV 0 0 5269 <FQDN>. _xmpp-server._tcp.[Internet Domäne]. IN SRV 0 0 5269 <FQDN>. _xmpp-client._tcp.[Internet Domäne]. IN SRV 0 0 5222 <FQDN>.

Die beiden Einstellungen Jabber und xmpp-server sind für die Server verbinden da. Die s2s (Server zu Server) Verbindungen laufen dabei über Port 5269.

Die Client Verbindung läuft über Port 5222 sowohl verschlüsselt, wie auch unverschlüsselt.

Wenn diese DNS EInstellungen entsprechend gemacht wurden, dann muß man bei XMPP Client nur noch die JID ID Angeben. Die Server werden aufgrund der Einstellungen im DNS gefunden.