NGINX
Panduan langkah demi langkah untuk mengamankan deployment LibreChat Anda dengan Nginx sebagai reverse proxy dan HTTPS
Panduan ini mencakup langkah-langkah penting untuk mengamankan deployment LibreChat Anda dengan sertifikat SSL/TLS untuk HTTPS, menyiapkan Nginx sebagai reverse proxy, dan mengonfigurasi domain Anda.
Prasyarat
- Sebuah server cloud (contohnya AWS, Google Cloud, Azure, Digital Ocean).
- Nama domain yang terdaftar.
- Akses terminal ke server cloud Anda.
- Node.js
v24.16.0dan npmv11.16.0jika Anda menjalankan LibreChat secara langsung pada host.
Pengaturan Awal
Mengarahkan Domain Anda ke Server Anda
Sebelum melanjutkan perolehan sertifikat, arahkan domain Anda ke alamat IP server cloud Anda. Langkah ini bersifat mendasar dan harus dilakukan sebelum pengaturan sertifikat SSL karena waktu yang mungkin dibutuhkan oleh catatan DNS untuk menyebar secara global.
- Masuk ke panel kontrol registrar domain Anda.
- Buka pengaturan DNS.
- Buat
A recordyang mengarahkan domain Anda ke alamat IP server cloud Anda. - Tunggu hingga perubahan DNS tersebar secara global (Anda dapat memeriksanya dengan melakukan ping pada domain Anda:
ping your_domain.com).
Mendapatkan Sertifikat SSL/TLS
Untuk mengamankan aplikasi LibreChat Anda dengan HTTPS, Anda memerlukan sertifikat SSL/TLS. Let's Encrypt menawarkan sertifikat gratis:
-
Instal Certbot:
- Untuk Ubuntu:
sudo apt-get install certbot python3-certbot-nginx - Untuk CentOS:
sudo yum install certbot python2-certbot-nginx
- Untuk Ubuntu:
-
Dapatkan Sertifikat:
- Jalankan
sudo certbot --nginxuntuk mendapatkan dan menginstal sertifikat secara otomatis untuk Nginx. - Ikuti petunjuk di layar. Certbot akan meminta informasi dan menyelesaikan proses validasi.
- Setelah berhasil, Certbot akan menyimpan file sertifikat Anda.
- Jalankan
Mengatur Nginx sebagai Reverse Proxy
Nginx bertindak sebagai reverse proxy, meneruskan permintaan klien ke aplikasi LibreChat Anda. Terdapat dua opsi penerapan:
Opsi A: Menggunakan deploy-compose.yml Docker Compose (Direkomendasikan)
File deploy-compose.yml menyertakan kontainer Nginx dan menggunakan file client/nginx.conf untuk konfigurasi Nginx. Namun, karena sudo certbot --nginx mengekstrak sertifikat ke konfigurasi host, Anda perlu menduplikasi sertifikat tersebut ke kontainer Docker.
- Perbarui
client/nginx.confdengan domain dan jalur sertifikat Anda. - Perbarui
deploy-compose.ymldi bagianclientuntuk memasang (mount) file sertifikat dari host:
client:
# ...
volumes:
- ./client/nginx.conf:/etc/nginx/conf.d/default.conf
- /etc/letsencrypt/live/<your-domain>:/etc/letsencrypt/live/<your-domain>
- /etc/letsencrypt/archive/<your-domain>:/etc/letsencrypt/archive/<your-domain>
- /etc/letsencrypt/options-ssl-nginx.conf:/etc/letsencrypt/options-ssl-nginx.conf
- /etc/letsencrypt/ssl-dhparams.pem:/etc/letsencrypt/ssl-dhparams.pem- Hentikan instans yang sedang berjalan:
npm run stop:deployed - Lakukan commit perubahan tersebut ke branch Git yang baru.
- Lakukan rebase pada instance yang telah di-deploy:
npm run rebase:deployed
Opsi B: Deployment berbasis Host tanpa Docker
Jika Anda tidak menggunakan Docker, Anda dapat menginstal dan mengonfigurasi Nginx secara langsung pada host:
-
Instal Nginx:
- Ubuntu:
sudo apt-get install nginx - CentOS:
sudo yum install nginx
- Ubuntu:
-
Mulai Nginx:
sudo systemctl start nginx -
Buka file konfigurasi Nginx:
sudo nano /etc/nginx/sites-available/default -
Ganti konten file dengan yang berikut ini, pastikan untuk mengganti
your_domain.comdengan domain Anda danapp_portdengan port aplikasi Anda:
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:app_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}- Periksa konfigurasi Nginx:
sudo nginx -t - Muat ulang Nginx:
sudo systemctl reload nginx
Menjalankan Aplikasi
- Arahkan ke direktori aplikasi Anda:
cd LibreChat- Mulai aplikasi Anda menggunakan Docker Compose:
sudo docker compose -f ./deploy-compose.yml up -dMemperbarui sertifikat saat menggunakan nginx
Jika Anda mengatur nginx menggunakan Opsi A yang direkomendasikan di atas, gunakan langkah-langkah berikut untuk memperbarui sertifikat:
- Arahkan ke direktori aplikasi Anda
cd LibreChat- Hentikan container Docker Anda yang sedang berjalan
sudo docker compose -f ./deploy-compose.yml down -d- perbarui sertifikat
sudo certbot renew- Mulai ulang aplikasi Anda
sudo docker compose -f ./deploy-compose.yml up -dCatatan: certbot mungkin akan memulai ulang nginx pada host. Anda dapat menghentikannya dengan sudo pkill nginx
Web Application Firewall
Nginx dapat dikonfigurasi untuk bertindak sebagai web application firewall (WAF) dengan memanfaatkan OWASP Core Rule Set (CRS), yang menyediakan sekumpulan aturan tangguh untuk melindungi dari kerentanan dan serangan aplikasi web yang umum. Menggunakan OWASP CRS dengan Nginx dapat meningkatkan keamanan deployment LibreChat Anda dengan menambahkan lapisan perlindungan tambahan.
-
Instal OWASP CRS:
- Ubuntu:
sudo apt-get install nginx-modsecurity-crs
- Ubuntu:
-
Aktifkan ModSecurity di Nginx:
-
Buka file konfigurasi Nginx Anda (contohnya,
/etc/nginx/nginx.conf). -
Tambahkan baris berikut di dalam blok
http:modsecurity on; modsecurity_rules_file /usr/share/nginx/modsecurity-crs/nginx-modsecurity.conf;
-
-
Konfigurasikan OWASP CRS:
- Paket OWASP CRS biasanya menyertakan file konfigurasi (contohnya,
/etc/nginx/modsecurity.d/nginx-modsecurity.conf) di mana Anda dapat menyesuaikan berbagai pengaturan dan kumpulan aturan berdasarkan kebutuhan Anda.
- Paket OWASP CRS biasanya menyertakan file konfigurasi (contohnya,
-
Muat ulang Nginx:
sudo systemctl reload nginx
Dengan mengaktifkan OWASP CRS dalam konfigurasi Nginx Anda, Anda dapat memanfaatkan serangkaian aturan komprehensif yang disediakan oleh proyek tersebut untuk mendeteksi dan memitigasi berbagai kerentanan serta serangan aplikasi web, seperti SQL injection, cross-site scripting (XSS), remote file inclusion, dan banyak lagi.
Penyangga (Caching) dan Kompresi File Statis
LibreChat kini mendukung caching dan kompresi file statis secara native. Jika Anda menggunakan NGINX untuk menangani kompresi, Anda harus menonaktifkan kompresi di LibreChat untuk menghindari pemrosesan yang berlebihan. Anda dapat melakukannya dengan mengatur variabel lingkungan DISABLE_COMPRESSION ke true di konfigurasi LibreChat Anda.
# .env file
DISABLE_COMPRESSION=trueIni akan mencegah LibreChat melakukan kompresi pada file statis, sehingga memungkinkan NGINX untuk menangani kompresi dengan lebih efisien.
Untuk informasi lebih lanjut mengenai penanganan file statis di LibreChat, termasuk opsi caching, lihat dokumentasi Static File Handling.
Bagaimana panduan ini?