Zulip – Open Source Messaging Server

Zulip - open source group chat

Zulip - open source group chat

Die Mitarbeiter der Firma wollen (und sollen) online kommunizieren, aber die Firma möchte keinen Chat Service wie beispielsweise Slack nutzen, bei dem nicht klar ist, wo die Daten gespeichert werden und wer alles darauf zugreifen kann. Es sollte ein selbst gehostetes System sein, bei dem die Daten im eigenen Hause gespeichert werden.

Eine mögliche Lösung wäre ein Jabber Server (siehe auch Ein eigenes Messenger System mit Jabber/XMPP).

Eine Alternative ist die Chatanwendung Zulip.

Das Startup Zulip wurde Anfang 2014 in seiner Beta Phase vom Cloud Speicher Anbieter Dropbox gekauft. Im September 2015 wurde die Software dann von Dropbox als Open Source Projekt veröffentlicht. Zulip ist Slack sehr ähnlich und zeichnet sich unter anderem durch weitreichende Integrationsmöglichkeiten für Tools, die in der Softwareentwicklung genutzt werden, aus.

Integrationen für Zulip
Integrationen für Zulip

Ausser diesen Integrationen bietet Zulip

  • Themenspezifische Gruppenchats (Streams)
  • Die Speicherung aller Nachrichten und in einem Stream auch im Nachhinein lesbar und durchsuchbar
  • Privatchats
  • Statusanzeige: Wer ist online
  • Automatische Inline-Darstellung von in den Chat kopierten Links (Bilder, Videos, Tweets)
  • Dateiupload per Drag and Drop
  • Benachrichtigungen per @name
  • Gruppenweite Benachrichtungen per @all
  • E-Mail- und Desktop Benachrichtigungen
  • Emojis
  • Syntax Highlighting bei Code
  • Die Bearbeitung von Chat-Nachrichten
  • Gruppen, die nur per Einladung zugänglich sind
  • Die Darstellung markierter Nachrichten in einer Liste (Favoriten)
  • Mobile Apps für Android und iOS
  • Desktop Apps für Windows, OSX und Linux

Um das System nutzen zu können, muss ein eigener Zulip Server aufgesetzt werden.
Es existiert ein Installationsscript für Ubuntu 14.04 Trusty das ich auch in diesem Blogbeitrag nutze. Das Script geht davon aus, dass Zulip die einzige Anwendung auf dem Server ist. Ein eventuell bereits laufender Apache Web Server auf Port 80 sollte gestoppt werden, Zulip nutzt Nginx.

Die Servervoraussetzungen für ein kleines Team sind 2 GB Hauptspeicher, bei mehr als 50 Nutzern sollten es mindestens 4 GB oder sein. Viel Speicher ist selten eine schlechte Wahl!

Die Chats sind verschlüsselt. Letsencrypt Zertifikate können genutzt werden.

Installation

Die Installation erfolgt als root User. Logge dich auf der Konsole ein. Der Befehl

sudo -i

schaltet dauerhaft root ein.

Codepaket laden

Wechsle in das /root Verzeichnis, lade und überprüfe das Codepaket, entpacke es und verschiebe die Dateien in das /root/zulip Verzeichnis.

cd /root
wget https://www.zulip.com/dist/releases/zulip-server-1.3.10.tar.gz
echo "3d96694abc878056bb6436d24b381e1776f3f70e zulip-server-1.3.10.tar.gz" | sha1sum -c
tar -xf zulip-server-1.3.10.tar.gz
mv zulip-server-1.3.10 zulip

SSL Zertifikate

Zulip setzt HTTPS voraus. Zertifikatserzeugung mit Letsencrypt oder anderen Anbietern funktioniert „wie immer“, ist aber abhängig vom Zertifikatsanbieter.
Wenn du kein Zertifikat „zur Hand“ hast, findest du hier die Befehle für ein selbst unterschriebenes Zertifikat. Die Abhörsicherheit, verglichen mit signierten Zertifikaten, ist die Gleiche, die Browserwarnung für selbst zertifizierte Zertifikate kann in diesem Fall von deinem Team ignoriert werden.

