Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Docker (Remote-Linux)

Diese Anweisungen sind für jemanden gedacht, der bei einer Docker Installation auf einem entfernten Ubuntu-Server bei Null anfängt

Um diese Anleitung nutzen zu können, benötigen Sie einen bereitgestellten Remote-Computer oder eine VM. Obwohl Sie diese Anleitung auch mit einer lokalen Installation verwenden können, beachten Sie bitte, dass sie ursprünglich für die Cloud-Bereitstellung geschrieben wurde.

⚠️ Diese Anleitung wurde ursprünglich für Digital Ocean konzipiert, daher müssen Sie die Anweisungen für andere Plattformen möglicherweise anpassen, aber das Grundprinzip bleibt unverändert.

Teil I: Installation von Docker und anderen Abhängigkeiten:

Es gibt viele Möglichkeiten, Docker auf Linux-Systemen einzurichten. Ich werde Sie durch die beste und empfohlene Methode führen, basierend auf dieser Anleitung.

Beachte, dass der "beste" Weg für eine Docker-Installation unter Ubuntu nicht der "schnellste" oder "einfachste" ist. Er ist der beste Weg für eine langfristige Nutzung (d. h. schnellere Updates, Sicherheits-Patches usw.).

1. Docker-Abhängigkeiten aktualisieren und installieren

Zuerst aktualisieren wir unsere Paketliste und installieren die erforderlichen Docker-Abhängigkeiten.

sudo apt update

Verwenden Sie anschließend den folgenden Befehl, um die Abhängigkeiten oder erforderlichen Pakete zu installieren.

sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

Installationshinweise

  • Geben Sie „Y“ für alle [Y/n] (Ja/Nein) Terminal-Eingabeaufforderungen in diesem gesamten Leitfaden ein.
  • Nach der ersten [Y/n]-Aufforderung erhalten Sie den ersten von einigen lila Bildschirmen, die Sie zum Neustart der Dienste auffordern.
    • Jedes Mal, wenn dies geschieht, können Sie sicher die EINGABETASTE für die standardmäßig bereits ausgewählten Optionen drücken:

image

  • Falls deine Droplet-Konsole zu irgendeinem Zeitpunkt die Verbindung trennt, führe die folgenden Schritte aus und mache dann dort weiter, wo du aufgehört hast:
    • Greifen Sie erneut auf die Konsole zu, wie oben angegeben
    • Wechseln Sie zu dem Benutzer, den Sie mit su - <yourusername> erstellt haben.

2. Docker-Repository zu APT-Quellen hinzufügen

Während die Installation von Docker Engine aus den Ubuntu-Repositorys einfacher ist, bietet das Hinzufügen des offiziellen Docker-Repositorys schnellere Updates. Deshalb ist dies die empfohlene Methode.

Zuerst rufen wir den GPG-Schlüssel ab, der für die Verbindung zum Docker-Repository benötigt wird. Verwenden Sie dazu den folgenden Befehl.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Fügen Sie als Nächstes das Repository zur Quellenliste hinzu. Obwohl Sie es auch manuell hinzufügen können, erledigt der folgende Befehl dies automatisch für Sie.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Der obige Befehl fügt automatisch Ihren Release-Codenamen ein (jammy für 22.04, focal für 20.04 und bionic für 18.04).

Aktualisieren Sie abschließend Ihre Pakete erneut.

sudo apt update

Wenn Sie vergessen, den GPG-Schlüssel hinzuzufügen, schlägt der obige Schritt mit einer Fehlermeldung fehl. Andernfalls fahren wir mit der Installation von Docker unter Ubuntu fort.

3. Docker installieren

Was ist der Unterschied zwischen docker.io und docker-ce?

docker.io ist das docker-Paket, das von einigen gängigen Linux-Distributionen (z. B. Ubuntu/Debian) angeboten wird. docker-ce hingegen ist das docker-Paket aus dem offiziellen Docker-Repository. Normalerweise ist docker-ce aktueller und wird bevorzugt.

Wir werden nun docker-ce (und nicht das Paket docker.io) installieren

sudo apt install docker-ce

Der violette Bildschirm bedeutet, dass Sie ENTER drücken müssen. :)

Empfohlen: Sie sollten sicherstellen, dass der erstellte Benutzer zur docker Gruppe hinzugefügt wird, um Befehle nahtlos verwenden zu können:

