Jabber Server mit Prosody: Unterschied zwischen den Versionen

Aus Hackerspace Bielefeld Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „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…“)
 
(einheitlicher)
Zeile 20: Zeile 20:
                   path = "http-bind";
                   path = "http-bind";


                     interface = "<IP Adresse des Prosody Servers";
                     interface = "[IP Adresse des Prosody Servers]";
                 }
                 }
               }
               }
Zeile 28: Zeile 28:
Für die User Registrierung ist der Eintrag
Für die User Registrierung ist der Eintrag


  allow_registration = false
allow_registration = false




Zeile 38: Zeile 38:
Eingefügt habe ich noch den Parameter
Eingefügt habe ich noch den Parameter


c2s_idle_timeout = 1800
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.
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"
storage = "sql" -- Default is "internal"


sql = { driver = "MySQL", database = "<Datenbank Name>", username = "<Datenbank User>", password = "<Datenbank Password>", host = "<Datenbank Server>" }
sql = {  
  driver = "MySQL",  
  database = "[Datenbank Name]",
  username = "[Datenbank User]",
  password = "[Datenbank Password]",
  host = "[Datenbank Server]" }


        ssl = {
ssl = {
                key = "/etc/ssl/<Jabber Server Key>.key";
  key = "/etc/ssl/[Jabber Server Key].key";
                certificate = "/etc/ssl/<Jabber Server SSL Zertifikat>.crt";
  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;
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.
Zu der SSL Konfiguration ist zu sagen, daß ich erst Probleme hatte die Zertifikate im Jabber Server ans laufen zu bekommen.
Zeile 58: Zeile 65:


Ich habe
Ich habe
 
VirtualHost "[Internet Domäne]"  
VirtualHost "<Internet Domäne>"
  --enabled = false -- Remove this line to enable this host
        --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).
        -- Assign this host a certificate for TLS, otherwise it would use the one
  -- Note that old-style SSL on port 5223 only supports one certificate, and will always
        -- set in the global section (if any).
  -- use the global one.
        -- 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.
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"
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.
Damit wird eine Adresse für einen MUC (Multi User Chat) definiert. Im Grunde ein Chatraum oder auch #Channel wir im IRC.
Zeile 78: Zeile 83:
Damit die XMPP Server und Clients sich finden sind extra DNS einstellungen notwendig. Etwa wie bei SIP Telefonie, oder auch Mail Exchange einstellgen:
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>.
_jabber._tcp.[Internet Domäne].      IN SRV  0 0 5269  <FQDN>.
_xmpp-server._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>.
_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 beiden Einstellungen Jabber und xmpp-server sind für die Server verbinden da. Die s2s (Server zu Server) Verbindungen laufen dabei über Port 5269.

Version vom 6. April 2017, 12:16 Uhr

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.