apt-get install openssl
openssl genrsa -des3 -passout pass:x -out server.pass.key 4096
openssl rsa -passin pass:x -in server.pass.key -out zulip.key
rm server.pass.key
openssl req -new -key zulip.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey zulip.key -out zulip.combined-chain.crt
rm server.csr
cp zulip.key /etc/ssl/private/zulip.key
cp zulip.combined-chain.crt /etc/ssl/certs/zulip.combined-chain.crt

Installationscript

Wechsle in das /root/zulip Verzeichnis und starte das Installationsscript.

cd /root/zulip
./scripts/setup/install

Die Installation kann ein paar Minuten dauern.

Konfiguration

Bevor der Server gestartet werden kann, müssen in der Datei /etc/zulip/settings.py ein paar Einstellungen getätigt werden.

/etc/zulip/settings.py
/etc/zulip/settings.py

Zulip ist standardmässig so organisiert, dass alle Nutzer aus einer Domain kommen und sich mit Ihrer E-Mail Adresse registrieren müssen. Diese Einstellungen können natürlich verändert werden, aber gerade der Standard passt hervorragend auf Firmenstrukturen.

Daher muss der Parameter ADMIN_DOMAIN mit deinem Domainnamen versehen werden und es muss mindestens ein AUTHENTICATION_BACKEND ausgewählt werden (in meinem Fall E-Mail/Paswort).

Im weiteren Verlauf der Konfigurationsdatei muss ein SMTP Server angegeben werde, damit E-Mails verschickt werden können.

EMAIL_HOST = 'mail.seafolly.ch'
EMAIL_HOST_USER = 'hagen@seafolly.ch'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = "Hagen (Zulip) <hagen@seafolly.ch>"
NOREPLY_EMAIL_ADDRESS = "noreply@seafolly.ch"

Jetzt sind die Änderungen in der /etc/zulip/settings.py erledigt. Damit der E-Mail Versand funktioniert, muss in der Datei /etc/zulip/zulip-secrets.conf noch das Passwort für den E-Mail Versand hinterlegt werden. Einfach am Ende der Datei

email_password = geheim
email_host_password = geheim

eintragen.

Datenbank initialisieren

Auf der Basis der Konfigurationsdateien kann nun die Datenbank initialisiert werden.

su zulip -c /home/zulip/deployments/current/scripts/setup/initialize-database

Damit ist die Installation beendet und der Zulip Server läuft. Für den produktiven Einsatz solltest du noch das Zulip in Production README lesen und dich in die Zulip Annoucement Mailing Liste eintragen um Nachrichten über Updates u erhalten.

Mit dem Befehl

su zulip -c /home/zulip/deployments/current/scripts/restart-server

kann der Zulip Server nach Konfigurationsänderungen neu gestartet werden.

Beim Aufruf im Browser erwartet dich folgendes Bild:

Zulip - Erster Start
Zulip – Erster Start

Registrierung

Jeder Chatteilnehmer muss sich mit einer E-Mail Adresse registrieren, deren Domain mit der in der Konfiguration definierten Domain übereinstimmt.

Zulip - Registrierung
Zulip – Registrierung

Der Server verschickt eine E-Mail an die angegebene Adresse mit einem Bestätigungslink.

Zulip - E-Mail mit Aktivierungslink
Zulip – E-Mail mit Aktivierungslink

Nack Klicken des Links wird man zur Eingabe eines Namens und des gewünschten Passworts aufgefordert:

Zulip - Kontoaktivierung
Zulip – Kontoaktivierung

Nach dem Klick auf den Register Button erfolgt eine kleine Tour die die Zusammenhänge zwischen Streams und Topics zeigt.

Zulip - Tour
Zulip – Tour

Drei Streams sind bereits vorkonfiguriert (engineering, social und zulip).
Das Einzige, was nun noch fehlt, sind deine Arbeitskollegen (It’s lonely in here! Invite some coworkers).

Zulip - Web-Oberfläche
Zulip – Web-Oberfläche

Ausser der gut funktionierenden Webversion gibt es auch native Apps für Windows, OSX, Linux, iOS und Android!

Fazit

Um es mal kurz zu machen – es läuft!

Links


tl;dr: Zulip ist eine Open Source Group Chat Anwendung mit zahlreichen Integrationsmöglichkeiten, die auf einem eigenen Server installiert wird und über zahlreiche Clients angesprochen werden kann.

Autor: Hagen Graf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Kommentar verfassen