Prosody: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Kategorie HOWTOS hinzugefügt)
(Anpassung von <source>-Tags nach <syntaxhighlight>)
 
Zeile 9: Zeile 9:
===System aktualisieren===
===System aktualisieren===
Vor der Installation eines neuen Paketes ist es immer sinnvoll, die Paket-Quellen zu aktualisieren und installierte Pakete auf den neuesten Stand zu bringen.
Vor der Installation eines neuen Paketes ist es immer sinnvoll, die Paket-Quellen zu aktualisieren und installierte Pakete auf den neuesten Stand zu bringen.
<source lang="bash">
<syntaxhighlight lang="bash">
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get update && sudo apt-get upgrade -y
</source>
</syntaxhighlight>


===Router bzw. Firewall konfigurieren===
===Router bzw. Firewall konfigurieren===
Zeile 27: Zeile 27:


Somit sieht der endgültige Befehl zum Erzeugen der neuen Paket-Quell-Datei so aus:
Somit sieht der endgültige Befehl zum Erzeugen der neuen Paket-Quell-Datei so aus:
<source lang="bash">
<syntaxhighlight lang="bash">
echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/prosody.list
echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/prosody.list
</source>
</syntaxhighlight>
===Repository Key File hinzufügen===
===Repository Key File hinzufügen===
Um zu verhindern, dass bei der Installation Warnungen bezüglich nicht authorisierter Pakete ausgegeben werden, muss noch ein Sicherheitsschlüssel importiert werden.
Um zu verhindern, dass bei der Installation Warnungen bezüglich nicht authorisierter Pakete ausgegeben werden, muss noch ein Sicherheitsschlüssel importiert werden.


<source lang="bash">
<syntaxhighlight lang="bash">
wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
</source>
</syntaxhighlight>


===Paketquellen aktualisieren===
===Paketquellen aktualisieren===
Anschließend muss man nochmal die Paketquellen aktualisieren
Anschließend muss man nochmal die Paketquellen aktualisieren
<source lang="bash">
<syntaxhighlight lang="bash">
sudo apt-get update
sudo apt-get update
</source>
</syntaxhighlight>


===Prosody installieren===
===Prosody installieren===
Dann kann Prosody ganz einfach mittels diesem Befehl installiert werden
Dann kann Prosody ganz einfach mittels diesem Befehl installiert werden
<source lang="bash">
<syntaxhighlight lang="bash">
sudo apt-get install prosody -y
sudo apt-get install prosody -y
</source>
</syntaxhighlight>


==Konfiguration==
==Konfiguration==
Zeile 65: Zeile 65:
Ein Host in Prosody ist eine Domain, unter der User angelegt werden. Soll ein Prosody-User also die Adresse ''franz.hubert@beispiel.eu'' haben, muss der Virtual Host ''beispiel.eu'' angelegt werden.
Ein Host in Prosody ist eine Domain, unter der User angelegt werden. Soll ein Prosody-User also die Adresse ''franz.hubert@beispiel.eu'' haben, muss der Virtual Host ''beispiel.eu'' angelegt werden.
Dies geschieht durch eine neue Zeile in der Konfigurationsdatei im Abschnitt ''Virtual Hosts''.
Dies geschieht durch eine neue Zeile in der Konfigurationsdatei im Abschnitt ''Virtual Hosts''.
<source lang="ini">
<syntaxhighlight lang="ini">
VirtualHost "beispiel.eu"
VirtualHost "beispiel.eu"
</source>
</syntaxhighlight>
Alle weiteren Konfigurationseinträge unter dieser Zeile betreffen dann nur den jeweiligen Host.
Alle weiteren Konfigurationseinträge unter dieser Zeile betreffen dann nur den jeweiligen Host.


Nach Änderungen in der Konfigurationsdatei muss Prosody immer neu gestartet werden. Dies wird durch nachfolgenden Befehl erledigt
Nach Änderungen in der Konfigurationsdatei muss Prosody immer neu gestartet werden. Dies wird durch nachfolgenden Befehl erledigt
<source lang="bash">
<syntaxhighlight lang="bash">
sudo service prosody restart
sudo service prosody restart
</source>
</syntaxhighlight>


===SSL Zertifikat generieren===
===SSL Zertifikat generieren===
Zeile 79: Zeile 79:
Prosody bietet mit seinem Verwaltungstool '''''prosodyctl''''' einen einfachen Weg, wie solche Zertifikate erstellt werden können.
Prosody bietet mit seinem Verwaltungstool '''''prosodyctl''''' einen einfachen Weg, wie solche Zertifikate erstellt werden können.


