NGINX
Nginx'i ters vekil sunucu ve HTTPS ile kullanarak LibreChat dağıtımınızı güvenli hale getirmeye yönelik adım adım kılavuz
Bu kılavuz, LibreChat dağıtımınızı HTTPS için bir SSL/TLS sertifikası ile güvence altına alma, Nginx'i ters vekil sunucu (reverse proxy) olarak ayarlama ve alan adınızı yapılandırma ile ilgili temel adımları kapsamaktadır.
Ön Koşullar
- Bir bulut sunucusu (örneğin, AWS, Google Cloud, Azure, Digital Ocean).
- Kayıtlı bir alan adı.
- Bulut sunucunuza terminal erişimi.
- LibreChat'i doğrudan ana makinede çalıştırıyorsanız Node.js
v24.16.0ve npmv11.16.0.
İlk Kurulum
Alan Adınızı Sunucunuza Yönlendirme
Sertifika alımına geçmeden önce, alan adınızı bulut sunucunuzun IP adresine yönlendirin. Bu adım temel bir gerekliliktir ve DNS kayıtlarının dünya genelinde yayılmasının zaman alabileceği göz önüne alındığında, SSL sertifikası kurulumundan önce gerçekleştirilmelidir.
- Alan adı kayıt kuruluşunuzun kontrol paneline giriş yapın.
- DNS ayarlarına gidin.
- Alan adınızı bulut sunucunuzun IP adresine yönlendiren bir
A recordoluşturun. - DNS değişikliklerinin küresel olarak yayılmasını bekleyin (alan adınıza ping atarak kontrol edebilirsiniz:
ping your_domain.com).
Bir SSL/TLS Sertifikası Edinin
LibreChat uygulamanızı HTTPS ile güvence altına almak için bir SSL/TLS sertifikasına ihtiyacınız olacaktır. Let's Encrypt ücretsiz sertifikalar sunmaktadır:
-
Certbot'u yükleyin:
- Ubuntu için:
sudo apt-get install certbot python3-certbot-nginx - CentOS için:
sudo yum install certbot python2-certbot-nginx
- Ubuntu için:
-
Sertifikayı Edinin:
- Nginx için sertifikayı otomatik olarak almak ve yüklemek için
sudo certbot --nginxkomutunu çalıştırın. - Ekranda çıkan talimatları izleyin. Certbot sizden bilgi isteyecek ve doğrulama işlemini tamamlayacaktır.
- Başarılı olduğunda, Certbot sertifika dosyalarınızı saklayacaktır.
- Nginx için sertifikayı otomatik olarak almak ve yüklemek için
Nginx'i Ters Vekil Sunucu (Reverse Proxy) Olarak Ayarlama
Nginx, bir ters vekil sunucu (reverse proxy) görevi görerek istemci isteklerini LibreChat uygulamanıza iletir. İki dağıtım seçeneği mevcuttur:
Seçenek A: deploy-compose.yml Docker Compose Kullanımı (Önerilen)
deploy-compose.yml dosyası bir Nginx kapsayıcısı içerir ve Nginx yapılandırması için client/nginx.conf dosyasını kullanır. Ancak, sudo certbot --nginx komutu sertifikayı ana makine yapılandırmasına çıkardığından, sertifikayı Docker kapsayıcılarına kopyalamanız gerekir.
client/nginx.confdosyasını alan adınız ve sertifika yollarınızla güncelleyin.clientbölümündekideploy-compose.ymldosyasını, sertifika dosyalarını ana bilgisayardan bağlayacak şekilde güncelleyin:
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- Çalışan herhangi bir örneği durdurun:
npm run stop:deployed - Değişiklikleri yeni bir Git dalına (branch) işleyin (commit).
- Dağıtılmış örneği yeniden temelleyin (rebase):
npm run rebase:deployed
Seçenek B: Docker Olmadan Ana Bilgisayar Tabanlı Dağıtım
Docker kullanmıyorsanız, Nginx'i doğrudan ana makineye yükleyip yapılandırabilirsiniz:
-
Nginx'i yükleyin:
- Ubuntu:
sudo apt-get install nginx - CentOS:
sudo yum install nginx
- Ubuntu:
-
Nginx'i başlatın:
sudo systemctl start nginx -
Nginx yapılandırma dosyasını açın:
sudo nano /etc/nginx/sites-available/default -
Dosya içeriğini aşağıdakilerle değiştirin;
your_domain.comkısmını kendi alan adınızla veapp_portkısmını uygulamanızın portuyla değiştirdiğinizden emin olun:
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;
}
}- Nginx yapılandırmasını kontrol edin:
sudo nginx -t - Nginx'i yeniden yükleyin:
sudo systemctl reload nginx
Uygulamayı Çalıştırma
- Uygulamanızın dizinine gidin:
cd LibreChat- Uygulamanızı Docker Compose kullanarak başlatın:
sudo docker compose -f ./deploy-compose.yml up -dnginx kullanırken sertifikaları yenileme
Yukarıdaki önerilen A Seçeneğini kullanarak nginx kurulumu yaptıysanız, sertifikaları yenilemek için şu adımları izleyin:
- Uygulamanızın dizinine gidin
cd LibreChat- Çalışan Docker konteynerlerinizi durdurun
sudo docker compose -f ./deploy-compose.yml down -d- sertifikaları yenile
sudo certbot renew- Uygulamanızı yeniden başlatın
sudo docker compose -f ./deploy-compose.yml up -dNot: certbot, ana bilgisayarın nginx'ini yeniden başlatabilir. sudo pkill nginx komutuyla onu sonlandırabilirsiniz.
Web Uygulaması Güvenlik Duvarı (WAF)
Nginx, yaygın web uygulaması güvenlik açıklarına ve saldırılarına karşı koruma sağlayan güçlü bir kural seti sunan OWASP Core Rule Set (CRS) kullanılarak bir web uygulaması güvenlik duvarı (WAF) görevi görecek şekilde yapılandırılabilir. OWASP CRS'i Nginx ile kullanmak, LibreChat dağıtımınıza ek bir koruma katmanı ekleyerek güvenliği artırabilir.
-
OWASP CRS'i yükleyin:
- Ubuntu:
sudo apt-get install nginx-modsecurity-crs
- Ubuntu:
-
Nginx'te ModSecurity'yi etkinleştirin:
-
Nginx yapılandırma dosyanızı açın (örneğin,
/etc/nginx/nginx.conf). -
httpbloğunun içine aşağıdaki satırları ekleyin:modsecurity on; modsecurity_rules_file /usr/share/nginx/modsecurity-crs/nginx-modsecurity.conf;
-
-
OWASP CRS yapılandırması:
- OWASP CRS paketi genellikle, gereksinimlerinize göre çeşitli ayarları ve kural kümelerini düzenleyebileceğiniz bir yapılandırma dosyası (örneğin,
/etc/nginx/modsecurity.d/nginx-modsecurity.conf) içerir.
- OWASP CRS paketi genellikle, gereksinimlerinize göre çeşitli ayarları ve kural kümelerini düzenleyebileceğiniz bir yapılandırma dosyası (örneğin,
-
Nginx'i yeniden yükleyin:
sudo systemctl reload nginx
Nginx yapılandırmanızda OWASP CRS'i etkinleştirerek, SQL enjeksiyonu, siteler arası betik çalıştırma (XSS), uzaktan dosya dahil etme ve daha fazlası gibi çeşitli web uygulaması güvenlik açıklarını ve saldırılarını tespit etmek ve azaltmak için proje tarafından sağlanan kapsamlı kural setinden yararlanabilirsiniz.
Statik Dosya Önbelleğe Alma ve Sıkıştırma
LibreChat artık statik dosya önbelleğe almayı ve sıkıştırmayı yerel olarak desteklemektedir. Sıkıştırma işlemini yönetmek için NGINX kullanıyorsanız, gereksiz işlem yükünden kaçınmak için LibreChat'te sıkıştırmayı devre dışı bırakmalısınız. Bunu, LibreChat yapılandırmanızda DISABLE_COMPRESSION ortam değişkenini true olarak ayarlayarak yapabilirsiniz.
# .env file
DISABLE_COMPRESSION=trueBu, LibreChat'in statik dosyaları sıkıştırmasını engelleyerek NGINX'in sıkıştırma işlemini daha verimli bir şekilde yönetmesini sağlayacaktır.
LibreChat'te statik dosya işleme ve önbelleğe alma seçenekleri hakkında daha fazla bilgi için Static File Handling belgelerine başvurun.
Bu rehber nasıl?