Ich zeige euch hier, wie ihr die Chatplattform Rocket.Chat in wenigen Minuten mit Docker realisiert. Traefik dient uns hier als Reverse Proxy und stellt später den Dienst verschlüsselt per TLS bereit.
Datum | Änderungen |
---|---|
23.01.2021 | Erstellung dieser Anleitung |
10.01.2023 | Update Traefik Labels / Rocket.Chat / Layout |
29.05.2023 | Anpassung an neue Traefik Anleitung |
07.08.2023 | MongoDB in Docker Compose auf V5 geändert. Danke an @mortuslupus |
02.12.2023 | Anpassungen an die aktuelle Version (Docker Compose + env) |
0. Grundvoraussetzungen
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
1. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/rocketchat/mongodb_data
Nun passen wir noch die Rechte an. Dazu gebt ihr folgendes ein:
chown 1001:1001 /opt/containers/rocketchat/mongodb_data
2. Docker Compose anlegen
Nun legen wir die eigentliche Docker Datei an. Hierfür habe ich mir die offizielle Konfiguration angeschaut und sehr viel abändern müssen, damit diese lauffähig wird.
nano /opt/containers/rocketchat/docker-compose.yml
Inhalt
services: rocketchat: image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE:-latest} restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.rocketchat.entrypoints=websecure" - "traefik.http.routers.rocketchat.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.rocketchat.tls=true" - "traefik.http.routers.rocketchat.tls.certresolver=http_resolver" - "traefik.http.routers.rocketchat.service=rocketchat" - "traefik.http.services.rocketchat.loadbalancer.server.port=3000" - "traefik.docker.network=proxy" - "traefik.http.routers.rocketchat.middlewares=default@file" environment: MONGO_URL: "${MONGO_URL:-\ mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\ ${MONGODB_DATABASE:-rocketchat}?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}" MONGO_OPLOG_URL: "${MONGO_OPLOG_URL:\ -mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\ local?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}" ROOT_URL: ${ROOT_URL:-http://localhost:${HOST_PORT:-3000}} PORT: ${PORT:-3000} DEPLOY_METHOD: docker DEPLOY_PLATFORM: ${DEPLOY_PLATFORM:-} REG_TOKEN: ${REG_TOKEN:-} depends_on: - mongodb networks: - default - proxy mongodb: image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-5.0} restart: unless-stopped volumes: - ./mongodb_data:/bitnami/mongodb environment: MONGODB_REPLICA_SET_MODE: primary MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0} MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017} MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb} MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017} MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb} MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true} ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes} networks: - default networks: proxy: external: true
Notwendige Anpassungen:
- keine
3. env Datei anlegen
Nun legen wir noch eine weitere Datei an. Dazu gebt ihr folgendes ein:
nano /opt/containers/rocketchat/.env
Kopiert nun folgendes in die Datei:
### Rocket.Chat configuration # Rocket.Chat version # see:- https://github.com/RocketChat/Rocket.Chat/releases #RELEASE= # MongoDB endpoint (include ?replicaSet= parameter) #MONGO_URL= # MongoDB endpoint to the local database #MONGO_OPLOG_URL= # IP to bind the process to #BIND_IP= # URL used to access your Rocket.Chat instance ROOT_URL=https://chat.euredomain.de # Port Rocket.Chat runs on (in-container) #PORT= # Port on the host to bind to #HOST_PORT= ### MongoDB configuration # MongoDB version/image tag #MONGODB_RELEASE= # See:- https://hub.docker.com/r/bitnami/mongodb ### Traefik config (if enabled) # Traefik version/image tag #TRAEFIK_RELEASE= # Domain for https (change ROOT_URL & BIND_IP accordingly) DOMAIN=chat.euredomain.de # Email for certificate notifications #LETSENCRYPT_EMAIL=
Notwendige Anpassungen:
- Bei DOMAIN gebt ihr eure Domain an.
- Bei ROOT_URL gebt ihr eure Domain an
4. Rocket.Chat starten
Rocket.Chat startet ihr wie gewohnt mit folgendem Befehl:
docker compose -f /opt/containers/rocketchat/docker-compose.yml up -d
5. Rocket.Chat Login
Nun müsst ihr ein paar Minuten warten.
Wenn ihr nun auf “chat.euredomain.de” geht, dann solltet ihr auf diese Webseite kommen. Hier legt ihr nun den Administrator an.
Anschließend könnt ihr noch Infos über eure Firma eingeben. Dies ist jedoch alles FREIWILLIG.
Nun legt ihr noch einen Seitennamen fest.
Jetzt müsst ihr noch euren Server Modus wählen.
Jetzt habt ihr es geschafft und könnt Rocket.Chat nutzen.
6. Quellen
https://docs.rocket.chat/installation/docker-containers/docker-compose
Hallo,
ich bin kein Profi, nur privat im IT-Bereich unterwegs und immer wieder interessiert Neues zu lernen. Jetzt Docker.
Traefik konnte ich nach eurer Anleitung installieren. Läuft. Auch WordPress konnte ich ausprobieren.
Aber Rocketchat bringt immer ein “Bad Gateway” beim Aufruf der Domain. Ich habe die Anleitungen auf einem frischen System Schritt für Schritt copy/paste befolgt (außer natürlich meine Domain eingegeben, die richtig eingerichtet ist, da sie mit dem WordPress-Container schon funktioniert hat).
Vielleicht gibt es eine leichte Lösung? Oder wären noch ein paar Logs gut anzuschauen? Welche?
Vielen Dank schonmal und viele Grüße
Felix
EDIT: Nach dem Start des rocketchat-Containers geht der Status von traefik (mit “docker compose ps”) zu unhealthy. Wenn ich rc wieder stoppe, geht er zurück zu healthy.
Vielen Dank für eure Arbeit. Ein kleiner Hinweis aber zu MongoDB. Man sollte Version 5.0 nehmen 😉
Hallo, danke für die Anleitung.
Ich bekomme folgende Meldung:
rocketchat The requested image’s platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Gibt es auch eine Version für arm64?
Gruss,
Enrico
Hallo Christian,
nach einem langen Wochenende 😉 habe ich jetzt eine Möglichkeit erarbeitet, rocket.chat zu installieren, auch wenn man vorher Traefik mit Crowdsec nach dieser anderen schönen Anleitung von dir erstellt hat.
Es funktioniert mit folgender angepasster docker-compose.yml aus den offiziellen Docs von rocket.chat, ansonsten alles wie in der Anleitung oben:
version: ‘1’
services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE:-latest}
restart: on-failure
labels:
traefik.enable: “true”
traefik.http.routers.rocketchat.rule: Host(
${DOMAIN}
)traefik.http.routers.rocketchat.tls: “true”
traefik.http.routers.rocketchat.entrypoints: https
traefik.http.routers.rocketchat.tls.certresolver: http
traefik.http.services.rocketchat.loadbalancer.server.port: 3000
traefik.docker.network: proxy
traefik.http.routers.rocketchat.service: rocketchat
traefik.http.routers.rocketchat.middlewares: default@file
volumes:
– ./uploads:/app/uploads
environment:
MONGO_URL: “${MONGO_URL:-\
mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
${MONGODB_DATABASE:-rocketchat}?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}”
MONGO_OPLOG_URL: “${MONGO_OPLOG_URL:\
-mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
local?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}”
ROOT_URL: ${ROOT_URL:-http://localhost:${HOST_PORT:-3000}}
PORT: ${PORT:-3000}
DEPLOY_METHOD: docker
DEPLOY_PLATFORM: ${DEPLOY_PLATFORM}
depends_on:
– mongodb
expose:
– ${PORT:-3000}
ports:
– “${BIND_IP:-0.0.0.0}:${HOST_PORT:-3000}:${PORT:-3000}”
networks:
– default
– proxy
mongodb:
image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-4.4}
restart: on-failure
volumes:
– ./data/db:/data/db
environment:
MONGODB_REPLICA_SET_MODE: primary
MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0}
MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017}
MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb}
MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}
MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb}
MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true}
ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}
networks:
– default
– proxy
networks:
proxy:
external: true
Dazu muss im gleichen Ordner noch eine Datei .env erstellt werden
nano .env
und diese dann für DOMAIN und ROOT_URL persönlich angepasst werden:
### Rocket.Chat configuration
# Rocket.Chat version
# see:- https://github.com/RocketChat/Rocket.Chat/releases
#RELEASE=
# MongoDB endpoint (include ?replicaSet= parameter)
#MONGO_URL=
# MongoDB endpoint to the local database
#MONGO_OPLOG_URL=
# IP to bind the process to
#BIND_IP=
# URL used to access your Rocket.Chat instance
ROOT_URL=https://eure.domain.net #Hier die Domain eintragen (mit https)
# Port Rocket.Chat runs on (in-container)
#PORT=
# Port on the host to bind to
#HOST_PORT=
### MongoDB configuration
# MongoDB version/image tag
#MONGODB_RELEASE=
# See:- https://hub.docker.com/r/bitnami/mongodb
### Traefik config (if enabled)
# Traefik version/image tag
#TRAEFIK_RELEASE=
# Domain for https (change ROOT_URL & BIND_IP accordingly)
DOMAIN=eure.domain.net #Hier die Domain eintragen
# Email for certificate notifications
#LETSENCRYPT_EMAIL=
Bitte gerne prüfen und evtl. korrigieren, vielleicht hilft es anderen und dir bei deiner tollen Arbeit hier.
Schöne Grüße
Olaf
Hallo Christian,
bisher habe ich einige deiner Anleitungen erfolgreich umsetzen können. Vielen Dank!
Hier scheitere ich allerdings, der mono-init-replica container will einfach mongodb nicht finden
Die offizielle compose.yml führt inzwischen mongo:4.4 als image, habe ich neben einigem andern probiert, aber ohne Erfolg…
Woran könnte es liegen?
Danke und Grüße
Olaf
Hallo Christian,
ich hab Rocketchat nach der Anleitung mit Traefik erstellt. Wie kann man die chatpal Suche installieren und hinzufügen?
https://docs.rocket.chat/guides/administration/admin-panel/settings/search
https://github.com/chatpal/chatpal-search-standalone
Vielen Dank!
Hallo Christian,
danke für deine genialen Anleitungen!
Ich habe nextcloud und Rocketchat über Traefik und Docker nach deinen Anleitungen installiert.
Jedoch konnte ich Rocketchat mit dem neuen nextcloudplugin nicht in Nextcloud als iframe einbinden einbinden, in Firefox stand “Firefox darf diese eingebettete Seite nicht öffnen. Zu Ihrem Schutz erlaubt Meinedomain.de es Firefox nicht, diese Seite anzuzeigen, wenn sie in eine andere Seite eingebettet ist. Zur Anzeige der Seite muss diese in einem neuen Tab geöffnet werden.” In RocketChat hatte ich alle nötigen Einstellungen gemacht.
Geholfen hat in die /opt/containers/traefik/data/dynamic_conf.yml folgendes einzusetzen:
middlewares:
restrict_access:
headers:
sslRedirect: true
accessControlMaxAge: 12
addVaryHeader: true
accessControlAllowCredentials: true
accessControlAllowMethods:
– OPTION
– POST
– GET
– PUT
– DELETE
accessControlAllowHeaders:
– “*”
accessControlAllowOriginList:
– https://meinedomain.de
Und in die docker compose von Rocketchat (opt/containers/rocketchat/docker-compose.yml) am Ende der labels einfügen:
– “traefik.http.middlewares.serviceheaders.headers.accesscontrolalloworiginlist=*”
– “traefik.http.routers.service.middlewares=viewsheaders”
Vielleicht hilft es jemandem weiter.
VG
Max
Bekomme leider nach dem letzten Download complete folgenden Fehler 🙁 :
root@srv:/opt/containers/rocketchat# docker-compose -f /opt/containers/rocketchat/docker-compose.yml up
Pulling rocketchat (rocketchat/rocket.chat:latest)…
latest: Pulling from rocketchat/rocket.chat
b4d181a07f80: Pull complete
f9bc4241c5e2: Pull complete
440afabfe6b4: Pull complete
850ae2996a77: Pull complete
4fed7f8d5116: Pull complete
089748057fee: Pull complete
391e944c541c: Extracting [==================================================>] 166.8MB/166.8MB
265ad7738a6d: Download complete
ERROR: failed to register layer: Error processing tar file(exit status 1): write /app/bundle/programs/server/npm/node_modules/less/test/less/errors/imports/import-test.less: no space left on device
root@srv:/opt/containers/rocketchat#
Danke, dass du mit uns dein Wissen teilst. Ich habe allerdings ein problem mit dem Proxy. Sowohl mit deiner config als auch mit der config die ich sonst nutze, bekomme ich immer einen 404 beim Aufruf meiner URL (test.meinedomain.com). Wenn ich mein test-image mit derselben traefik-config starte, kann ich ohne Probleme darauf zugreifen. Wenn ich den Port 3000 nach außen aufmache und manuell im Browser eingebe komme ich auch auf RocketChat drauf.
Hat jemand einen Vorschlag?
Danke
Wie sieht es mit der Sicherheit der Daten aus bei Rocket Chat mit eigenem Server laut Anleitung hier? Werden diese durch fremde Systeme geleitet oder bleiben die auf dem eigenen Server?
Wir suchen gerade für den Verein nach einer DSGVO sicheren Lösung nachdem Diskussionen wegen Whatsapp aufkommen.
Hallo Christian,
Ist es möglich von Rocketchat automatische Backups einzurichten, so wie es hier im Tutorial vorgestellt wurde: https://goneuland.de/nextcloud-backup-erstellen-und-wiederherstellen-in-docker-umgebung/ ?
Danke und viele Grüße
Max
Hi Christian,
Wow! Vielen Dank für das super Tutorial!
Hat sofort fuktioniert. Endlich habe ich RocketChat auf Docker am laufen :).
DANKE