Docker (Linux Jarak Jauh)
Instruksi ini dirancang bagi seseorang yang memulai dari nol untuk Instalasi Docker di server Ubuntu jarak jauh
Untuk menggunakan panduan ini, Anda memerlukan komputer jarak jauh atau VM yang telah di-deploy. Meskipun Anda dapat menggunakan panduan ini dengan instalasi lokal, perlu diingat bahwa panduan ini awalnya ditulis untuk deployment cloud.
โ ๏ธ Panduan ini awalnya dirancang untuk Digital Ocean, jadi Anda mungkin perlu memodifikasi instruksi untuk platform lain, namun gagasan utamanya tetap tidak berubah.
Bagian I: Menginstal Docker dan Dependensi Lainnya:
Ada banyak cara untuk mengatur Docker pada sistem Linux. Saya akan memandu Anda melalui cara terbaik dan yang direkomendasikan berdasarkan panduan ini.
Perlu dicatat bahwa cara "Terbaik" untuk instalasi Docker di Ubuntu tidak berarti cara yang "tercepat" atau "termudah". Cara tersebut berarti cara terbaik untuk menginstalnya demi manfaat jangka panjang (yaitu pembaruan yang lebih cepat, patch keamanan, dll.).
1. Perbarui dan Instal Dependensi Docker
Pertama, mari kita perbarui daftar paket kita dan instal dependensi Docker yang diperlukan.
sudo apt updateKemudian, gunakan perintah berikut untuk menginstal dependensi atau paket prasyarat.
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-releaseCatatan Instalasi
- Masukkan "Y" untuk semua prompt terminal [Y/n] (ya/tidak) di sepanjang panduan ini.
- Setelah prompt [Y/n] yang pertama, Anda akan mendapatkan layar ungu pertama dari beberapa layar yang meminta untuk memulai ulang layanan.
- Setiap kali ini terjadi, Anda dapat dengan aman menekan ENTER untuk memilih opsi default yang sudah terpilih:
- Jika sewaktu-waktu konsol droplet Anda terputus, lakukan hal berikut lalu lanjutkan kembali dari bagian terakhir yang Anda kerjakan:
- Akses kembali konsol seperti yang ditunjukkan di atas
- Beralihlah ke pengguna yang Anda buat dengan
su - <yourusername>
2. Tambahkan Repositori Docker ke Sumber APT
Meskipun menginstal Docker Engine dari repositori Ubuntu lebih mudah, menambahkan repositori resmi docker memberikan pembaruan yang lebih cepat. Oleh karena itu, ini adalah metode yang direkomendasikan.
Pertama, mari kita ambil kunci GPG yang diperlukan untuk terhubung ke repositori Docker. Untuk itu, gunakan perintah berikut.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgSelanjutnya, tambahkan repositori ke daftar sumber. Meskipun Anda juga dapat menambahkannya secara manual, perintah di bawah ini akan melakukannya secara otomatis untuk Anda.
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/nullPerintah di atas akan secara otomatis mengisi nama kode rilis Anda (jammy untuk 22.04, focal untuk 20.04, dan bionic untuk 18.04).
Terakhir, segarkan kembali paket Anda.
sudo apt updateJika Anda lupa menambahkan kunci GPG, maka langkah di atas akan gagal dengan pesan kesalahan. Jika tidak, mari kita lanjutkan dengan menginstal Docker di Ubuntu.
3. Install Docker
Apa perbedaan antara docker.io dan docker-ce?
docker.io adalah paket docker yang ditawarkan oleh beberapa distribusi Linux populer (contohnya Ubuntu/Debian). Di sisi lain, docker-ce adalah paket docker dari repositori resmi Docker. Biasanya docker-ce lebih mutakhir dan lebih disarankan.
Sekarang kita akan menginstal docker-ce (dan bukan paket docker.io)
sudo apt install docker-ceLayar ungu berarti tekan ENTER. :)
Direkomendasikan: Anda harus memastikan pengguna yang dibuat telah ditambahkan ke grup docker agar penggunaan perintah berjalan lancar:
sudo usermod -aG docker $USERSekarang mari kita mulai ulang sistem untuk memastikan semuanya berjalan dengan baik.
sudo rebootSetelah melakukan reboot, jika menggunakan konsol droplet peramban, Anda dapat mengeklik muat ulang dan menunggu untuk masuk kembali ke konsol.
Pengingat: Setiap kali Anda melakukan reboot dengan sudo reboot, Anda harus beralih ke pengguna yang Anda siapkan sebelumnya dengan su - <yourusername>.
4. Verifikasi bahwa Docker Berjalan di Ubuntu
Ada banyak cara untuk memeriksa apakah Docker sedang berjalan di Ubuntu. Salah satu caranya adalah dengan menggunakan perintah berikut:
sudo systemctl status dockerAnda seharusnya melihat output yang bertuliskan active (running) untuk statusnya.
Keluar dari log ini dengan menekan CTRL (atau CMD) + C.
5. Install Docker Compose
Karena kita sudah menambahkan repositori resmi Docker pada langkah 2, menginstal Docker Compose sangat mudah menggunakan plugin Compose resmi:
sudo apt install docker-compose-pluginVerifikasi instalasi:
docker compose versionCatatan: Docker Compose v2 menggunakan perintah
docker compose(tanpa tanda hubung) sebagai penggantidocker-composeversi lama. Semua perintah dalam panduan ini menggunakan sintaks modern.
6. Sebagai bagian dari panduan ini, saya sarankan Anda telah menginstal git dan npm:
Meskipun secara teknis tidak diwajibkan, memiliki git dan npm akan membuat proses instalasi/pembaruan menjadi sangat mudah:
sudo apt install git nodejs npmMunculkan baris-baris matriks.
Anda dapat memastikan paket-paket ini telah berhasil diinstal dengan perintah berikut:
git --version
node -v
npm -vCatatan: ini mungkin menginstal versi Node.js dan npm yang lama. Jika Anda menjalankan LibreChat secara langsung di host, gunakan Node.js
v24.16.0dengan npmv11.16.0. Untuk panduan berbasis Docker ini, versi Node.js pada host tidak berpengaruh karena LibreChat berjalan di dalam container.
Oke, sekarang setelah Anda menyiapkan Droplet, Anda akan menyiapkan aplikasinya itu sendiri
Bagian II: Pengaturan LibreChat
1. Clone repositori
Dari baris perintah droplet (sebagai pengguna Anda, bukan root):
# clone down the repository
git clone https://github.com/danny-avila/LibreChat.git
# enter the project directory
cd LibreChat/2. Buat file Konfigurasi dan Lingkungan LibreChat
File Konfigurasi (librechat.yaml)
Selanjutnya, kita membuat file konfigurasi LibreChat, yang juga dikenal sebagai librechat.yaml, yang memungkinkan penyesuaian pengaturan aplikasi serta endpoint kustom.
Terlepas dari apakah Anda ingin menyesuaikan aplikasi lebih lanjut atau tidak, hal ini diperlukan untuk file deploy-compose.yml yang kita gunakan, sehingga kita dapat membuatnya dengan nilai minimum yang diperlukan untuk memulai:
nano librechat.yamlAnda akan masuk ke layar editor, dan Anda dapat menempelkan kode berikut:
# 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: trueKeluar dari editor dengan CTRL + X, lalu Y untuk menyimpan, dan ENTER untuk mengonfirmasi.
Validasi Konfigurasi
LibreChat akan keluar dengan error (kode keluar 1) jika file librechat.yaml Anda mengandung kesalahan validasi. Perilaku fail-fast ini memastikan masalah konfigurasi terdeteksi lebih awal saat deployment.
Sebelum melakukan deployment, validasi konfigurasi Anda menggunakan YAML Validator. Jika pipeline CI/CD Anda menjalankan server, proses tersebut akan gagal dengan cepat jika konfigurasi tidak valid, sehingga mencegah deployment dengan pengaturan yang salah konfigurasi.
File Environment (.env)
Nilai default sudah cukup untuk membantu Anda memulai dan menjalankan aplikasi, sehingga Anda dapat memberikan kredensial Anda dari aplikasi web.
# Copies the example file as your global env file
cp .env.example .envNamun, sangat disarankan agar Anda menyesuaikan nilai "secret" dari nilai default-nya untuk keamanan tambahan. Log startup API akan memberikan peringatan jika Anda tidak melakukannya.
Untuk kenyamanan, Anda dapat menjalankan ini untuk menghasilkan nilai Anda sendiri:
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=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418Jika Anda ingin menyediakan kredensial apa pun untuk digunakan oleh semua pengguna instans Anda, Anda harus menambahkannya saat Anda masih mengedit file ini:
OPENAI_API_KEY=sk-yourKeySeperti sebelumnya, keluar dari editor dengan CTRL + X, lalu Y untuk menyimpan, dan ENTER untuk mengonfirmasi.
Selesai!
Namun, untuk konfigurasi menyeluruh, Anda harus mengedit file .env Anda sesuai kebutuhan, dan bacalah komentar di dalam file tersebut serta sumber daya di bawah ini.
# if editing the .env file
nano .envIni adalah salah satu variabel env yang perlu diperhatikan. Ini menonaktifkan pendaftaran eksternal, jika Anda ingin mengaturnya setelah Anda membuat akun.
ALLOW_REGISTRATION=falseSumber Daya:
3. Jalankan Docker
# should already be running, but just to be safe
sudo systemctl start docker
# confirm docker is running
docker infoSekarang kita dapat memulai kontainer aplikasi. Untuk pertama kalinya, kita akan menggunakan perintah lengkap dan nantinya kita dapat menggunakan perintah singkat.
sudo docker compose -f ./deploy-compose.yml up -dAnda aman untuk menutup terminal jika diinginkan -- aplikasi Docker akan terus berjalan.
Catatan: ini menggunakan file compose khusus yang dioptimalkan untuk lingkungan yang dideploy ini. Jika Anda menginginkan konfigurasi lebih lanjut di sini, Anda harus memeriksa file deploy-compose.yml dan Dockerfile.multi untuk melihat bagaimana keduanya disiapkan. Kami tidak mem-build image di lingkungan ini karena RAM tidak mencukupi untuk melakukannya dengan benar. Sebagai gantinya, kami menarik image dev-api terbaru dari LibreChat, yang secara otomatis di-build setelah setiap push ke main.
Jika Anda sedang menyiapkan domain untuk digunakan dengan LibreChat, file compose ini menggunakan file nginx yang terletak di client/nginx.conf. Petunjuk mengenai hal ini ada di bawah pada bagian V.
4. Setelah aplikasi berjalan, Anda dapat mengaksesnya di http://yourserverip
Kembali ke halaman droplet untuk mendapatkan ip server Anda, salin, dan tempel ke browser Anda!
Daftar, masuk, dan nikmati LibreChat Anda sendiri yang dihosting secara pribadi dan jarak jauh :)
Bagian III: Memperbarui LibreChat
Saya telah membuat langkah ini cukup mudah, asalkan semua hal di atas telah terinstal dengan sukses dan Anda belum mengubah riwayat git.
Catatan: Jika Anda sedang mengerjakan branch yang telah disunting, dengan commit Anda sendiri, misalnya, seperti dengan perubahan pada client/nginx.conf, Anda harus memeriksa config/deployed-update.js untuk menjalankan beberapa perintah secara manual sesuai keinginan Anda. Lihat bagian V untuk informasi lebih lanjut mengenai hal ini.
Jalankan perintah berikut untuk pembaruan otomatis
npm run update:deployedMenghentikan container Docker
npm run stop:deployedIni hanya menjalankan
docker compose -f ./deploy-compose.yml down
Memulai kontainer Docker
npm run start:deployedIni hanya menjalankan
docker compose -f ./deploy-compose.yml up -d
Periksa kontainer Docker yang aktif
docker psAnda dapat melakukan pembaruan secara manual tanpa skrip jika Anda mengalami kendala.
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 upBagian IV: Mengedit file NGINX (untuk domain kustom dan konfigurasi tingkat lanjut)
Jika Anda ingin mengedit file NGINX karena alasan apa pun, seperti mengarahkan server Anda ke domain kustom, gunakan langkah berikut:
npm run stop:deployednano client/nginx.confSaya tidak akan memandu Anda melalui pengaturan domain kustom atau perubahan lain pada NGINX, Anda dapat melihat panduan Cloudflare, panduan Traefik, atau panduan NGINX untuk membantu Anda memulai dengan domain kustom.
Namun, saya akan menunjukkan kepada Anda apa yang perlu disunting di sisi LibreChat untuk domain kustom dengan pengaturan ini.
Karena NGINX digunakan sebagai proxy pass secara default, saya hanya mengedit bagian berikut:
# before
server_name localhost;
# after
server_name custom.domain.com;Catatan: ini berfungsi karena file deploy-compose.yml menggunakan NGINX secara default, tidak seperti file docker-compose.yml utama. Seperti biasa, Anda dapat mengonfigurasi file compose sesuai kebutuhan Anda.
Sekarang lakukan commit perubahan ini ke branch terpisah:
# create a new branch
# example: git checkout -b edit
git checkout -b <branchname>
# stage all file changes
git add .Untuk melakukan commit perubahan ke branch git, Anda perlu mengidentifikasi diri Anda di git. Nilai-nilai ini bisa berupa nilai palsu, namun jika Anda ingin nilai tersebut tersinkronisasi dengan GitHub, seandainya Anda melakukan push branch ini ke repo forked dari LibreChat, gunakan email GitHub Anda.
# 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"Memperbarui pada branch yang telah diedit sekarang akan bekerja sedikit berbeda
npm run rebase:deployedSemuanya sudah siap!
Peringatan Anda akan mengalami konflik penggabungan (merge conflicts) jika Anda mulai mengubah cabang secara signifikan dan hal ini tidak disarankan kecuali Anda memahami apa yang Anda lakukan.
Perlu dicatat bahwa setiap perubahan pada kode di lingkungan ini tidak akan tercermin karena file compose menarik image Docker yang dibangun secara otomatis oleh GitHub
Bagian V: Gunakan Rilis Stabil Terbaru alih-alih Cabang Utama (Main Branch) Terbaru
Secara default, pengaturan ini akan menarik pembaruan terbaru ke branch utama LibreChat. Jika Anda lebih memilih rilis "stabil" terbaru, yang ditentukan oleh latest tags, Anda perlu mengedit deploy-compose.yml dan melakukan commit pada perubahan Anda persis seperti di atas pada Bagian V. Perlu diketahui bahwa Anda tidak akan mendapatkan fitur terbaru segera setelah dirilis jika Anda melakukan hal tersebut.
Mari kita edit deploy-compose.yml:
nano deploy-compose.ymlUbah librechat-dev-api menjadi librechat-api:
image: registry.librechat.ai/danny-avila/librechat-api:latestLakukan staging dan commit seperti pada Bagian V, dan Anda sudah siap!
Bagaimana panduan ini?