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

Docker (Uzak Linux)

Bu talimatlar, uzak bir Ubuntu sunucusunda Docker Kurulumu için sıfırdan başlayan birine yöneliktir

Bu kılavuzu kullanabilmek için dağıtılmış bir uzak bilgisayara veya VM'ye ihtiyacınız vardır. Bu kılavuzu yerel bir kurulumla da kullanabilseniz de, orijinal olarak bulut dağıtımı için yazıldığını unutmayın.

⚠️ Bu kılavuz orijinal olarak Digital Ocean için tasarlanmıştır, bu nedenle diğer platformlar için talimatları değiştirmeniz gerekebilir, ancak temel fikir değişmeden kalır.

Bölüm I: Docker ve Diğer Bağımlılıkların Kurulumu:

Linux sistemlerinde Docker kurulumu yapmanın birçok yolu vardır. Bu rehberi temel alarak size en iyi ve önerilen yöntemi adım adım göstereceğim.

Ubuntu Docker kurulumu için "En iyi" yolun "en hızlı" veya "en kolay" anlamına gelmediğini unutmayın. Bu, uzun vadeli fayda (örneğin; daha hızlı güncellemeler, güvenlik yamaları vb.) için kurulumun en iyi yolu olduğu anlamına gelir.

1. Docker Bağımlılıklarını Güncelleyin ve Yükleyin

İlk olarak, paket listemizi güncelleyelim ve gerekli Docker bağımlılıklarını kuralım.

sudo apt update

Ardından, bağımlılıkları veya ön koşul paketlerini yüklemek için aşağıdaki komutu kullanın.

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

Kurulum Notları

  • Bu kılavuz boyunca tüm [Y/n] (evet/hayır) terminal istemleri için "Y" girin.
  • İlk [Y/n] isteminden sonra, servisleri yeniden başlatmanızı isteyen birkaç mor ekrandan ilkini göreceksiniz.
    • Bu her gerçekleştiğinde, varsayılan ve halihazırda seçili olan seçenekler için güvenle ENTER tuşuna basabilirsiniz:

image

  • Eğer herhangi bir noktada droplet konsolunuzun bağlantısı kesilirse, aşağıdakileri yapın ve ardından kaldığınız yerden devam edin:
    • Yukarıda belirtildiği gibi konsola tekrar erişin
    • Switch to the user you created with su - <yourusername>

2. Docker Deposunu APT Kaynaklarına Ekleme

Docker Engine'i Ubuntu depolarından yüklemek daha kolay olsa da, resmi docker deposunu eklemek size daha hızlı güncellemeler sağlar. Bu nedenle önerilen yöntem budur.

İlk olarak, Docker deposuna bağlanmak için gereken GPG anahtarını alalım. Bunun için aşağıdaki komutu kullanın.

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

Ardından, depoyu kaynaklar listesine ekleyin. Bunu manuel olarak da ekleyebilseniz de, aşağıdaki komut bunu sizin için otomatik olarak yapacaktır.

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

Yukarıdaki komut, sürüm kod adınızı (22.04 için jammy, 20.04 için focal ve 18.04 için bionic) otomatik olarak dolduracaktır.

Son olarak, paketlerinizi tekrar yenileyin.

sudo apt update

GPG anahtarını eklemeyi unutursanız, yukarıdaki adım bir hata mesajıyla başarısız olur. Aksi takdirde, Ubuntu üzerinde Docker kurulumuna devam edelim.

3. Docker Kurulumu

docker.io ve docker-ce arasındaki fark nedir?

docker.io, bazı popüler Linux dağıtımları (örneğin Ubuntu/Debian) tarafından sunulan docker paketidir. Öte yandan docker-ce, resmi Docker deposundan gelen docker paketidir. Genellikle docker-ce daha günceldir ve tercih edilir.

Şimdi docker-ce paketini (docker.io paketini değil) kuracağız

sudo apt install docker-ce

Mor ekran, ENTER tuşuna basmanız gerektiği anlamına gelir. :)

