IT Projekte / Home Lab / Smart Home / Games

Allgemein, Docker, Proxmox, Raspberry Pi

RocketChat Container mittels Docker unter Debian 11 deployen

RocketChat

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.

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
Prüfen, ob die Firewall auch funktioniert.
Prüfen, ob die Firewall auch funktioniert.

Um die ursprünglichen Zugriffsrollen zu aktivieren oder deaktivieren, nutze folgende Befehle:

sudo ufw default deny incoming
sudo ufw default allow outgoing
Die Zugriffe erlauben oder blockieren.
Die Zugriffe erlauben oder blockieren.

Setze im Anschluss die Serviceregeln für SSH und HTTPS.

sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
Für RocketChat die Ports freigeben.
Für RocketChat die Ports freigeben.

Die Firewall aktivieren, die Frage wird mit y für Ja bestätigt:

sudo ufw enable
Die Firewall aktivieren

Den aktuellen Status über Deine Firewall kannst Du wie folgt prüfen:

sudo ufw status
Der Status der Firewall einsehen
Für RocketChat die Ports freigeben.

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
Vor der Änderung.
Vor der Änderung.

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.)

Nach der Änderung.
Nach der Änderung.

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.

Let's Encrypt Homepage
Let’s Encrypt Homepage

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.

Certbot Homepage
Certbot Homepage

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
snap core installieren

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.

snap core installieren und aktualisieren

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
certbot installieren mit snap

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.

certbot für nginx konfigurieren

Auch nach dem Du die AGB gelesen hast bestätigtst Du dies mit einem Y für Yes / Ja.

Ja ich habe die AGB gelesen

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.

Ich möchte den Newsletter abonieren

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.

Erfolgreiches Zertifikat erstellt

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.

Die URL angeben
Die URL angeben
Die Domain angeben
Die Domain angeben

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
RocketChat herunterladen und starten
RocketChat herunterladen und starten

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.

Administrator Profil erstellen
Administrator Profil 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.

Organisations Informationen angeben
Organisations Informationen angeben

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.

Als Stand-alone fortfahren
Als Stand-alone fortfahren
Stand-alone-Server bestätigen
Stand-alone-Server bestätigen

Und da sind wir, Dein eigener und ganz persönlicher RocktChat ist installiert und bereit konfiguriert und genutzt zu werden.

RocketChat
RocketChat

Auch über Deine Domain ist er erreichbar, wenn Du den Port 3000 freigegeben hast.

RocketChat online
RocketChat online

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.

Titelbild von