저는 제 최신 프로젝트를 소개하게 되어 기쁩니다: LibreChat을 AWS EC2에 완전 자동으로 배포하는 프로젝트로, 오픈소스이며 GitLab에서 확인하실 수 있습니다. 이 프로젝트는 DevOps와 클라우드 엔지니어링 역량을 보여주며, 인프라를 코드로 관리하는 Terraform, Bash 기반의 User-Data 스크립트, GitLab CI/CD 파이프라인, 그리고 중앙 집중식 관리를 위한 **AWS Systems Manager (SSM)**를 활용합니다. 결과적으로 6분 이내에 동작하는 LibreChat 인스턴스를 제공하며, 비용 최적화, 보안 강화, 최대한의 접근성을 제공합니다.
이 프로젝트는 단순한 기술적 배포를 넘어 고도화된 자동화 비전을 구현했으며, 전문가와 초보자 모두를 위해 설계되었습니다. 다음은 제가 이 솔루션을 설계한 방법입니다.
1. 최적화되고 재현 가능한 클라우드 아키텍처
인프라는 Terraform을 기반으로 하며, Infrastructure as Code 원칙을 준수하여 재현성과 확장성을 보장합니다. 주요 구성요소는 다음과 같습니다:
- AWS VPC: 인프라를 보호하기 위한 격리된 가상 네트워크.
- 퍼블릭 서브넷: 고가용성을 보장하기 위한 세 개의 서브넷.
- EC2 인스턴스 (t3a.small): LibreChat 호스팅, Spot Instances 또는 On-Demand 선택 가능.
- Internet Gateway: HTTPS를 통한 안전한 연결 제공.
- AWS SSM: API 키의 중앙 관리와 배포 추적을 담당.
EC2로의 배포는 Bash 기반의 User-Data 스크립트로 자동화되며, 이 스크립트는 다음을 수행합니다:
- 의존성(Docker, Git, Node.js) 설치 및 시스템 업데이트.
- LibreChat(버전 0.7.7)을 클론하고
.env및librechat.yaml파일을 구성. - SSM에서 API 키를 안전하게 가져옴.
- HTTPS를 위해 자체 서명 SSL 인증서를 사용하여 Nginx 구성.
Terraform에 통합된 이 스크립트는 set -e, trap 'error_handler' ERR와 같은 오류 처리와 /var/log/user-data.log로의 로깅을 포함하여 신뢰 가능하고 추적 가능한 프로세스를 보장합니다.
2. 보안 및 중앙화된 API 키 관리
보안은 최우선입니다. OpenAI, Mistral AI, Anthropic, Google 등의 API 키는 AWS SSM Parameter Store에 저장되며 동적으로 조회되고 절대 코드에 하드코딩되지 않습니다. 적용한 조치는 다음과 같습니다:
- HTTPS 필수화: 포트 80에서 443으로 리다이렉트되는 자체 서명 인증서 사용.
- 오류 관리: 문제가 발생하면 스크립트 중단 및 SSM에 상태 업데이트.
- AWS Session Manager: SSH 없이 인스턴스에 접근하여 보안 강화.
이 접근 방식은 안전한 관리와 실시간 모니터링을 보장합니다.
3. Spot Instance를 통한 비용 최적화
비용 절감을 위해 AWS의 Spot Instances를 통합하여 유휴 자원을 활용했습니다. Terraform 변수 spot_enabled를 통해 Spot과 On-Demand 중 선택할 수 있어 누구나 프로젝트를 활용할 수 있습니다. 또한 check_spot.py라는 Python 스크립트가 variables.tf에서 가격을 자동으로 조정하여 지속적인 비용 최적화를 구현합니다.
4. GitLab을 이용한 완전한 CI/CD 파이프라인
GitLab CI/CD 파이프라인( gitlab-ci.yml에 정의)은 배포를 다음과 같이 오케스트레이션합니다:
- Terraform: 인프라 변경 사항을 계획(plan)하고 적용(apply).
- 인스턴스 관리: SSM을 통해 인스턴스 시작, 정지 및 상태 확인.
- API 키 관리: 키를 안전하게 추가하거나 삭제.
- 사용자 등록: LibreChat 접근 제어 관리.
스크립트 export.sh는 로컬이나 CI/CD에서의 명령어 사용을 단순화하여 매끄럽고 전문적인 사용자 경험을 제공합니다.
5. 국제화를 통한 전 세계 접근성
전 세계 사용자를 위해 README는 6개 언어(영어, 독일어, 스페인어, 일본어, 한국어, 중국어)로 번역되어 있으며, 이는 제 AI 기반 번역 스크립트로 생성되었습니다. 이를 통해 프로젝트는 포용적이고 다양한 사용자에게 적합합니다.
6. 성공적으로 해결한 기술적 도전 과제
LibreChat 0.7.6에 적응시키는 과정에서 세밀한 조정이 필요했습니다:
- Mistral 지원:
librechat.yaml을 업데이트하여mistral-large-latest구현. - Nginx: HTTP/2를 위한 SSL 지시문 수정.
- Spot/On-Demand: Terraform을 통한 유연한 관리.
이러한 과제들은 철저한 테스트와 상세한 문서로 해결되었습니다.
7. 이 프로젝트의 차별점
이 프로젝트는 다음과 같은 점에서 돋보입니다:
- 완전한 자동화: 인프라에서 설치까지 모든 과정이 스크립트화됨.
- 최적화: 비용 절감과 성능 향상.
- 보안: 중앙화된 관리와 기본 HTTPS 적용.
- 접근성: 다국어 문서와 간단한 옵션 제공.
이 프로젝트는 제 AWS 아키텍처, DevOps, 클라우드, 스크립팅 역량과 오픈소스에 대한 열정을 반영합니다.
확인하고 참여하세요!
이 프로젝트는 GitLab에서 확인하고 테스트하실 수 있으며, 피드백을 환영합니다. 전문가든 초보자든 이 프로젝트는 여러분을 위한 것입니다. 함께 기여하여 프로젝트를 성장시켜 주세요!
Contact : contact@jls42.org
제 소개 : 저는 Julien LS로, AWS 클라우드 아키텍처, DevOps, AI 및 자동화에 열정을 가지고 있습니다. 이 프로젝트는 제가 진행한 작업들 중 하나인 BabelFish AI와 같은 연장선에 있습니다. 제 활동은 GitLab에서도 확인하실 수 있습니다.
이 문서는 gpt-5-mini 모델을 사용하여 fr 버전에서 ko 언어로 번역되었습니다. 번역 과정에 대한 자세한 내용은 https://gitlab.com/jls42/ai-powered-markdown-translator 를 참조하세요.