Önerilen: komutların sorunsuz kullanımı için oluşturulan kullanıcının docker grubuna eklendiğinden emin olmalısınız:

sudo usermod -aG docker $USER

Şimdi her şeyin yolunda olduğundan emin olmak için sistemi yeniden başlatalım.

sudo reboot

Yeniden başlattıktan sonra, tarayıcı droplet konsolunu kullanıyorsanız, yeniden yükle (reload) düğmesine tıklayabilir ve konsola geri dönmek için bekleyebilirsiniz.

image

Hatırlatma: sudo reboot ile yeniden başlattığınız her seferde, daha önce ayarladığınız kullanıcıya su - <yourusername> komutuyla geçiş yapmalısınız.

4. Docker'ın Ubuntu üzerinde çalıştığını doğrulayın

Ubuntu üzerinde Docker'ın çalışıp çalışmadığını kontrol etmenin birçok yolu vardır. Bir yöntem aşağıdaki komutu kullanmaktır:

sudo systemctl status docker

Durum için active (running) yazan bir çıktı görmelisiniz.

image

CTRL (veya CMD) + C tuşlarına basarak bu günlükten çıkın.

5. Docker Compose Kurulumu

  1. adımda Docker'ın resmi deposunu zaten eklediğimiz için, resmi Compose eklentisini kullanarak Docker Compose kurulumu oldukça basittir:
sudo apt install docker-compose-plugin

Kurulumu doğrulayın:

docker compose version

Not: Docker Compose v2, eski docker-compose yerine docker compose komutunu (tire işareti olmadan) kullanır. Bu kılavuzdaki tüm komutlar modern sözdizimini kullanmaktadır.

6. Bu rehberin bir parçası olarak, git ve npm'in yüklü olmasını öneriyorum:

Teknik olarak zorunlu olmasa da, git ve npm araçlarına sahip olmak kurulumu/güncellemeyi çok kolaylaştıracaktır:

sudo apt install git nodejs npm

Matrix satırlarını başlatın.

Bu paketlerin başarıyla yüklendiğini aşağıdakilerle doğrulayabilirsiniz:

git --version
node -v
npm -v

image

Not: bu işlem eski Node.js ve npm sürümlerini yükleyebilir. LibreChat'i doğrudan ana makinede çalıştırıyorsanız, npm v11.16.0 ile Node.js v24.16.0 kullanın. Bu Docker tabanlı kılavuz için, LibreChat konteynerler içinde çalıştığından ana makinedeki Node.js sürümü önemli değildir.

Tamam, artık Droplet'i kurduğunuza göre, şimdi uygulamanın kendisini kuracaksınız


Bölüm II: LibreChat Kurulumu

1. Depoyu klonlayın

droplet komut satırından (root değil, kendi kullanıcınız olarak):

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

# enter the project directory
cd LibreChat/

2. LibreChat Yapılandırma ve Ortam dosyalarını oluşturun

Config (librechat.yaml) Dosyası

Next, we create the LibreChat Config file, AKA librechat.yaml, allowing for customization of the app's settings as well as custom endpoints.

Uygulamayı daha fazla özelleştirip özelleştirmek istemediğinizden bağımsız olarak, kullandığımız deploy-compose.yml dosyası için bu gereklidir, bu yüzden başlatmak için en temel değerlere sahip bir tane oluşturabiliriz:

nano librechat.yaml

Düzenleyici ekranına gireceksiniz ve aşağıdakileri yapıştırabilirsiniz:

# 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

CTRL + X ile düzenleyiciden çıkın, ardından kaydetmek için Y ve onaylamak için ENTER tuşuna basın.

Yapılandırma Doğrulama

librechat.yaml dosyanız doğrulama hataları içeriyorsa LibreChat bir hata ile (çıkış kodu 1) kapanacaktır. Bu hızlı hata (fail-fast) davranışı, yapılandırma sorunlarının dağıtımın erken aşamalarında yakalanmasını sağlar.

