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

NGINX

Nginx를 리버스 프록시 및 HTTPS로 사용하여 LibreChat 배포를 보호하기 위한 단계별 가이드

이 가이드는 HTTPS를 위한 SSL/TLS 인증서로 LibreChat 배포를 보호하고, Nginx를 리버스 프록시로 설정하며, 도메인을 구성하는 필수 단계를 다룹니다.

필수 조건

  1. 클라우드 서버 (예: AWS, Google Cloud, Azure, Digital Ocean).
  2. 등록된 도메인 이름.
  3. 클라우드 서버에 대한 터미널 액세스.
  4. LibreChat을 호스트에서 직접 실행하는 경우 Node.js v24.16.0 및 npm v11.16.0이 필요합니다.

초기 설정

도메인을 서버로 연결하기

인증서 획득을 진행하기 전에 도메인을 클라우드 서버의 IP 주소로 연결하십시오. 이 단계는 필수적이며, DNS 레코드가 전 세계적으로 전파되는 데 시간이 걸릴 수 있으므로 SSL 인증서 설정보다 먼저 수행되어야 합니다.

  1. 도메인 등록 업체의 제어판에 로그인하세요.
  2. DNS 설정으로 이동합니다.
  3. 도메인을 클라우드 서버의 IP 주소로 가리키는 A record를 생성하세요.
  4. DNS 변경 사항이 전 세계적으로 전파될 때까지 기다리세요(도메인을 핑하여 확인할 수 있습니다: ping your_domain.com).

SSL/TLS 인증서 획득

LibreChat 애플리케이션을 HTTPS로 보호하려면 SSL/TLS 인증서가 필요합니다. Let's Encrypt에서 무료 인증서를 제공합니다:

  1. Certbot 설치:

    • Ubuntu의 경우: sudo apt-get install certbot python3-certbot-nginx
    • CentOS의 경우: sudo yum install certbot python2-certbot-nginx
  2. 인증서 획득:

    • sudo certbot --nginx를 실행하여 Nginx용 인증서를 자동으로 획득하고 설치하십시오.
    • 화면의 지침을 따르세요. Certbot이 정보를 요청하고 유효성 검사 과정을 완료할 것입니다.
    • 성공하면 Certbot이 인증서 파일을 저장합니다.

Nginx를 리버스 프록시로 설정하기

Nginx는 리버스 프록시 역할을 하며, 클라이언트 요청을 LibreChat 애플리케이션으로 전달합니다. 두 가지 배포 옵션이 있습니다:

deploy-compose.yml 파일에는 Nginx 컨테이너가 포함되어 있으며, Nginx 설정에 client/nginx.conf 파일을 사용합니다. 하지만 sudo certbot --nginx는 인증서를 호스트 설정으로 추출하므로, 해당 인증서를 Docker 컨테이너로 복제해야 합니다.

  1. client/nginx.conf 파일을 도메인 및 인증서 경로로 업데이트하세요.
  2. client 섹션의 deploy-compose.yml을 업데이트하여 호스트에서 인증서 파일을 마운트합니다:
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
  1. 실행 중인 인스턴스 중단: npm run stop:deployed
  2. 변경 사항을 새로운 Git 브랜치에 커밋하세요.
  3. 배포된 인스턴스 리베이스: npm run rebase:deployed

옵션 B: Docker를 사용하지 않는 호스트 기반 배포

Docker를 사용하지 않는 경우, 호스트에 Nginx를 직접 설치하고 구성할 수 있습니다:

  1. Nginx 설치:

    • Ubuntu: sudo apt-get install nginx
    • CentOS: sudo yum install nginx
  2. Nginx 시작: sudo systemctl start nginx

  3. Nginx 설정 파일을 엽니다: sudo nano /etc/nginx/sites-available/default

  4. 파일 내용을 다음으로 교체하고, your_domain.com을 귀하의 도메인으로, app_port를 애플리케이션의 포트로 변경하십시오:

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;
    }
}
  1. Nginx 설정을 확인하세요: sudo nginx -t
  2. Nginx 재로드: sudo systemctl reload nginx

애플리케이션 실행하기

  1. 애플리케이션 디렉토리로 이동합니다:
cd LibreChat
  1. Docker Compose를 사용하여 애플리케이션을 시작하세요:
sudo docker compose -f ./deploy-compose.yml up -d

nginx 사용 시 인증서 갱신

위의 권장 옵션 A를 사용하여 nginx를 설정한 경우, 다음 단계를 따라 인증서를 갱신하십시오:

  1. 애플리케이션 디렉토리로 이동하세요
cd LibreChat
  1. 실행 중인 Docker 컨테이너를 중지하세요
sudo docker compose -f ./deploy-compose.yml down -d
  1. 인증서 갱신
sudo certbot renew
  1. 애플리케이션을 다시 시작하세요
sudo docker compose -f ./deploy-compose.yml up -d

참고: certbot이 호스트의 nginx를 재시작할 수 있습니다. sudo pkill nginx 명령어로 이를 종료할 수 있습니다.

Web Application Firewall

Nginx는 OWASP Core Rule Set (CRS)을 활용하여 웹 애플리케이션 방화벽(WAF) 역할을 하도록 구성할 수 있으며, 이는 일반적인 웹 애플리케이션 취약점 및 공격으로부터 보호하기 위한 강력한 규칙 세트를 제공합니다. LibreChat 배포에 Nginx와 함께 OWASP CRS를 사용하면 추가적인 보호 계층을 더하여 보안을 강화할 수 있습니다.

  1. OWASP CRS 설치:

    • Ubuntu: sudo apt-get install nginx-modsecurity-crs
  2. Nginx에서 ModSecurity 활성화:

    • Nginx 설정 파일(예: /etc/nginx/nginx.conf)을 엽니다.

    • http 블록 내에 다음 줄을 추가하세요:

      modsecurity on;
      modsecurity_rules_file /usr/share/nginx/modsecurity-crs/nginx-modsecurity.conf;
  3. OWASP CRS 구성:

    • OWASP CRS 패키지에는 일반적으로 요구 사항에 따라 다양한 설정과 규칙 세트를 조정할 수 있는 구성 파일(예: /etc/nginx/modsecurity.d/nginx-modsecurity.conf)이 포함되어 있습니다.
  4. Nginx 다시 로드:

    • sudo systemctl reload nginx

Nginx 설정에서 OWASP CRS를 활성화하면, 프로젝트에서 제공하는 포괄적인 규칙 세트를 활용하여 SQL 인젝션, 크로스 사이트 스크립팅(XSS), 원격 파일 포함 등 다양한 웹 애플리케이션 취약점과 공격을 탐지하고 완화할 수 있습니다.

정적 파일 캐싱 및 압축

LibreChat은 이제 정적 파일 캐싱 및 압축을 기본적으로 지원합니다. NGINX를 사용하여 압축을 처리하는 경우, 중복 처리를 방지하기 위해 LibreChat에서 압축을 비활성화해야 합니다. LibreChat 구성에서 DISABLE_COMPRESSION 환경 변수를 true로 설정하여 이를 수행할 수 있습니다.

# .env file
DISABLE_COMPRESSION=true

이렇게 하면 LibreChat이 정적 파일을 압축하지 않게 되어, NGINX가 더 효율적으로 압축을 처리할 수 있습니다.

LibreChat에서의 정적 파일 처리 및 캐싱 옵션에 대한 자세한 내용은 Static File Handling 문서를 참조하세요.

이 가이드는 어떤가요?