sudo usermod -aG docker $USER

Starten wir nun das System neu, um sicherzustellen, dass alles in Ordnung ist.

sudo reboot

Nach dem Neustart können Sie, falls Sie die Browser-Droplet-Konsole verwenden, auf „Neu laden“ klicken und warten, bis Sie wieder Zugriff auf die Konsole haben.

image

Hinweis: Jedes Mal, wenn Sie einen Neustart mit sudo reboot durchführen, sollten Sie wieder zu dem Benutzer wechseln, den Sie zuvor mit su - <yourusername> eingerichtet haben.

4. Überprüfen, ob Docker unter Ubuntu läuft

Es gibt viele Möglichkeiten zu überprüfen, ob Docker unter Ubuntu läuft. Eine Möglichkeit ist die Verwendung des folgenden Befehls:

sudo systemctl status docker

Du solltest eine Ausgabe sehen, die active (running) als Status anzeigt.

image

Beenden Sie dieses Protokoll, indem Sie STRG (oder CMD) + C drücken.

5. Docker Compose installieren

Da wir das offizielle Repository von Docker bereits in Schritt 2 hinzugefügt haben, ist die Installation von Docker Compose über das offizielle Compose-Plugin unkompliziert:

sudo apt install docker-compose-plugin

Überprüfen Sie die Installation:

docker compose version

Hinweis: Docker Compose v2 verwendet den Befehl docker compose (ohne Bindestrich) anstelle des veralteten docker-compose. Alle Befehle in dieser Anleitung verwenden die moderne Syntax.

6. Als Teil dieser Anleitung empfehle ich, dass Sie git und npm installiert haben:

Obwohl technisch nicht erforderlich, machen git und npm die Installation/Aktualisierung sehr einfach:

sudo apt install git nodejs npm

Lass die Matrix-Linien erscheinen.

Sie können die erfolgreiche Installation dieser Pakete mit dem folgenden Befehl überprüfen:

git --version
node -v
npm -v

image

Hinweis: Dies kann veraltete Node.js- und npm-Versionen installieren. Wenn Sie LibreChat direkt auf dem Host ausführen, verwenden Sie Node.js v24.16.0 mit npm v11.16.0. Für diese Docker-basierte Anleitung spielt die Node.js-Version des Hosts keine Rolle, da LibreChat innerhalb von Containern ausgeführt wird.

Ok, jetzt, da du das Droplet eingerichtet hast, wirst du nun die App selbst einrichten


Teil II: Einrichtung von LibreChat

1. Das Repo klonen

Von der droplet Befehlszeile (als Ihr Benutzer, nicht als root):

# clone down the repository
git clone https://github.com/danny-avila/LibreChat.git
 
# enter the project directory
cd LibreChat/

2. LibreChat Konfigurations- und Umgebungsdateien erstellen

Konfigurationsdatei (librechat.yaml)

Als Nächstes erstellen wir die LibreChat Konfigurationsdatei, auch bekannt als librechat.yaml, die eine Anpassung der App-Einstellungen sowie benutzerdefinierte endpoints ermöglicht.

Egal, ob Sie die App weiter anpassen möchten oder nicht, sie ist für die von uns verwendete deploy-compose.yml-Datei erforderlich, sodass wir eine mit dem absoluten Mindestwert erstellen können, um zu starten:

nano librechat.yaml

Sie gelangen nun zum Editor-Bildschirm, in den Sie Folgendes einfügen können:

# For more information, see the Configuration Guide:
# https://www.librechat.ai/docs/configuration/librechat_yaml
 
# Configuration version (required)
version: 1.3.5
# This setting caches the config file for faster loading across app lifecycle
cache: true

Verlassen Sie den Editor mit CTRL + X, dann Y zum Speichern und ENTER zur Bestätigung.

Konfigurationsvalidierung

LibreChat wird mit einem Fehler (Exit-Code 1) beendet, wenn Ihre librechat.yaml Datei Validierungsfehler enthält. Dieses Fail-Fast-Verhalten stellt sicher, dass Konfigurationsprobleme frühzeitig bei der Bereitstellung erkannt werden.

Bevor Sie die Bereitstellung durchführen, validieren Sie Ihre Konfiguration mithilfe des YAML Validator. Wenn Ihre CI/CD-Pipeline den Server startet, wird sie bei einer ungültigen Konfiguration sofort abbrechen und so Bereitstellungen mit falsch konfigurierten Einstellungen verhindern.