Dağıtım yapmadan önce, YAML Validator kullanarak yapılandırmanızı doğrulayın. CI/CD hattınız sunucuyu başlatıyorsa, geçersiz yapılandırmalarda hızlı bir şekilde hata vererek yanlış yapılandırılmış ayarlarla dağıtım yapılmasını önleyecektir.

Ortam (.env) Dosyası

Varsayılan değerler, uygulamayı başlatıp çalıştırmanız ve kimlik bilgilerinizi web uygulaması üzerinden sağlamanız için yeterlidir.

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

Ancak, ek güvenlik için "secret" değerlerini varsayılan değerlerinden değiştirmeniz şiddetle tavsiye edilir. API başlangıç günlükleri, bunu yapmadığınız takdirde sizi uyaracaktır.

Kolaylık olması açısından, kendi değerlerinizi oluşturmak için bunu çalıştırabilirsiniz:

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

Örneğinizin tüm kullanıcılarının kullanması için herhangi bir kimlik bilgisi sağlamak isterseniz, bu dosyayı düzenlemeye devam ederken bunları eklemelisiniz:

OPENAI_API_KEY=sk-yourKey

Daha önce olduğu gibi, düzenleyiciden çıkmak için CTRL + X, ardından kaydetmek için Y ve onaylamak için ENTER tuşlarına basın.

İşte bu kadar!

Ancak kapsamlı bir yapılandırma için .env dosyanızı gerektiği şekilde düzenlemeli ve dosya içindeki yorumları ve aşağıdaki kaynakları mutlaka okumalısınız.

# if editing the .env file
nano .env

Bu, dikkat etmeniz gereken env değişkenlerinden biridir. Hesabınızı oluşturduktan sonra ayarlamak isterseniz, bu değişken harici kayıtları devre dışı bırakır.

ALLOW_REGISTRATION=false

Kaynaklar:

3. Docker'ı başlatın

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

# confirm docker is running
docker info

Artık uygulama kapsayıcısını başlatabiliriz. İlk seferinde tam komutu kullanacağız, daha sonra ise kısaltılmış bir komut kullanabiliriz.

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

image

İsterseniz terminali kapatabilirsiniz; Docker uygulaması çalışmaya devam edecektir.

Not: bu, bu dağıtılmış ortam için optimize edilmiş özel bir compose dosyası kullanmaktadır. Burada daha fazla yapılandırma isterseniz, nasıl kurulduklarını görmek için deploy-compose.yml ve Dockerfile.multi dosyalarını incelemelisiniz. Bu ortamda görüntüyü (image) oluşturmuyoruz çünkü bunu düzgün bir şekilde yapmak için yeterli RAM bulunmuyor. Bunun yerine, main dalına yapılan her push işleminden sonra otomatik olarak oluşturulan en son librechat dev-api görüntüsünü çekiyoruz.

LibreChat ile kullanılacak bir alan adı ayarlıyorsanız, bu compose dosyası client/nginx.conf konumunda bulunan nginx dosyasını kullanmaktadır. Bununla ilgili talimatlar aşağıda V. bölümde yer almaktadır.

4. Uygulama çalışmaya başladığında, http://yourserverip adresinden erişebilirsiniz

Sunucu IP adresinizi almak için droplet sayfasına geri dönün, kopyalayın ve tarayıcınıza yapıştırın!

image

Kaydolun, giriş yapın ve kendi özel barındırdığınız, uzak LibreChat'inizin keyfini çıkarın :)

image

image

Bölüm III: LibreChat'i Güncelleme

Yukarıdakilerin tümü başarıyla kurulduysa ve git geçmişini düzenlemediyseniz, bu adımı oldukça zahmetsiz hale getirdim.

Not: Eğer kendi commit'lerinizle düzenlenmiş bir dal üzerinde çalışıyorsanız, örneğin client/nginx.conf dosyasındaki düzenlemeler gibi, bazı komutları uygun gördüğünüz şekilde manuel olarak çalıştırmak için config/deployed-update.js dosyasını incelemelisiniz. Bununla ilgili daha fazla bilgi için V. bölüme bakın.

