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

  1. Es erstellt einen Benutzer zulip, um den Zulip-Server auszuführen.
  2. Es erstellt ein Home-Verzeichnis mit dem Benutzer zulip, das den gesamten öffentlichen Code im Verzeichnis /home/zulip/deployments enthält.
  3. Installiert alle Abhängigkeiten, die Zulip benötigt.
  4. Installiert die PostgreSQL-Datenbank, den Nginx-Webserver, RabbitMQ, Redis Cache und Memcached.
  5. 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.

Zulip Neue Organisationsseite

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.

Zulip Konto erstellen

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.

Zulip Dashboard

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.

  1. Führe apt upgrade aus, um das System zu aktualisieren.
  2. Installiert die neue Version der Zulip-Abhängigkeiten.
  3. Fährt den Zulip-Server herunter.
  4. Führt den Befehl puppet apply aus.
  5. Führt bei Bedarf Datenbankmigrationen durch.
  6. 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.

Das könnte dich auch interessieren …