Docker (Remote Linux)
Deze instructies zijn ontworpen voor iemand die vanaf nul begint met een Docker-installatie op een externe Ubuntu-server
Om deze handleiding te gebruiken, heb je een externe computer of VM nodig die is geïmplementeerd. Hoewel je deze handleiding kunt gebruiken met een lokale installatie, moet je er rekening mee houden dat deze oorspronkelijk is geschreven voor cloud-implementatie.
⚠️ Deze handleiding was oorspronkelijk ontworpen voor Digital Ocean, dus het kan zijn dat je de instructies voor andere platforms moet aanpassen, maar het basisidee blijft ongewijzigd.
Deel I: Docker en andere afhankelijkheden installeren:
Er zijn veel manieren om Docker op Linux-systemen in te stellen. Ik zal je door de beste en aanbevolen manier leiden gebaseerd op deze handleiding.
Let op: de "beste" manier voor een Docker-installatie op Ubuntu betekent niet de "snelste" of de "makkelijkste". Het betekent de beste manier om het te installeren voor langetermijnvoordelen (bijv. snellere updates, beveiligingspatches, enz.).
1. Update en installeer Docker-dependencies
Laten we eerst onze pakketlijst bijwerken en de vereiste Docker-afhankelijkheden installeren.
sudo apt updateGebruik vervolgens het volgende commando om de dependencies of vereiste pakketten te installeren.
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-releaseInstallatieopmerkingen
- Voer "Y" in voor alle [Y/n] (ja/nee) terminalprompts in deze volledige handleiding.
- Na de eerste [Y/n] prompt krijg je het eerste van een paar paarse schermen te zien waarin wordt gevraagd om services opnieuw op te starten.
- Elke keer dat dit gebeurt, kun je veilig op ENTER drukken voor de standaard, reeds geselecteerde opties:
- Als je droplet-console op enig moment de verbinding verbreekt, doe dan het volgende en ga daarna verder waar je gebleven was:
- Open de console opnieuw zoals hierboven aangegeven
- Schakel over naar de gebruiker die je hebt aangemaakt met
su - <yourusername>
2. Voeg Docker Repository toe aan APT Sources
Hoewel het installeren van Docker Engine vanuit Ubuntu-repositories eenvoudiger is, geeft het toevoegen van de officiële docker-repository je snellere updates. Daarom is dit de aanbevolen methode.
Laten we eerst de GPG-sleutel ophalen die nodig is om verbinding te maken met de Docker-repository. Gebruik hiervoor het volgende commando.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgVoeg vervolgens de repository toe aan de bronnenlijst. Hoewel je deze ook handmatig kunt toevoegen, zal het onderstaande commando dit automatisch voor je doen.
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/nullHet bovenstaande commando zal automatisch je release-codenaam invullen (jammy voor 22.04, focal voor 20.04 en bionic voor 18.04).
Vernieuw tot slot je pakketten opnieuw.
sudo apt updateAls je vergeet de GPG-sleutel toe te voegen, zal de bovenstaande stap mislukken met een foutmelding. Laten we anders doorgaan met het installeren van Docker op Ubuntu.
3. Installeer Docker
Wat is het verschil tussen docker.io en docker-ce?
docker.io is het docker-pakket dat wordt aangeboden door sommige populaire Linux-distributies (bijv. Ubuntu/Debian). docker-ce daarentegen is het docker-pakket uit de officiële Docker-repository. Doorgaans is docker-ce actueler en heeft het de voorkeur.
We zullen nu docker-ce installeren (en niet het docker.io pakket)
sudo apt install docker-cePaars scherm betekent druk op ENTER. :)
Aanbevolen: je moet ervoor zorgen dat de aangemaakte gebruiker wordt toegevoegd aan de docker groep voor naadloos gebruik van commando's:
sudo usermod -aG docker $USERLaten we nu het systeem opnieuw opstarten om er zeker van te zijn dat alles in orde is.
sudo rebootNa het opnieuw opstarten, als je de browser droplet console gebruikt, kun je op vernieuwen klikken en wachten om weer toegang te krijgen tot de console.
Herinnering: Elke keer dat je opnieuw opstart met sudo reboot, moet je overschakelen naar de gebruiker die je eerder hebt ingesteld met su - <yourusername>.
4. Controleer of Docker actief is op Ubuntu
Er zijn veel manieren om te controleren of Docker op Ubuntu draait. Eén manier is om het volgende commando te gebruiken:
sudo systemctl status dockerJe zou een output moeten zien die active (running) aangeeft voor de status.
Verlaat dit logboek door op CTRL (of CMD) + C te drukken.
5. Installeer Docker Compose
Aangezien we in stap 2 al de officiële repository van Docker hebben toegevoegd, is het installeren van Docker Compose eenvoudig met behulp van de official Compose plugin:
sudo apt install docker-compose-pluginControleer de installatie:
docker compose versionLet op: Docker Compose v2 gebruikt het
docker composecommando (zonder koppelteken) in plaats van het verouderdedocker-compose. Alle commando's in deze handleiding gebruiken de moderne syntaxis.
6. Als onderdeel van deze handleiding raad ik aan dat je git en npm hebt geïnstalleerd:
Hoewel dit technisch gezien niet vereist is, zullen git en npm het installeren/bijwerken zeer eenvoudig maken:
sudo apt install git nodejs npmStart de matrix-lijnen.
Je kunt bevestigen dat deze pakketten succesvol zijn geïnstalleerd met het volgende:
git --version
node -v
npm -vLet op: dit kan oude Node.js- en npm-versies installeren. Als je LibreChat rechtstreeks op de host draait, gebruik dan Node.js
v24.16.0met npmv11.16.0. Voor deze op Docker gebaseerde handleiding maakt de Node.js-versie van de host niet uit, omdat LibreChat binnen containers draait.
Oké, nu je de Droplet hebt ingesteld, ga je nu de app zelf instellen
Deel II: LibreChat instellen
1. Kloon de repo
Vanaf de droplet commandline (als jouw gebruiker, niet root):
# clone down the repository
git clone https://github.com/danny-avila/LibreChat.git
# enter the project directory
cd LibreChat/2. Maak LibreChat Config- en Environment-bestanden aan
Config (librechat.yaml) Bestand
Vervolgens maken we het LibreChat Config-bestand, ook wel librechat.yaml genoemd, waarmee aanpassing van de app-instellingen evenals aangepaste endpoints mogelijk is.
Of je de app nu verder wilt aanpassen of niet, het is vereist voor het deploy-compose.yml bestand dat we gebruiken, dus we kunnen er een aanmaken met de minimale waarde om te starten:
nano librechat.yamlJe komt in het editor-scherm terecht, waar je het volgende kunt plakken:
# 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: trueVerlaat de editor met CTRL + X, vervolgens Y om op te slaan, en ENTER om te bevestigen.
Configuratievalidatie
LibreChat zal afsluiten met een foutmelding (exit code 1) als uw librechat.yaml bestand validatiefouten bevat. Dit 'fail-fast' gedrag zorgt ervoor dat configuratieproblemen vroegtijdig worden opgemerkt tijdens de implementatie.
Voordat je implementeert, valideer je configuratie met behulp van de YAML Validator. Als je CI/CD-pipeline de server start, zal deze direct falen bij een ongeldige configuratie, wat implementaties met onjuist geconfigureerde instellingen voorkomt.
Omgevingsbestand (.env)
De standaardwaarden zijn voldoende om aan de slag te gaan en de app uit te voeren, waardoor je je inloggegevens vanuit de web-app kunt opgeven.
# Copies the example file as your global env file
cp .env.example .envHet wordt echter sterk aanbevolen om de "secret" waarden aan te passen vanaf hun standaardwaarden voor extra beveiliging. De API-opstartlogs zullen je waarschuwen als je dit niet doet.
Voor het gemak kun je dit uitvoeren om je eigen waarden te genereren:
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=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418Als je inloggegevens wilt verstrekken die alle gebruikers van je instantie kunnen gebruiken, moet je deze toevoegen terwijl je dit bestand nog aan het bewerken bent:
OPENAI_API_KEY=sk-yourKeyZoals voorheen, verlaat de editor met CTRL + X, daarna Y om op te slaan, en ENTER om te bevestigen.
Dat is alles!
Voor een grondige configuratie moet u echter uw .env bestand naar behoefte bewerken, en lees vooral de opmerkingen in het bestand en de onderstaande bronnen.
# if editing the .env file
nano .envDit is een van de .env variabelen waar je rekening mee moet houden. Hiermee schakel je externe aanmeldingen uit, voor het geval je dit wilt instellen nadat je je account hebt aangemaakt.
ALLOW_REGISTRATION=falseBronnen:
3. Start Docker
# should already be running, but just to be safe
sudo systemctl start docker
# confirm docker is running
docker infoNu kunnen we de app-container starten. Voor de eerste keer gebruiken we het volledige commando en later kunnen we een verkort commando gebruiken.
sudo docker compose -f ./deploy-compose.yml up -dHet is veilig om de terminal te sluiten als je dat wilt -- de Docker-app blijft op de achtergrond draaien.
Let op: dit maakt gebruik van een speciaal compose-bestand dat is geoptimaliseerd voor deze deployed omgeving. Als je hier meer configuratie wenst, moet je de bestanden deploy-compose.yml en Dockerfile.multi inspecteren om te zien hoe ze zijn opgezet. We bouwen de image niet in deze omgeving omdat er onvoldoende RAM beschikbaar is om dit correct te doen. In plaats daarvan halen we de nieuwste dev-api image van LibreChat op, die automatisch wordt gebouwd na elke push naar main.
Als je een domein instelt voor gebruik met LibreChat, gebruikt dit compose-bestand het nginx-bestand dat zich in client/nginx.conf bevindt. Instructies hiervoor staan hieronder in deel V.
4. Zodra de app draait, kun je deze openen op http://yourserverip
Ga terug naar de droplet-pagina om je server-ip te verkrijgen, kopieer deze en plak hem in je browser!
Meld je aan, log in en geniet van je eigen privé gehoste, externe LibreChat :)
Deel III: LibreChat bijwerken
Ik heb deze stap vrij eenvoudig gemaakt, mits alles hierboven succesvol is geïnstalleerd en je de git-geschiedenis niet hebt bewerkt.
Let op: Als je werkt aan een bewerkte branch met je eigen commits, bijvoorbeeld met wijzigingen aan client/nginx.conf, moet je config/deployed-update.js inspecteren om sommige commando's handmatig uit te voeren zoals je zelf passend vindt. Zie deel V voor meer informatie hierover.
Voer het volgende uit voor een automatische update
npm run update:deployedDe Docker container stoppen
npm run stop:deployedDit voert simpelweg
docker compose -f ./deploy-compose.yml downuit
De Docker-container starten
npm run start:deployedDit voert simpelweg
docker compose -f ./deploy-compose.yml up -duit
Controleer actieve Docker-containers
docker psJe kunt handmatig updaten zonder de scripts als je problemen ondervindt.
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 pulldocker compose -f ./deploy-compose.yml pulldocker compose -f ./deploy-compose.yml upDeel IV: Het NGINX-bestand bewerken (voor aangepaste domeinen en geavanceerde configuraties)
Mocht je om welke reden dan ook het NGINX-bestand willen bewerken, bijvoorbeeld om je server naar een aangepast domein te verwijzen, gebruik dan het volgende:
npm run stop:deployednano client/nginx.confIk zal je niet door het instellen van een aangepast domein of andere wijzigingen aan NGINX leiden; je kunt de Cloudflare-gids, de Traefik-gids of de NGINX-gids raadplegen om aan de slag te gaan met aangepaste domeinen.
Ik zal je echter laten zien wat je aan de kant van LibreChat moet aanpassen voor een aangepast domein met deze configuratie.
Aangezien NGINX standaard als proxy pass wordt gebruikt, pas ik alleen het volgende aan:
# before
server_name localhost;
# after
server_name custom.domain.com;Let op: dit werkt omdat het deploy-compose.yml bestand standaard gebruikmaakt van NGINX, in tegenstelling tot het hoofd-bestand docker-compose.yml. Zoals altijd kun je de compose-bestanden naar eigen inzicht configureren.
Commit deze wijzigingen nu naar een aparte branch:
# create a new branch
# example: git checkout -b edit
git checkout -b <branchname>
# stage all file changes
git add .Om wijzigingen naar een git-branch te committen, moet je jezelf identificeren in git. Dit kunnen fictieve waarden zijn, maar als je wilt dat ze synchroniseren met GitHub voor het geval je deze branch naar een fork van LibreChat pusht, gebruik dan je GitHub-e-mailadres.
# 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"Bijwerken op een bewerkte branch werkt nu een beetje anders
npm run rebase:deployedJe bent er helemaal klaar voor!
Waarschuwing Je zult merge-conflicten ervaren als je de branch aanzienlijk begint te bewerken en dit wordt niet aanbevolen, tenzij je weet wat je doet.
Let op dat eventuele wijzigingen in de code in deze omgeving niet zichtbaar zullen zijn, omdat het compose-bestand de Docker-images ophaalt die automatisch door GitHub zijn gebouwd.
Deel V: Gebruik de nieuwste stabiele release in plaats van de nieuwste main branch
Standaard haalt deze configuratie de laatste updates van de main branch van LibreChat op. Als je liever de laatste "stabiele" release gebruikt, die wordt bepaald door de latest tags, dan moet je deploy-compose.yml bewerken en je wijzigingen precies zoals hierboven in Deel V doorvoeren. Houd er rekening mee dat je op die manier niet direct profiteert van de nieuwste functies zodra ze beschikbaar zijn.
Laten we deploy-compose.yml bewerken:
nano deploy-compose.ymlWijzig librechat-dev-api naar librechat-api:
image: registry.librechat.ai/danny-avila/librechat-api:latestStage en commit zoals in Deel V, en je bent er helemaal klaar voor!
Hoe is deze gids?