<source lang="bash">
<syntaxhighlight lang="bash">
sudo prosodyctl cert generate beispiel.eu
sudo prosodyctl cert generate beispiel.eu
</source>
</syntaxhighlight>


Dabei werden einige Fragen gestellt, von denen aber eigentlich nur die Schlüssellänge und der ''CommonName'' befüllt werden müssen. Sind die vorgeschlagenen Werte in Klammer in Ordnung, können diese einfach durch Betätigen der ''ENTER''-Taste übernommen werden. Soll ein Feld nicht im Zertifikat aufscheinen, wird einfach ein ''.'' eingegeben.
Dabei werden einige Fragen gestellt, von denen aber eigentlich nur die Schlüssellänge und der ''CommonName'' befüllt werden müssen. Sind die vorgeschlagenen Werte in Klammer in Ordnung, können diese einfach durch Betätigen der ''ENTER''-Taste übernommen werden. Soll ein Feld nicht im Zertifikat aufscheinen, wird einfach ein ''.'' eingegeben.


Hier ein Beispiel wie so ein Vorgang aussieht:
Hier ein Beispiel wie so ein Vorgang aussieht:
<source lang="bash">
<syntaxhighlight lang="bash">
$ sudo prosodyctl cert generate beispiel.eu
$ sudo prosodyctl cert generate beispiel.eu
Choose key size (2048):
Choose key size (2048):
Zeile 105: Zeile 105:
Config written to /var/lib/prosody/beispiel.eu.cnf
Config written to /var/lib/prosody/beispiel.eu.cnf
Certificate written to /var/lib/prosody/beispiel.eu.crt
Certificate written to /var/lib/prosody/beispiel.eu.crt
</source>
</syntaxhighlight>


Daraufhin erhält man zwei neue Dateien:
Daraufhin erhält man zwei neue Dateien:
Zeile 113: Zeile 113:
Diese müssen in die Konfigurations-Datei '''''/etc/prosody/prosody.cfg.lua''''' im Abschnitt des jeweiligen VirtualHosts eingetragen werden.
Diese müssen in die Konfigurations-Datei '''''/etc/prosody/prosody.cfg.lua''''' im Abschnitt des jeweiligen VirtualHosts eingetragen werden.


<source lang="bash">
<syntaxhighlight lang="bash">
sudo nano /etc/prosody/prosody.cfg.lua
sudo nano /etc/prosody/prosody.cfg.lua
</source>
</syntaxhighlight>


<source lang="ini">
<syntaxhighlight lang="ini">
VirtualHost "beispiel.eu"
VirtualHost "beispiel.eu"


Zeile 128: Zeile 128:
                 certificate = "/var/lib/prosody/beispiel.eu.crt";
                 certificate = "/var/lib/prosody/beispiel.eu.crt";
         }
         }
</source>
</syntaxhighlight>


Ein Hinweis: Dieses Zertifikat ist ''selbst-signiert'' und wird somit von Clients als nicht vertrauenswürdig eingestuft. Es wird daher eine Fehlermeldung geben, die aber ignoriert werden kann. Wir vertrauen dem Zertifikat ja.
Ein Hinweis: Dieses Zertifikat ist ''selbst-signiert'' und wird somit von Clients als nicht vertrauenswürdig eingestuft. Es wird daher eine Fehlermeldung geben, die aber ignoriert werden kann. Wir vertrauen dem Zertifikat ja.
Zeile 134: Zeile 134:


Wie immer muss nach Änderungen an der Konfigurationsdatei Prosody neu gestartet werden. Ein zweiter Weg, wie man das machen könnte:
Wie immer muss nach Änderungen an der Konfigurationsdatei Prosody neu gestartet werden. Ein zweiter Weg, wie man das machen könnte:
<source lang="bash">
<syntaxhighlight lang="bash">
sudo prosodyctl restart
sudo prosodyctl restart
</source>
</syntaxhighlight>


===Benutzer hinzufügen===
===Benutzer hinzufügen===
Zeile 146: Zeile 146:


Das Anlegen eines neuen Benutzers ist denkbar einfach:
Das Anlegen eines neuen Benutzers ist denkbar einfach:
<source lang="bash">
<syntaxhighlight lang="bash">
sudo prosodyctl adduser franz.hubert@beispiel.eu
sudo prosodyctl adduser franz.hubert@beispiel.eu
</source>
</syntaxhighlight>


