So installierst du Zulip Chat Server unter Debian 11
Zulip ist ein Open-Source-Chat-Server, ähnlich wie Microsoft Teams, Rocket Chat oder Slack. Er ist in Python geschrieben und nutzt Django, PostgreSQL und JavaScript. Er lässt sich mit über 90 Plugins von Drittanbietern integrieren, darunter Github, Jira, Stripe, Zendesk, Sentry usw. Du kannst die Integrationen erweitern, indem du sie mit Zapier und IFTTT verbindest. Zulip bietet Funktionen wie private Nachrichten, Gruppenchats, Unterhaltungen mit Threads, benutzerdefinierte Kanäle, Videoanrufe, Datei-Uploads per Drag-and-Drop, benutzerdefinierte Emojis, Giphy-Integration, Vorschau von Bildern und Tweets und vieles mehr. Zulip wird mit Desktop- und Mobil-Apps für jede Plattform geliefert und ist somit plattformunabhängig.
In diesem Tutorial lernst du, wie du Zulip Chat auf einem Debian 11 basierten Server installierst und konfigurierst.
Voraussetzungen
- Ein Server, auf dem Debian 11 läuft.
- Mindestens 2 GB RAM, wenn du weniger als 100 Benutzer erwartest. Bei mehr als 100 Nutzern brauchst du einen Server mit 4 GB RAM und 2 CPUs.
- Ein Nicht-Root-Benutzer mit sudo-Rechten.
- Einen Domainnamen, der auf den Server zeigt,
zulip.example.com. - Alles ist auf dem neuesten Stand.
$ sudo apt update && sudo apt upgrade
- Ein paar Pakete, die dein System braucht. Wie z.B. curl, den nano editor, UFW Firewall usw.
$ sudo apt install wget curl nano ufw software-properties-common apt-transport-https gnupg2 ca-certificates debian-archive-keyring -y
Einige dieser Pakete sind vielleicht schon auf deinem System installiert.
Schritt 1 – Firewall konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Debian wird mit ufw (Uncomplicated Firewall) ausgeliefert.
Überprüfe, ob die Firewall läuft.
$ sudo ufw status
Du solltest die folgende Ausgabe erhalten.
Status: inactive
Erlaube den SSH-Port, damit die Firewall die aktuelle Verbindung nicht unterbricht, wenn du sie aktivierst.
$ sudo ufw allow OpenSSH
Lasse auch HTTP- und HTTPS-Ports zu.
$ sudo ufw allow 80/tcp $ sudo ufw allow 443/tcp
Aktiviere die Firewall
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Überprüfe den Status der Firewall erneut.
$ sudo ufw status
Du solltest eine ähnliche Ausgabe sehen.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Schritt 2 – Zulip installieren
Zulip wird mit einem Installationsskript ausgeliefert, das die folgenden Aufgaben erfüllt
- Es erstellt einen Benutzer
zulip, um den Zulip-Server auszuführen. - Es erstellt ein Home-Verzeichnis mit dem Benutzer
zulip, das den gesamten öffentlichen Code im Verzeichnis/home/zulip/deploymentsenthält. - Installiert alle Abhängigkeiten, die Zulip benötigt.
- Installiert die PostgreSQL-Datenbank, den Nginx-Webserver, RabbitMQ, Redis Cache und Memcached.
- Initialisiert die Datenbank von Zulip.
Erstelle mit dem Befehlmktemp ein temporäres Verzeichnis, um das Zulip-Installationsprogramm herunterzuladen und dorthin zu wechseln.
$ cd $(mktemp -d)
Lade die neueste Version von Zulip herunter.
$ wget https://download.zulip.com/server/zulip-server-latest.tar.gz
Extrahiere alle Dateien.
$ tar -xf zulip-server-latest.tar.gz
Führe das Installer-Skript aus.
$ sudo ./zulip-server-*/scripts/setup/install --certbot \
--email=YOUR_EMAIL --hostname=YOUR_HOSTNAME
Das --certbot Flag bewirkt, dass das Installationsprogramm Certbot herunterlädt und SSL-Zertifikate automatisch installiert. Ersetze YOUR_EMAIL durch deine E-Mail-Adresse und YOUR_HOSTNAME durch den Domainnamen für Zulip (zulip.example.com).
Schritt 3 – Zugriff auf die Zulip-Oberfläche
Sobald das Installationsskript fertig ist, erhältst du eine eindeutige URL. Kopiere diese URL.
.......
zulip-workers:zulip_deliver_scheduled_messages: started
+ set +x
+ su zulip -c '/home/zulip/deployments/current/manage.py generate_realm_creation_link'
Please visit the following secure single-use link to register your
new Zulip organization:
https://zulip.example.com/new/il5dsewnhugjarbnlxf5nc46
Rufe https://zulip.example.com/new/il5dsewnhugjarbnlxf5nc46 in deinem Browser auf und der folgende Bildschirm wird angezeigt.

