Rocket.Chat und MongoDB in Debian 12 mit Docker Compose

Schlüsselpunkte:

  • Du kannst Rocket.Chat und MongoDB im Debian LXC Container mit Docker Compose einrichten, indem du eine docker-compose.yml-Datei erstellst und den Container startest. Die Installation ist einfach und kann mit einem Replica-Set für MongoDB ergänzt werden. In folgendem Beispiel führen wie die Befehle als root aus.

Vorbereitung: Docker installieren

  • Installiere Docker und Docker Compose auf deinem Debian 12 mit apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin falls noch nicht vorhanden.
  • Mit systemctl is-enabled docker && systemctl restart docker und systemctl is-enabled containerd && systemctl restart containerd läuft der Docker-Dämon auch nach einem Debian LinuX Neustart.
  • Der Befehl docker --version && docker compose version zeigt dir jetzt die installierte Version an. (zB.: Docker v28.1 - Docker Compose v2.35)
  • Teste mit docker run hello-world deinen ersten Docker Container.
  • Update mit dem Befehl apt update && apt dist-upgrade && apt autoremove && apt clean jeweils dein Debian 12 inkl. Docker.

Vorbereitung zur Rocket.Chat Installation

  • Lege ein Verzeichnis für deine Installation mit mkdir -p /opt/containers/rocket.chat/mongodb_data an.
  • Gehe in das Verzeichnis cd /opt/containers/rocket.chat .

Schritte zur Installation

  • Datei erstellen: Erstelle mit nano docker-compose.yml eine YML-Datei wie unten gezeigt für Rocket.Chat und MongoDB, einschließlich Replica-Set-Initialisierung.
  • Container starten: Führe docker-compose up -d aus, um die Container im Hintergrund zu starten.
  • Zugriff prüfen: Öffne einen Browser und gehe zu https://chat.ihredomain.at um Rocket.Chat zu testen und einen Administrator-Benutzer einzurichten.

Hinweise

  • Die Daten werden lokal in einem Docker-Volume gespeichert, was Persistenz gewährleistet, wenn Docker nach einem Rocket.Chat-Update neu gestartet wird.
  • Für lokale Zwecke ist dieses Setup ausreichend, aber für die Produktionsumgebungen empfehlen wir - wie unten gezeigt - die Initialisierung eines MongoDB-Replica-Sets, damit die Sicherheit und Skalierbarkeit gewährleistet wird.

Umfassende Analyse

Diese detaillierte Anleitung bietet einen tiefen Einblick in die Installation von Rocket.Chat und MongoDB mit Docker auf einem Debian 12 Server in einem LXC Container, wobei oben beschriebene Umgebung bereits Docker und Docker Compose (Versionen 28.1 bzw. 2.35) unterstützt. Sie berücksichtigt die spezifischen Anforderungen für eine Entwicklungs- oder Produktivumgebung und bietet eine Schritt-für-Schritt-Anleitung für SysOps-Profis, die eine einfache, aber robuste Einrichtung wünschen.

Einführung

Rocket.Chat ist eine Open-Source-Kommunikationsplattform, die als Alternative zu Slack genutzt werden kann, und benötigt eine Datenbank wie MongoDB für die Speicherung von Chats und Benutzerdaten. Die Analyse basiert auf aktuellen Dokumentationen und Community-Foren, die im Jahr 2025 verfügbar sind, und zielt darauf ab, eine wartungsfreundliche Lösung zu bieten.

Voraussetzungen und Installation

  • Zugang: Du hast über das Terminal SSH root Zugriff auf den Debian-Server.
  • Docker und Docker Compose: Du hast bereits Docker (Version 28.1) und Docker Compose (Version 2.35) installiert und getestet, was die Grundlage für die Containerisierung bildet.

Schritt-für-Schritt-Anleitung

Schritt 1: Verzeichnis für die Installation erstellen

Erstelle ein neues Verzeichnis für die Rocket.Chat-Installation, z. B. im /opt/ Verzeichnis:

  • Lege ein Verzeichnis für deine Installation mit mkdir -p /opt/containers/rocket.chat/mongodb_data an.
  • Gehe in das Verzeichnis cd /opt/containers/rocket.chat .

Dieses Verzeichnis dient als Arbeitsverzeichnis für die docker-compose.yml-Datei und die persistente Speicherung von Daten.

Schritt 2: docker-compose.yml-Datei erstellen

Erstelle eine Datei mit nano docker-compose.yml im Verzeichnis /opt/containers/rocket.chat mit dem folgenden Inhalt. Diese Datei definiert die Dienste für Rocket.Chat und MongoDB, einschließlich der Initialisierung eines MongoDB-Replica-Sets, was für Produktionsumgebungen empfohlen wird, aber auch für lokale Installationen nützlich ist:

version: '3'
services:
  mongodb:
    image: mongo:4.4
    restart: always
    command: mongod --replSet rs0 --bind_ip_all
    volumes:
      - mongodb_data:/data/db

  mongo-init-replica:
    image: mongo:4.4
    depends_on:
      - mongodb
    command: >
      bash -c "echo 'Waiting for MongoDB to start...'; until mongo --host mongodb:27017 --eval 'quit()' > /dev/null 2>&1; do sleep 1; done; echo 'MongoDB started, initiating replica set...'; mongo --host mongodb:27017 <<EOF
      rs.initiate({
        _id: 'rs0',
        members: [
          { _id: 0, host: 'mongodb:27017' }
        ]
      })
      EOF
      "

  rocketchat:
    image: rocket.chat:latest
    restart: always
    environment:
      - PORT=3000
      - ROOT_URL=[invalid url, do not cite]
      - MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0
      - MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0
    depends_on:
      - mongodb
      - mongo-init-replica
    ports:
      - "3000:3000"

