RocketChat auf einem Debian 11 betreiben, so geht’s:
RocketChat ist Open Source und kann mit Slack oder gar Teams, in meinen Augen verglichen werden. Du kannst mit unterschiedlichen Leuten chatten, Gruppen und Channels erstellen. Du möchtest auch Dein eigenes Slack oder Teams bei Dir zu Hause unter Debian oder einem Raspberry Pi 4 laufen lassen? Dann folge meinem Guide. In diesem Beitrag wirst Du RocketChat in einem Docker Container deployen und konfigurieren, mithilfe eines Nginx als reverse SSL Proxy.
Inhaltsverzeichnis
Du benötigst Folgendes:
- Einen Raspberry Pi 4 oder Computer
- Eine Raspberry Pi OS Raspian oder Debian Installation
- Eine Docker Installation mit Docker Compose
- Deine eigene Domain zum Beispiel kohlfrederic.de
- Eine Portfreigabe auf die Ports 80 und 443 für die Zertifizierung.
- Wenn Dein RocketChat öffentlich sein soll, dann noch eine Portfreigabe für den Port 3000
1. Schütze Deinen Server: Firewall Grundlagen
Wenn Du RocketChat öffentlich zugänglich nutzen möchtest, dann solltest Du Dich um eine Firewall kümmern. Beachte, dass nach den Einstellungen in dieser Anleitung die Verbindungen von Außen blockiert werden. Richte diese sonst zum Ende ein. Stelle hierzu sicher, dass UFW (Uncomplicated Firewall) installiert ist. Falls nicht, führe folgenden Befehl aus zum Installieren:
sudo apt-get install ufw
Ob diese auch läuft, kannst Du mittels folgendem Befehl prüfen:
apt -qq list ufc
Um die ursprünglichen Zugriffsrollen zu aktivieren oder deaktivieren, nutze folgende Befehle:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Setze im Anschluss die Serviceregeln für SSH und HTTPS.
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
Die Firewall aktivieren, die Frage wird mit y für Ja bestätigt:
sudo ufw enable
Den aktuellen Status über Deine Firewall kannst Du wie folgt prüfen:
sudo ufw status
Wenn Du wiederum Änderungen an der Firewall vornimmst, solltest Du diese im Anschluss einmal neu starten:
sudo ufw reload
Ebenso kannst Du sie auch wie folgt deaktivieren:
sudo ufw disable
2. Sichere Deinen Server ab mit Fail2Ban
Fail2Ban ist ein Software-Framework, welches Computer vor Brute-Force-Attacken schützt. Dies wird einfach installiert und damit auch aktiviert.
sudo apt-get install fail2ban
3. Docker und Docker-Compose installieren
3.1 Docker
Hier leite ich Dich zu einem meiner beiden Beiträge, um entweder unter Debian mittels Repository oder auf einem Raspberry Pi per Skript Docker zu installieren.
Docker mittels Repository unter Debian installieren
Docker auf dem Raspberry Pi installieren
3.2 Docker-Compose
Die anschließende Installation von Docker-Compose führst Du wie folgt aus:
sudo curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Hierbei nutzen wir die Version 2.6.1 welches die aktuell neuste ist, wenn Du hier eine neuere Version nutzen möchtest, musst Du den cURL-Befehl anpassen. Mit der vorgegebenen Version 1.24 von RocketChat hatte ich Probleme die Datei docker-compose.yml ausführen zu können.
Nach der Installation müssen die Berechtigungen für die Ausführung der Datei gesetzt werden.
sudo chmod +x /usr/local/bin/docker-compose
Zum Abschluss der Installation von Docker-Compose kann mit dem Befehl die Version und damit korrekte Installation geprüft werden:
sudo docker-compose --version
Merke: Bei Systemen, wo /usr/local/bin nicht Teil von der $PATH Variable ist, musst, Du Docker-Compose dort als auch in /usr/bin mit einbinden.
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4. Die hosts-Datei bearbeiten
Wenn Deine Domain, zum Beispiel kohlfrederic.de, auf eine öffentlich zugängliche IP-Adresse zeigt, dann muss diese ebenfalls angegeben werden. Falls Du Deinen Server auch von unterwegs nutzen möchtest.
sudo nano /etc/hosts
Hierbei trägst Du an der Position von localhost, über RocketChat.fritz.box Deine Domain ein. Im Anschluss sollte localhost sich indessen über RocketChat befinden. (RocketChat ist der Name meines Computers in diesem Falle.)
Mit Strg + S und Strg + X speicherst und schließt Du die Datei.
5. Installation von Nginx & SSL Zertifikate
Installiere Ngnix, welcher ein einfacher Webserver ist und für die Zertifikate benötigt wird. Auch hier bestätigst Du die Installation mit einem J oder Y für Ja.
sudo apt-get install nginx
5.1 SSL Zertifikate erstellen und nutzen
In der offiziellen Anleitung von RocketChat werden drei unterschiedliche Möglichkeiten gezeigt, wie man mit den Zertifikaten umgehen kann. Ich werde hier mit den gewünschten SSL Zertifikaten von Let´s Encrypt gehen, welches auch die empfohlene Variante ist.
Achtung! Du solltest hier natürlich die Ports 80 und 443 öffentlich zugänglich halten, damit das Zertifikat auch erfolgreich erstellt werden kann.
Zunächst einmal gehst Du auf folgende Seite Let´s Encrypt. Hier klickst Du auf den linken Button Get Started / Loslegen.
Im Text, der Dir nun geboten wird, wird auch die Erstellung mit Shell / SSH Zugang geboten. Hier klickst Du auf folgenden Link wiederum.
Wie Du sehen kannst, trägst Du hier Deinen Webserver, den Nginx, und Dein Betriebssystem, Debian, ein. Darauf hin bekommst Du eine Anleitung, welche Dir die Installation von snap erläutert.
Die entsprechenden Befehle habe ich auch hier aufgelistet.
sudo apt update
sudo apt install snapd
Installiere jetzt core snap, um das neuste snapd zu bekommen.
sudo snap install core
Danach zurück auf der Certbot Seite geht es mit Schritt drei weiter. Hier nochmal folgenden Befehl eingeben, um sicherzustellen, dass auch wirklich die aktuellste Version installiert ist.
sudo snap install core; sudo snap refresh core
Dies sollte wie folgt aussehen, da wir es ja zunächst erst installiert haben.
Jetzt stellen wir sicher, dass nicht schon ein anderer Certbot installiert ist über unseren OS Paket Manager.
sudo apt-get remove certbot
Die Installation von Certbot mittels snap kann beginnen.
sudo snap install --classic certbot
Führe den folgenden Befehl aus, um den Certbot Befehl auch nutzen zu können, in dem Du ihn dem snap/bin/ und /usr/bin/ hinzufügst.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Zum Schluss lässt Du Dir indessen von Certbot Deinen nginx Zertifizieren und somit auf HTTPS Verschlüsseln.
sudo certbot --nginx
Zunächst einmal musst Du hier eine E-Mail-Adresse angeben, mit welcher Dein Zertifikat erstellt werden soll.
Auch nach dem Du die AGB gelesen hast bestätigtst Du dies mit einem Y für Yes / Ja.
Die Frage, ob Du Informationen (Newsletter) erhalten möchtest, bestätigst Du mit einem Y, wenn Du sie bekommen möchtest oder mit einem N, wenn nicht. Ebenfalls bestätigst Du mit einem Y, dass Deine E-Mail-Adresse mit der Electronic Frontier Foundation geteilt wird, wenn Dein erstes Zertifikat erfolgreich ausgestellt wurde.
Jetzt gibst Du Deine Domain an, welche Du mit Deinem Zertifikat verbinden möchtest und bestätigst diese mit Enter. Dann solltest Du folgende Meldung bekommen.
6 Docker-Compose Datei und Ordner erstellen
Du erstellst einen Ordner RocketChat, welcher die yml- als auch env-Datei beinhalten soll.
mkdir RocketChat
Hier lädst Du die vorgefertigte compose.yml-Datei als auch die env.example-Datei herunter, welche Du im Anschluss in .env umbenennst.
curl -L https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/compose.yml -O
curl -L https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/env.example -O
sudo mv env.example .env
Die Dateien kannst Du Dir im Anschluss ansehen und bearbeiten, ich empfehle Dir allerdings nur die .env Datei zu bearbeiten, da diese für Änderungen gedacht ist. Ebenfalls musst Du die compose-Datei noch umbenennen, da docker-compose diese sonst nicht finden / ausführen kann.
mv compose.yml docker-compose.yml
sudo nano .env
Öffne die .env-Datei und ändere die ROOT_URL, sodass sie Deiner Domain entspricht. Ebenfalls kannst Du auch den Port anpassen, wenn Dein RocktChat hinter einem Proxy sich befinden sollte. Anderenfalls lasse ihn auf Port 3000 stehen. Dieser muss am Ende auch freigegeben und somit öffentlich erreichbar sein.
Auch die Domain darf nicht fehlen, da hier sonst ein leerer String übergeben wird.
Nachdem Du die Datei bearbeitet und mit Strg + S und Strg + X gespeichert und geschlossen hast, legst Du noch zwei weitere Ordner an.
sudo mkdir -p /var/www/rocket.chat/data/runtime/db
sudo mkdir -p /var/www/rocket.chat/data/dump
7 Server starten
Nun heißt es Start. Starte die Services mit einem einfachen Befehl dort, wo sich auch die docker-compose.yml-Datei befindet.
sudo docker-compose up -d
Die Installation kann indessen etwas Zeit in Anspruch nehmen. Während dessen kann es passieren, dass Deine SSH-Verbindung abbricht. Dies bedeutet jedoch nicht, dass Dein Server nicht läuft. Einmal erneut einloggen und den Befehl eingeben, um alle laufenden Container einsehen zu können. Falls hier kein Container angezeigt werden sollte, dann wiederum noch mal docker-compuse up -d ausführen.
sudo docker ps -a
Du kannst Deinen Rocket.Chat im lokalen Netzwerk über die IP-Adresse und den Port 3000 erreichen.
8 Rocket.Chat einrichten
Hier wirst Du inzwischen dazu aufgerufen, das erforderliche Admin Profil zu erstellen.
Auch die Organisation muss ausgefüllt werden, trage hier sonst Deinen Namen oder den Namen Deines Projektes ein. Die anderen Drop-Downs müssen ebenfalls gefüllt sein.
Hier kannst Du Dich dafür entscheiden, mit in der Cloud aufgenommen zu werden. Dadurch besteht die Möglichkeit, die schon vorhandenen Apps und auch Integrationen in andere Anbieter mit nutzen zu dürfen. Ansonsten bist Du auf Dich allein gestellt und musst auch die App selbst kompilieren. Wie Dir die nachfolgende Meldung mitteilt.
Und da sind wir, Dein eigener und ganz persönlicher RocktChat ist installiert und bereit konfiguriert und genutzt zu werden.
Auch über Deine Domain ist er erreichbar, wenn Du den Port 3000 freigegeben hast.
Fazit
Ich hoffe, ich konnte Dir gut und verständlich erklären, wie man RocketChat mithilfe von Docker installieren und betreiben kann. Ich wünsche Dir noch weiterhin viel Erfolg.
Quellen:
- https://docs.rocket.chat/deploy/prepare-for-your-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers (14.07.2022 21:20)
- https://docs.rocket.chat/deploy/prepare-for-your-deployment/rapid-deployment-methods/docker-and-docker-compose (19.07.2022 19:51)
- https://certbot.eff.org/ (19.07.2022 06:10)
- https://snapcraft.io/docs/installing-snap-on-debian (19.07.2022 06:16)
- https://snapcraft.io/docs/installing-snapd (19.07.2022 06:16)
- https://docs.docker.com/compose/install/linux/ (19.07.2022 21:30)
Titelbild von RocketChat