Otomatik bir güncelleme için aşağıdakini çalıştırın

npm run update:deployed

Docker konteynerini durdurma

npm run stop:deployed

Bu, basitçe docker compose -f ./deploy-compose.yml down komutunu çalıştırır.

Docker konteynerini başlatma

npm run start:deployed

Bu, basitçe docker compose -f ./deploy-compose.yml up -d komutunu çalıştırır.

Aktif Docker konteynerlerini kontrol et

docker ps

Sorun yaşamanız durumunda betikler olmadan manuel olarak güncelleme yapabilirsiniz.

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

Bölüm IV: NGINX dosyasını düzenleme (özel alan adları ve gelişmiş yapılandırmalar için)

Herhangi bir nedenle NGINX dosyasını düzenlemek isterseniz, örneğin sunucunuzu özel bir alan adına yönlendirmek gibi, aşağıdakini kullanın:

npm run stop:deployed
nano client/nginx.conf

Özel alan adı kurulumu veya NGINX üzerinde yapılacak diğer değişiklikler konusunda size rehberlik etmeyeceğim; özel alan adlarıyla çalışmaya başlamak için Cloudflare rehberine, Traefik rehberine veya NGINX rehberine göz atabilirsiniz.

Ancak, bu kurulumla özel bir alan adı için LibreChat tarafında nelerin düzenlenmesi gerektiğini size göstereceğim.

NGINX varsayılan olarak proxy pass olarak kullanıldığından, yalnızca aşağıdakileri düzenliyorum:

# before
server_name localhost;

# after
server_name custom.domain.com;

Not: Bu, ana docker-compose.yml dosyasının aksine deploy-compose.yml dosyasının varsayılan olarak NGINX kullanması nedeniyle çalışır. Her zaman olduğu gibi, compose dosyalarını ihtiyacınıza göre yapılandırabilirsiniz.

Şimdi bu değişiklikleri ayrı bir branch'e commit edin:

# create a new branch
# example: git checkout -b edit
git checkout -b <branchname>

# stage all file changes
git add .

Değişiklikleri bir git dalına (branch) işlemek için git üzerinde kendinizi tanıtmanız gerekecektir. Bunlar sahte değerler olabilir, ancak bu dalı LibreChat'in çatallanmış (forked) bir deposuna gönderirseniz GitHub ile senkronize olmalarını isterseniz, GitHub e-postanızı kullanın.

# 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"

Düzenlenmiş bir dalda güncelleme yapmak artık biraz daha farklı çalışacak

npm run rebase:deployed

Her şey hazır!

Uyarı Dal üzerinde önemli değişiklikler yapmaya başlarsanız birleştirme çakışmaları (merge conflicts) yaşarsınız ve ne yaptığınızı bilmiyorsanız bu önerilmez.

Bu ortamdaki kodda yapılan herhangi bir değişikliğin yansıtılmayacağını unutmayın; çünkü compose dosyası, GitHub tarafından otomatik olarak oluşturulan Docker imajlarını çekmektedir.

Bölüm V: En Son Ana Dal (Main Branch) Yerine En Son Kararlı Sürümü Kullanın

Varsayılan olarak bu kurulum, LibreChat'in ana dalındaki en son güncellemeleri çekecektir. Eğer en son etiketler tarafından tanımlanan en son "kararlı" sürümü tercih ederseniz, deploy-compose.yml dosyasını düzenlemeniz ve değişikliklerinizi Bölüm V'teki gibi tam olarak işlemeniz (commit) gerekecektir. Bunu yaparsanız, en son özelliklerden gelir gelmez yararlanamayacağınızı unutmayın.

deploy-compose.yml dosyasını düzenleyelim:

nano deploy-compose.yml

librechat-dev-api ifadesini librechat-api olarak değiştirin:

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

Bölüm V'teki gibi hazırlayın (stage) ve commit edin, işte bu kadar!

Bu rehber nasıl?