Gib deine E-Mail-Adresse ein, um mit der Erstellung deiner Organisation zu beginnen. Auf dem nächsten Bildschirm wirst du aufgefordert, ein Konto einzurichten.

Gib den Namen deiner Organisation und deinen Namen ein, wähle ein Passwort zum Einloggen und klicke auf die Schaltfläche Anmelden, um fortzufahren.
Sobald du fertig bist, öffnet sich das Zulip-Dashboard und du kannst es benutzen.

Schritt 4 – Ausgehende E-Mails konfigurieren
Der Zulip-Server muss regelmäßig E-Mails verschicken. Dafür solltest du ausgehende E-Mails einrichten. In unserem Beispiel werden wir den SES-Dienst von Amazon verwenden. Alle E-Mails werden von der E-Mail-Adresse verschickt, die du in Schritt 3 für die Einrichtung der Organisation angegeben hast.
Zulip speichert alle seine Einstellungen in der Datei /etc/zulip/settings.py. Öffne sie zum Bearbeiten.
$ sudo nano /etc/zulip/settings.py
Hebe die Kommentare zu den folgenden Variablen auf, indem du das vorangestellte # entfernst und die entsprechenden Werte eingibst.
## EMAIL_HOST and EMAIL_HOST_USER are generally required. EMAIL_HOST = 'email-smtp.us-west-2.amazonaws.com' EMAIL_HOST_USER = 'yoursmpt_username' ## Passwords and secrets are not stored in this file. The password ## for user EMAIL_HOST_USER goes in `/etc/zulip/zulip-secrets.conf`. ## In that file, set `email_password`. For example: # email_password = abcd1234 ## EMAIL_USE_TLS and EMAIL_PORT are required for most SMTP providers. EMAIL_USE_TLS = True EMAIL_PORT = 587
Fülle die folgenden zusätzlichen Variablen aus. Die erste entfernt ein zufälliges Token für die No-Reply-E-Mail-Adresse und die zweite konfiguriert den No-Reply-E-Mail-Absender für deine Mails.
ADD_TOKENS_TO_NOREPLY_ADDRESS = False
# TOKENIZED_NOREPLY_EMAIL_ADDRESS = "noreply-{token}@example.com"
## NOREPLY_EMAIL_ADDRESS is the sender for noreply emails that don't
## contain confirmation links (where the security problem fixed by
## ADD_TOKENS_TO_NOREPLY_ADDRESS does not exist), as well as for
## confirmation emails when ADD_TOKENS_TO_NOREPLY_ADDRESS=False.
NOREPLY_EMAIL_ADDRESS = 'noreply@example.com'
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Zulip speichert das E-Mail-Passwort in einer anderen Datei. Öffne die Datei /etc/zulip/zulip-secrets.conf zur Bearbeitung.
$ sudo nano /etc/zulip/zulip-secrets.conf
Füge die folgende Zeile am Ende der Datei ein.
email_password = yoursmtp_password
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Um deine Konfiguration für ausgehende E-Mails zu testen, kannst du mit dem folgenden Befehl eine Test-E-Mail senden.
$ sudo -u zulip /home/zulip/deployments/current/manage.py send_test_email user@example.com If you run into any trouble, read: https://zulip.readthedocs.io/en/latest/production/email.html#troubleshooting The most common error is not setting `ADD_TOKENS_TO_NOREPLY_ADDRESS=False` when using an email provider that doesn't support that feature. Sending 2 test emails from: * user@zulip.example.com * noreply@zulip.example.com Successfully sent 2 emails to user@example.com
Starte den Server neu.
$ sudo -u zulip /home/zulip/deployments/current/scripts/restart-server
Beachte, dass du den Zulip-Server nur als zulip Benutzer starten oder stoppen kannst.
Schritt 5 – Zulip-Server-Befehle
Um den Zulip-Server anzuhalten, verwende den folgenden Befehl.
$ sudo -u zulip /home/zulip/deployments/current/scripts/stop-server
Um den Server wieder zu starten, verwende den folgenden Befehl.
$ sudo -u zulip /home/zulip/deployments/current/scripts/start-server
Starte den Server auf ähnliche Weise neu.
$ sudo -u zulip /home/zulip/deployments/current/scripts/restart-server
Es gibt viele Verwaltungsaufgaben, die du mit dem manage.py Skript erledigen kannst, das mit Zulip geliefert wird.
Du kannst das Skript mit dem folgenden Befehl ausführen. Wir werden den Unterbefehl help verwenden, um alle möglichen Operationen aufzulisten, die man durchführen kann.
$ sudo -u zulip /home/zulip/deployments/current/manage.py help
Type 'manage.py help <subcommand>' for help on a specific subcommand.
Available subcommands:
[analytics]
check_analytics_state
clear_analytics_tables
clear_single_stat
populate_analytics_db
stream_stats
update_analytics_counts
[auth]
changepassword
createsuperuser
[contenttypes]
remove_stale_contenttypes
[django]
check
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemigrations
migrate
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
[otp_static]
addstatictoken
[sessions]
clearsessions
[social_django]
clearsocial
[staticfiles]
collectstatic
findstatic
runserver
[two_factor]
two_factor_disable
two_factor_status
[zerver]
add_users_to_streams
archive_messages
audit_fts_indexes
backup
bulk_change_user_name
change_password
change_realm_subdomain
change_user_email
change_user_role
check_redis
checkconfig
compilemessages
convert_gitter_data
convert_mattermost_data
convert_slack_data
create_default_stream_groups
create_large_indexes
create_realm_internal_bots
create_stream
create_user
deactivate_realm
deactivate_user
delete_old_unclaimed_attachments
delete_realm
delete_user
deliver_scheduled_emails
deliver_scheduled_messages
dump_messages
edit_linkifiers
email_mirror
enqueue_digest_emails
enqueue_file
export
export_single_user
export_usermessage_batch
fill_memcached_caches
fix_unreads
generate_invite_links
generate_multiuse_invite_link
generate_realm_creation_link
get_migration_status
import
list_realms
logout_all_users
makemessages
merge_streams
print_email_delivery_backlog
process_queue
purge_queue
query_ldap
rate_limit
reactivate_realm
realm_domain
register_server
remove_users_from_stream
rename_stream
reset_authentication_attempt_count
restore_messages
runtornado
scrub_realm
send_custom_email
send_password_reset_email
send_realm_reactivation_email
send_stats
send_test_email
send_to_email_mirror
send_webhook_fixture_message
set_message_flags
show_admins
soft_deactivate_users
sync_ldap_user_data
transfer_uploads_to_s3
turn_off_digests
Schritt 6 – Upgrades von Zulip
Um Zulip zu aktualisieren, lade die neueste Version vom Server herunter.
$ curl -fLO https://download.zulip.com/server/zulip-server-latest.tar.gz
Führe den folgenden Befehl aus, um das Upgrade durchzuführen.
$ sudo /home/zulip/deployments/current/scripts/upgrade-zulip ~/zulip-server-latest.tar.gz
Das Skript führt die folgenden Funktionen aus.
- Führe
apt upgradeaus, um das System zu aktualisieren. - Installiert die neue Version der Zulip-Abhängigkeiten.
- Fährt den Zulip-Server herunter.
- Führt den Befehl
puppet applyaus. - Führt bei Bedarf Datenbankmigrationen durch.
- Startet den Zulip-Server neu.
Schritt 7 – Sichern und Wiederherstellen von Zulip
Das Sichern und Wiederherstellen von Zulip ist dank der eingebauten Skripte, die sich um alles kümmern, ganz einfach.
Um ein vollständiges Backup von Zulip zu erstellen, führe den folgenden Befehl aus.
$ sudo -u zulip /home/zulip/deployments/current/manage.py backup --output=~/backups/zulip-backup.tar.gz
Der obige Befehl erstellt eine Datei zulip-backup.tar.gz im Verzeichnis ~/backups. Diese enthält alles, was du für die Übertragung oder Wiederherstellung von Zulip brauchst.
Um ein bestehendes Backup wiederherzustellen, installiere Zulip, indem du Schritt 2 durchführst.
Wenn du fertig bist, führe den folgenden Befehl aus, um die Wiederherstellung abzuschließen.
$ sudo -u zulip /home/zulip/deployments/current/scripts/setup/restore-backup ~/backups/zulip-backup.tar.gz
Wenn du die Domäne ändern möchtest, kannst du die Variable EXTERNAL_HOST in der Datei /etc/zulip/settings.py ändern und dann den Server mit dem folgenden Befehl neu starten.
$ sudo -u zulip /home/zulip/deployments/current/scripts/restart-server
Fazit
Damit ist unsere Anleitung zur Installation und Konfiguration des Zulip Chat-Servers auf einem Debian 11 basierten System abgeschlossen. Du kannst die offizielle Dokumentation von Zulip lesen, um mehr zu erfahren. Wenn du Fragen hast, schreibe sie unten in die Kommentare.