Umgebung (.env) Datei

Die Standardwerte reichen aus, um die App zu starten und auszuführen, sodass Sie Ihre Anmeldedaten über die Web-App eingeben können.

# Copies the example file as your global env file
cp .env.example .env

Es wird jedoch dringend empfohlen, die "secret"-Werte für zusätzliche Sicherheit von ihren Standardwerten zu ändern. Die API-Startprotokolle werden Sie warnen, falls Sie dies nicht tun.

Zur Vereinfachung können Sie dies ausführen, um Ihre eigenen Werte zu generieren:

https://www.librechat.ai/toolkit/creds_generator

nano .env
 
# FIND THESE VARIABLES AND REPLACE THEIR DEFAULT VALUES!
 
# Must be a 16-byte IV (32 characters in hex)
 
CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb
 
# Must be 32-byte keys (64 characters in hex)
 
CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

Wenn Sie Anmeldedaten für alle Benutzer Ihrer Instanz bereitstellen möchten, sollten Sie diese hinzufügen, während Sie diese Datei noch bearbeiten:

OPENAI_API_KEY=sk-yourKey

Wie zuvor, beenden Sie den Editor mit CTRL + X, dann Y zum Speichern und ENTER zur Bestätigung.

Das war's!

Für eine gründliche Konfiguration sollten Sie jedoch Ihre .env Datei nach Bedarf bearbeiten und die Kommentare in der Datei sowie die unten aufgeführten Ressourcen lesen.

# if editing the .env file
nano .env

Dies ist eine solche .env Variable, die beachtet werden sollte. Sie deaktiviert externe Registrierungen, falls Sie dies tun möchten, nachdem Sie Ihr Konto erstellt haben.

ALLOW_REGISTRATION=false

Ressourcen:

3. Docker starten

# should already be running, but just to be safe
sudo systemctl start docker
 
# confirm docker is running
docker info

Jetzt können wir den App-Container starten. Beim ersten Mal verwenden wir den vollständigen Befehl, später können wir einen Kurzbefehl verwenden.

sudo docker compose -f ./deploy-compose.yml up -d

image

Sie können das Terminal sicher schließen, wenn Sie möchten – die Docker-App wird weiterhin ausgeführt.

Hinweis: Hierfür wird eine spezielle compose-Datei verwendet, die für diese bereitgestellte Umgebung optimiert ist. Wenn Sie hier weitere Konfigurationen wünschen, sollten Sie die Dateien deploy-compose.yml und Dockerfile.multi untersuchen, um zu sehen, wie sie eingerichtet sind. Wir erstellen das Image in dieser Umgebung nicht, da der Arbeitsspeicher dafür nicht ausreicht. Stattdessen ziehen wir das neueste dev-api Image von LibreChat, das nach jedem Push auf main automatisch erstellt wird.

Wenn Sie eine Domain für die Verwendung mit LibreChat einrichten, verwendet diese compose-Datei die nginx-Datei unter client/nginx.conf. Anweisungen dazu finden Sie weiter unten in Teil V.

4. Sobald die App läuft, können Sie unter http://yourserverip darauf zugreifen

Gehen Sie zurück zur Droplet-Seite, um Ihre Server-IP zu erhalten, kopieren Sie diese und fügen Sie sie in Ihren Browser ein!

image

Registrieren Sie sich, melden Sie sich an und genießen Sie Ihr eigenes, privat gehostetes, remote LibreChat :)

image

image

Teil III: Aktualisierung von LibreChat

Ich habe diesen Schritt ziemlich einfach gestaltet, vorausgesetzt, alles oben Genannte wurde erfolgreich installiert und Sie haben die git-Historie nicht bearbeitet.

Hinweis: Wenn Sie an einem bearbeiteten Branch mit eigenen Commits arbeiten, zum Beispiel mit Änderungen an client/nginx.conf, sollten Sie config/deployed-update.js überprüfen, um einige der Befehle nach eigenem Ermessen manuell auszuführen. Siehe Teil V für weitere Informationen dazu.

Führen Sie den folgenden Befehl für ein automatisiertes Update aus

npm run update:deployed

Stoppen des Docker-Containers

npm run stop:deployed

