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/deployments
enthä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 upgrade
aus, um das System zu aktualisieren. - Installiert die neue Version der Zulip-Abhängigkeiten.
- Fährt den Zulip-Server herunter.
- Führt den Befehl
puppet apply
aus. - 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.