MongoDB-Authentifizierung
Einrichtung der Authentifizierung für Ihre Docker-MongoDB mit der Datei docker-compose.override.yml
Dieser Leitfaden zeigt, wie die Datei docker-compose.override.yml verwendet wird, um eine explizite Authentifizierung für MongoDB zu aktivieren.
Weitere Informationen zur Override-Datei finden Sie unter: Docker Compose Override
Hinweise:
- Die Standardkonfiguration ist durch das Blockieren externer Portzugriffe sicher, aber wir können mit Zugangsberechtigungen noch einen Schritt weiter gehen.
- Wie von den Entwicklern von MongoDB selbst angemerkt, ist die Authentifizierung in MongoDB ziemlich komplex. Wir werden einen einfachen Ansatz verfolgen, der für die meisten Fälle ausreicht, insbesondere für bestehende Konfigurationen von LibreChat. Um mehr darüber zu erfahren, wie die MongoDB-Authentifizierung mit Docker funktioniert, siehe hier: https://hub.docker.com/_/mongo/
- Dieser Leitfaden konzentriert sich ausschließlich auf terminalbasierte Einrichtungsvorgänge.
- Während die beschriebenen Schritte möglicherweise auch auf Docker Desktop-Umgebungen oder auf Nicht-Docker-, lokale MongoDB- oder andere Container-Setups anwendbar sind, werden Details, die spezifisch für diese Szenarien sind, nicht bereitgestellt.
Es gibt 3 grundlegende Schritte:
- Erstellen Sie einen Admin-Benutzer innerhalb Ihres mongodb-Containers
- Aktiviere die Authentifizierung und erstelle einen "readWrite"-Benutzer für "LibreChat"
- Konfigurieren Sie die MONGO_URI mit dem neu erstellten Benutzer
TL;DR
Dies sind alle notwendigen Befehle, falls Sie diese schnell durchgehen möchten oder als Referenz:
Beispiel
Beispiel einer docker-compose.override.yml-Datei unter Verwendung der librechat.yaml-Konfigurationsdatei, MongoDB-Authentifizierung und mongo-express zur Verwaltung Ihrer MongoDB-Datenbank:
Erstellen eines Admin-Benutzers
Zuerst müssen wir die Standard-Container stoppen und nur den mongodb-Container ausführen.
Hinweis: Das
-dFlag trennt die aktuelle Terminal-Instanz, während der Container im Hintergrund ausgeführt wird. Wenn Sie die mongodb-Protokollausgaben sehen möchten, lassen Sie es weg und fahren Sie in einem separaten Terminal fort.
Sobald es läuft, öffnen wir das Terminal des Containers und führen mongosh aus:
Sie sollten die folgende Ausgabe sehen:
Optional: Während wir hier sind, können wir bei Bedarf die Telemetrie für mongodb deaktivieren. Dabei handelt es sich um anonyme Nutzungsdaten, die regelmäßig gesammelt und an MongoDB gesendet werden:
Führen Sie den folgenden Befehl aus.
Hinweise:
- Alle nachfolgenden Befehle sollten in der aktuellen Terminalsitzung ausgeführt werden, unabhängig von der Umgebung (Docker, Linux,
mongoshusw.)- Ich werde die tatsächliche Terminalansicht mit # Beispiel-Eingabe/Ausgabe darstellen oder in einigen Fällen einfach die Ausgabe anzeigen
Befehl:
Beispiel-Eingabe/-Ausgabe:
Jetzt müssen wir auf die Admin-Datenbank zugreifen, die mongodb standardmäßig erstellt, um unseren Admin-Benutzer anzulegen:
zu db admin gewechselt
Ersetzen Sie die Anmeldedaten wie gewünscht und bewahren Sie diese für den Rest der Anleitung sicher auf.
Führen Sie den Befehl aus, um den Admin-Benutzer zu erstellen:
Sie sollten eine "ok"-Ausgabe sehen.
Sie können auch bestätigen, dass der Admin erstellt wurde, indem Sie show users ausführen:
:warning: Wichtig: Wenn Sie mongo-express verwenden, um Ihre Datenbank zu verwalten (Anleitung hier), benötigen Sie die zusätzlichen Berechtigungen, damit der mongo-express-Dienst korrekt ausgeführt werden kann:
Verlassen Sie das Mongosh/Container-Terminal durch Ausführen von exit:
Und den laufenden Container herunterfahren:
Aktivieren der Authentifizierung und Erstellen eines Benutzers mit readWrite-Zugriff
Wir müssen nun die Datei docker-compose.override.yml erstellen/bearbeiten, um die Authentifizierung für unseren mongodb-Container zu aktivieren. Sie können diese Konfiguration zum Starten oder als Referenz verwenden:
Nachdem Sie die Override-Datei wie oben konfiguriert haben, führen Sie den mongodb-Container erneut aus:
Und greifen Sie als Admin-Benutzer auf mongosh zu:
Bestätigen Sie, dass Sie authentifiziert sind:
Wechseln Sie zur "LibreChat"-Datenbank
Hinweis: Dies ist die Standarddatenbank, sofern Sie diese nicht über die MONGO_URI geändert haben; Standard-URI:
MONGO_URI=mongodb://mongodb:27017/LibreChat
Jetzt erstellen wir die tatsächlichen Anmeldedaten, die für unseren Mongo-Verbindungs-String verwendet werden sollen. Diese werden auf Lese-/Schreibzugriff für die "LibreChat"-Datenbank beschränkt sein. Ersetzen Sie wie zuvor das Beispiel durch Ihre gewünschten Anmeldedaten:
db.createUser({ user: 'user', pwd: 'userpasswd', roles: [ { role: "readWrite", db: "LibreChat" } ] });
Du solltest wieder eine "ok"-Ausgabe sehen.
Sie können die Benutzererstellung mit dem Befehl show users überprüfen.
Verlassen Sie das Mongosh/Container-Terminal erneut mit exit und fahren Sie den Container herunter:
Ich hatte ein Problem, bei dem der neu erstellte Benutzer nach der Erstellung nicht dauerhaft gespeichert wurde. Um dies zu beheben, habe ich die Schritte einfach wiederholt, um sicherzustellen, dass er erstellt wurde. Hier sind sie der Einfachheit halber für Sie:
Falls es immer noch nicht dauerhaft gespeichert wird, kannst du versuchen, die Befehle auszuführen, während alle Container laufen. Beachte jedoch, dass sich der LibreChat-Container in einem Fehler- bzw. Wiederholungszustand befinden wird.
Aktualisieren Sie die MONGO_URI, um die neuen Anmeldedaten zu verwenden
Schließlich fügen wir den neuen Verbindungs-String mit unseren neu erstellten Anmeldedaten zu unserer docker-compose.override.yml Datei unter dem api Service hinzu:
Also sieht unsere Override-Datei jetzt so aus:
Sie sollten nun docker compose up erfolgreich mit Lese-/Schreibzugriff auf die LibreChat-Datenbank ausführen können.
Beispiel für eine erfolgreiche Verbindung:
Wenn bei dir Authentifizierungsfehler auftreten, führe den letzten Teil von Schritt 2 erneut aus. Ich bin mir nicht sicher, warum es so empfindlich ist, aber nach ein paar Versuchen wird es funktionieren.
Wie finden Sie diese Anleitung?