Nach Absenden dieses Befehls wird nach einem Passwort für den Benutzer gefragt. Ist dieses vergeben, kann sich der Benutzer bereits am Server anmelden.
Nach Absenden dieses Befehls wird nach einem Passwort für den Benutzer gefragt. Ist dieses vergeben, kann sich der Benutzer bereits am Server anmelden.
Zeile 157: Zeile 157:
Das geschieht ganz einfach durch das Hinzufügen dieses Eintrages an das Ende der Konfigurationsdatei:
Das geschieht ganz einfach durch das Hinzufügen dieses Eintrages an das Ende der Konfigurationsdatei:


<source lang="ini">
<syntaxhighlight lang="ini">
Component "conference.beispiel.eu" "muc"
Component "conference.beispiel.eu" "muc"
</source>
</syntaxhighlight>


Nach einem erneuten Neustart des Prosody-Services können dann Chat-Räume angelegt werden in dem man mit dem Client einfach einem Raum beitritt. Man wird dann automatisch zum Administrator dieses Raumes.
Nach einem erneuten Neustart des Prosody-Services können dann Chat-Räume angelegt werden in dem man mit dem Client einfach einem Raum beitritt. Man wird dann automatisch zum Administrator dieses Raumes.

Aktuelle Version vom 26. Juli 2017, 20:00 Uhr

Prosody ist ein moderner Kommunikations-Server für das XMPP Protokoll. Sein Ziel ist es, einfach zu installieren, einfach zu konfigurieren und sparsam im Umgang mit Systemressourcen zu sein. Außerdem ist er einfach zu erweitern.

Prosody ist Open-Source Software unter der freizügigen MIT/X11 Lizenz.

Im Folgenden ist die Installation von Prosody auf einem Raspberry Pi (Raspbian Jessie) beschrieben.

Vorbereitungen

System aktualisieren

Vor der Installation eines neuen Paketes ist es immer sinnvoll, die Paket-Quellen zu aktualisieren und installierte Pakete auf den neuesten Stand zu bringen.

sudo apt-get update && sudo apt-get upgrade -y

Router bzw. Firewall konfigurieren

Soll die Prosody-Installation aus dem Internet erreichbar sein, muss natürlich die Firewall bzw. der Router entsprechend konfiguriert werden. Stichwort Port-Forwarding oder NAT. Da das Vorgehen hierfür für jedes Gerät unterschiedlich ist, kann hier keine Anleitung dazu gegeben werden.

Prosody hört in der Standardeinstellung auf Port 5222. Dieser muss an die IP-Adresse des Raspberry Pi weitergeleitet werden.

Installation

Repository hinzufügen

Damit der Paket-Manager die Prosody-Installationsdateien findet, muss ihm das Repository zuerst bekannt gemacht werden. Dazu wird im Ordner /etc/apt/sources.list.d eine neue Datei angelegt und die URL zur Quelle darin hinterlegt.

Die entsprechende Zeile würde wie folgt aussehen:

deb http://packages.prosody.im/debian VERSION main

VERSION muss dann durch die jeweilige Version des Betriebssystems ersetzt werden. Welche Version man betreibt, kann man mit lsb_release -sc herausfinden.

Somit sieht der endgültige Befehl zum Erzeugen der neuen Paket-Quell-Datei so aus:

echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/prosody.list

Repository Key File hinzufügen

Um zu verhindern, dass bei der Installation Warnungen bezüglich nicht authorisierter Pakete ausgegeben werden, muss noch ein Sicherheitsschlüssel importiert werden.

wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

Paketquellen aktualisieren

Anschließend muss man nochmal die Paketquellen aktualisieren

sudo apt-get update

Prosody installieren

Dann kann Prosody ganz einfach mittels diesem Befehl installiert werden

sudo apt-get install prosody -y

Konfiguration

Die Konfiguration von Prosody besteht aus einer einzigen Datei /etc/prosody/prosody.cfg.lua. Diese ist in zwei Abschnitte unterteilt.

Der erste Abschnitt behandelt Einstellungen, die global, also für den ganzen Server, gelten. Sie sind auch die Standard-Einstellungen für jeden Host.

Der zweite besteht aus VirtualHost- und Component-Definitionen, die nur für den jeweiligen virtuellen Host gelten. So können auf einer Prosody-Installation mehrere verschiedene Instanzen laufen.

Um's einfach zu halten, konzentrieren wir uns auf eine Instanz.

Um zu einem schnellen Ergebnis zu gelangen, ist es nur nötig, ein SSL-Zertifikat zu erzeugen und einen Host sowie einen User zu definieren. Danach können schon Nachrichten versendet werden. Wer möchte, kann zusätzlich noch einen Chatroom (Multi-User Conference) einrichten.

Host hinzufügen