Dies führt einfach docker compose -f ./deploy-compose.yml down aus

Starten des Docker-Containers

npm run start:deployed

Dies führt einfach docker compose -f ./deploy-compose.yml up -d aus.

Aktive Docker-Container überprüfen

docker ps

Sie können manuell ohne die Skripte aktualisieren, falls Probleme auftreten.

docker compose -f ./deploy-compose.yml down
# Linux/Mac
docker images -a | grep "librechat" | awk '{print $3}' | xargs docker rmi
 
# Windows (PowerShell)
docker images -a --filter "reference=registry.librechat.ai/danny-avila/librechat*" --format "{{.ID}}" | ForEach-Object { docker rmi $_ }
docker images -a --filter "reference=ghcr.io/danny-avila/librechat*" --format "{{.ID}}" | ForEach-Object { docker rmi $_ }
git pull
docker compose -f ./deploy-compose.yml pull
docker compose -f ./deploy-compose.yml up

Teil IV: Bearbeiten der NGINX-Datei (für benutzerdefinierte Domains und erweiterte Konfigurationen)

Falls Sie die NGINX-Datei aus irgendeinem Grund bearbeiten möchten, beispielsweise um Ihren Server auf eine benutzerdefinierte Domain zu verweisen, verwenden Sie Folgendes:

npm run stop:deployed
nano client/nginx.conf

Ich werde dich nicht durch die Einrichtung einer benutzerdefinierten Domain oder andere Änderungen an NGINX führen; du kannst dir den Cloudflare guide, den Traefik guide oder den NGINX guide ansehen, um mit benutzerdefinierten Domains zu beginnen.

Ich werde dir jedoch zeigen, was du auf der LibreChat-Seite für eine benutzerdefinierte Domain mit diesem Setup bearbeiten musst.

Da NGINX standardmäßig als Proxy-Pass verwendet wird, bearbeite ich nur Folgendes:

# before
server_name localhost;
 
# after
server_name custom.domain.com;

Hinweis: Dies funktioniert, weil die Datei deploy-compose.yml standardmäßig NGINX verwendet, im Gegensatz zur Hauptdatei docker-compose.yml. Wie immer können Sie die Compose-Dateien nach Bedarf konfigurieren.

Übertrage diese Änderungen nun auf einen separaten Branch:

# create a new branch
# example: git checkout -b edit
git checkout -b <branchname>
 
# stage all file changes
git add .

Um Änderungen an einem git-Branch zu committen, müssen Sie sich bei git identifizieren. Dies können fiktive Werte sein, aber wenn Sie möchten, dass sie mit GitHub synchronisiert werden, falls Sie diesen Branch auf ein geforktes Repo von LibreChat pushen, verwenden Sie Ihre GitHub-E-Mail-Adresse.

# these values will work if you don't care what they are
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
 
# Now you can commit the change
git commit -m "edited nginx.conf"

Das Aktualisieren auf einem bearbeiteten Branch funktioniert jetzt etwas anders

npm run rebase:deployed

Du solltest nun alles bereit haben!

Warnung Sie werden Merge-Konflikte erleben, wenn Sie anfangen, den Branch maßgeblich zu bearbeiten. Dies wird nicht empfohlen, es sei denn, Sie wissen, was Sie tun.

Beachte, dass Änderungen am Code in dieser Umgebung nicht übernommen werden, da die compose-Datei die automatisch von GitHub erstellten Docker-Images abruft.

Teil V: Verwenden Sie das neueste stabile Release anstelle des neuesten Main-Branch

Standardmäßig lädt dieses Setup die neuesten Updates des main-Branches von LibreChat herunter. Wenn Sie stattdessen die neueste "stabile" Version bevorzugen, die durch die latest tags definiert ist, müssen Sie die deploy-compose.yml bearbeiten und Ihre Änderungen genau wie oben in Teil V committen. Beachten Sie, dass Sie in diesem Fall nicht sofort von den neuesten Funktionen profitieren werden, sobald diese verfügbar sind.

Lassen Sie uns deploy-compose.yml bearbeiten:

nano deploy-compose.yml

Ändere librechat-dev-api zu librechat-api:

image: registry.librechat.ai/danny-avila/librechat-api:latest

Stagen und committen Sie wie in Teil V, und schon sind Sie fertig!

Wie finden Sie diese Anleitung?