volumes:
  mongodb_data:
  • Erklärung der Datei:
    • mongodb: Startet einen MongoDB-Container mit Version 4.4 und initialisiert einen Replica-Set mit mongod --replSet rs0 --bind_ip_all.
    • mongo-init-replica: Initialisiert den Replica-Set für MongoDB, indem es auf den Start von MongoDB wartet und dann die Replica-Set-Konfiguration ausführt.
    • rocketchat: Startet den Rocket.Chat-Container und verbindet ihn mit der MongoDB, wobei ROOT_URL auf [invalid url, do not cite] gesetzt ist, um lokale Zugriffe zu ermöglichen.
    • volumes: Definiert ein Volume mongodb_data für die persistente Speicherung der MongoDB-Daten.
Schritt 3: Container starten

Navigiere in das Verzeichnis ~/rocket.chat und starte die Container mit Docker Compose:

  • docker-compose up -d
  • Erklärung:
    • -d startet die Container im Hintergrund.
    • Du solltest sehen, dass die Container für MongoDB, MongoDB-Initialisierung und Rocket.Chat gestartet werden. Docker Compose zieht automatisch die benötigten Images, falls sie noch nicht vorhanden sind.
Schritt 4: Überprüfung der Installation
  • Öffne einen Browser und gehe zu [invalid url, do not cite].
  • Du solltest die Startseite von Rocket.Chat sehen, wo du dich anmelden oder einen neuen Benutzer erstellen kannst. Dies ist der erste Schritt zur Konfiguration deiner lokalen Instanz.
Schritt 5: Erste Konfiguration von Rocket.Chat
  • Wenn du Rocket.Chat das erste Mal startest, wirst du aufgefordert, einen Administrator-Benutzer zu erstellen.
  • Fülle die erforderlichen Felder aus (Benutzername, E-Mail, Passwort) und starte die Installation. Dies ermöglicht dir, die Plattform für lokale Tests zu nutzen.

Zusätzliche Hinweise und Best Practices

  • Persistente Daten: Die MongoDB-Daten werden im Volume mongodb_data gespeichert, das automatisch von Docker Compose erstellt wird. Dies gewährleistet, dass die Daten auch nach einem Neustart der Container erhalten bleiben.
  • Updates: Um Rocket.Chat zu aktualisieren, kannst du die Container mit docker-compose pull aktualisieren und dann neu starten: docker-compose up -d.
  • Logs: Falls du Probleme hast, kannst du die Logs der Container überprüfen, um Fehler zu identifizieren:
    • docker-compose logs -f zeigt die Logs aller Container.
    • Für spezifische Container kannst du z. B. docker logs -f <container_name> verwenden, wobei <container_name> der Name des Containers ist (z. B. rocketchat oder mongodb).
  • Port-Konflikte: Stelle sicher, dass Port 3000 auf deinem Host frei ist, bevor du die Container startest. Überprüfe dies mit sudo netstat -tuln | grep 3000.
  • Replica-Set: Die Einrichtung eines Replica-Sets ist für Produktionsumgebungen empfohlen, aber für lokale Installationen kannst du auch ohne Replica-Set arbeiten, indem du den mongo-init-replica-Service und die entsprechenden Parameter (--replSet rs0) auslässt. Dies würde jedoch einige Funktionen wie Echtzeit-Updates einschränken.

Vergleichstabelle: Wichtige Unterschiede zwischen lokaler und Produktionsinstallation

Aspekt Lokale Installation Produktionsinstallation
MongoDB-Replica-Set Optional, aber in diesem Setup enthalten für Robustheit Erforderlich für Hochverfügbarkeit und Skalierbarkeit
Port-Zugriff Lokaler Zugriff über [invalid url, do not cite] Zugriff über Domain mit HTTPS, Reverse-Proxy erforderlich
Sicherheit Keine SSL/TLS, lokal eingeschränkt SSL/TLS erforderlich, z. B. mit Let's Encrypt
Persistenz Docker-Volumes für MongoDB-Daten Docker-Volumes und Backups für Datenintegrität
Skalierbarkeit Nicht notwendig, Single-Instance-Setup Mehrere Instanzen, Load Balancing möglich

Fazit

Mit diesen Schritten hast du Rocket.Chat und MongoDB lokal auf deinem Debian-Server mit Docker installiert. Du kannst jetzt über [invalid url, do not cite] auf Rocket.Chat zugreifen und die Plattform für lokale Tests nutzen. Diese Einrichtung ist für Entwicklungszwecke geeignet, aber für eine Produktionseinsatz solltest du zusätzliche Sicherheitsmaßnahmen und Skalierbarkeitsoptionen berücksichtigen, wie z. B. einen Reverse-Proxy und regelmäßige Backups. Diese Analyse basiert auf aktuellen Dokumentationen und Community-Foren, die im Jahr 2025 verfügbar sind, und bietet eine solide Grundlage für die Implementierung.

Key Citations