Ein Host in Prosody ist eine Domain, unter der User angelegt werden. Soll ein Prosody-User also die Adresse franz.hubert@beispiel.eu haben, muss der Virtual Host beispiel.eu angelegt werden. Dies geschieht durch eine neue Zeile in der Konfigurationsdatei im Abschnitt Virtual Hosts.

VirtualHost "beispiel.eu"

Alle weiteren Konfigurationseinträge unter dieser Zeile betreffen dann nur den jeweiligen Host.

Nach Änderungen in der Konfigurationsdatei muss Prosody immer neu gestartet werden. Dies wird durch nachfolgenden Befehl erledigt

sudo service prosody restart

SSL Zertifikat generieren

Prosody bietet den Möglichkeit, den die Nachrichten zwischen Client und Server zu verschlüsseln. Dazu muss zuerst ein SSL Zertifikat erstellt werden. Prosody bietet mit seinem Verwaltungstool prosodyctl einen einfachen Weg, wie solche Zertifikate erstellt werden können.

sudo prosodyctl cert generate beispiel.eu

Dabei werden einige Fragen gestellt, von denen aber eigentlich nur die Schlüssellänge und der CommonName befüllt werden müssen. Sind die vorgeschlagenen Werte in Klammer in Ordnung, können diese einfach durch Betätigen der ENTER-Taste übernommen werden. Soll ein Feld nicht im Zertifikat aufscheinen, wird einfach ein . eingegeben.

Hier ein Beispiel wie so ein Vorgang aussieht:

$ sudo prosodyctl cert generate beispiel.eu
Choose key size (2048):
Generating RSA private key, 2048 bit long modulus
........................................................+++
..............+++
e is 65537 (0x10001)
Key written to /var/lib/prosody/beispiel.eu.key
Please provide details to include in the certificate config file.
Leave the field empty to use the default value or '.' to exclude the field.
countryName (EU): .
localityName (The Internet): .
organizationName (Your Organisation): .
organizationalUnitName (XMPP Department): .
commonName (beispiel.eu):
emailAddress (xmpp@beispiel.eu): .

Config written to /var/lib/prosody/beispiel.eu.cnf
Certificate written to /var/lib/prosody/beispiel.eu.crt

Daraufhin erhält man zwei neue Dateien:

  • /var/lib/prosody/beispiel.eu.key
  • /var/lib/prosody/beispiel.eu.crt

Diese müssen in die Konfigurations-Datei /etc/prosody/prosody.cfg.lua im Abschnitt des jeweiligen VirtualHosts eingetragen werden.

sudo nano /etc/prosody/prosody.cfg.lua
VirtualHost "beispiel.eu"

        -- 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.
        ssl = {
                key = "/var/lib/prosody/beispiel.eu.key";
                certificate = "/var/lib/prosody/beispiel.eu.crt";
        }

Ein Hinweis: Dieses Zertifikat ist selbst-signiert und wird somit von Clients als nicht vertrauenswürdig eingestuft. Es wird daher eine Fehlermeldung geben, die aber ignoriert werden kann. Wir vertrauen dem Zertifikat ja. Wer diese Warnung umgehen möchte, muss vertrauenswürdige Zertifikate verwenden. Solche können z.B. mit Certbot erstellt werden.

Wie immer muss nach Änderungen an der Konfigurationsdatei Prosody neu gestartet werden. Ein zweiter Weg, wie man das machen könnte:

sudo prosodyctl restart

Benutzer hinzufügen

Prosody bietet drei Möglichkeiten, wie neue Benutzer erstellt werden können.

  • Vom Benutzer angestossene Registrierung
  • Import von ejabbered
  • Verwendung des Tools prosodyctl

Hier wird nur der Weg über prosodyctl beschrieben.

Das Anlegen eines neuen Benutzers ist denkbar einfach:

sudo prosodyctl adduser franz.hubert@beispiel.eu

Nach Absenden dieses Befehls wird nach einem Passwort für den Benutzer gefragt. Ist dieses vergeben, kann sich der Benutzer bereits am Server anmelden.

Multi-User Conference

Um einen Chatroom einzurichten, ist nur die Aktivierung einer der vielen in Prosody eingebauten Komponenten nötig. In diesem Fall die der Komponente MUC (Multi-User Conference).

Das geschieht ganz einfach durch das Hinzufügen dieses Eintrages an das Ende der Konfigurationsdatei:

Component "conference.beispiel.eu" "muc"

Nach einem erneuten Neustart des Prosody-Services können dann Chat-Räume angelegt werden in dem man mit dem Client einfach einem Raum beitritt. Man wird dann automatisch zum Administrator dieses Raumes.

Weblinks