Logo

Je suis ravi de vous présenter mon dernier projet : le déploiement entièrement automatisé de LibreChat sur AWS EC2, une solution open-source disponible sur GitLab. Ce projet illustre mon savoir-faire en DevOps et cloud engineering, en s’appuyant sur Terraform pour une infrastructure as code (IaC), un script User-Data en Bash, une pipeline GitLab CI/CD, et une gestion centralisée via AWS Systems Manager (SSM). Résultat : une instance LibreChat opérationnelle en moins de 6 minutes, avec des coûts optimisés, une sécurité renforcée et une accessibilité maximale.

Ce projet va au-delà d’un simple déploiement technique : il incarne une vision d’automatisation avancée, pensée pour les experts comme pour les débutants. Voici comment j’ai conçu cette solution.

1. Une Architecture Cloud Optimisée et Reproductible

L’infrastructure repose sur Terraform, respectant les principes d’Infrastructure as Code pour une reproductibilité et une évolutivité sans faille. Les composants principaux incluent :

  • AWS VPC : Un réseau virtuel isolé pour sécuriser l’infrastructure.
  • Sous-réseaux publics : Trois subnets pour garantir une haute disponibilité.
  • Instance EC2 (t3a.small) : Héberge LibreChat, avec un choix entre Spot Instances ou On-Demand.
  • Internet Gateway : Permet une connexion sécurisée via HTTPS.
  • AWS SSM : Centralise la gestion des clés API et le suivi du déploiement.

Le déploiement sur EC2 est automatisé grâce à un script User-Data en Bash qui :

  • Installe les dépendances (Docker, Git, Node.js) et met à jour le système.
  • Clone LibreChat (version 0.7.7) et configure les fichiers .env et librechat.yaml.
  • Récupère les clés API depuis SSM de manière sécurisée.
  • Configure Nginx avec un certificat SSL auto-signé pour HTTPS.

Ce script, intégré via Terraform, inclut une gestion d’erreurs (set -e, trap 'error_handler' ERR) et une journalisation dans /var/log/user-data.log, assurant un processus fiable et traçable.

2. Sécurité et Gestion Centralisée des Clés API

La sécurité est une priorité. Les clés API (OpenAI, Mistral AI, Anthropic, Google) sont stockées dans AWS SSM Parameter Store, récupérées dynamiquement, et jamais codées en dur. Les mesures incluent :

  • HTTPS obligatoire : Certificat auto-signé avec redirection 80 vers 443.
  • Gestion des erreurs : Arrêt du script en cas de problème, avec mise à jour du statut dans SSM.
  • AWS Session Manager : Accès à l’instance sans SSH pour une sécurité accrue.

Cette approche garantit une gestion sécurisée et une supervision en temps réel.

3. Optimisation des Coûts avec les Spot Instances

Pour réduire les coûts, j’ai intégré les Spot Instances AWS, exploitant les ressources inutilisées. Une variable Terraform spot_enabled permet de choisir entre Spot et On-Demand, rendant le projet accessible à tous. Un script Python, check_spot.py, ajuste automatiquement les prix dans variables.tf pour une optimisation continue.

4. Une Pipeline CI/CD Complète avec GitLab

Une pipeline GitLab CI/CD (définie dans gitlab-ci.yml) orchestre le déploiement :

  • Terraform : Planifie et applique les changements d’infrastructure.
  • Gestion des instances : Démarre, arrête et vérifie l’état via SSM.
  • Clés API : Ajoute ou supprime les clés en toute sécurité.
  • Inscriptions : Contrôle les accès à LibreChat.

Le script export.sh simplifie les commandes, que ce soit en local ou via CI/CD, offrant une expérience fluide et professionnelle.

5. Accessibilité Globale grâce à l’Internationalisation

Pour atteindre un public mondial, le README est traduit en six langues (anglais, allemand, espagnol, japonais, coréen, chinois) grâce à mon script de traduction IA. Cela rend le projet inclusif et adapté à tous les utilisateurs.

6. Défis Techniques Relevés avec Succès

Adapter LibreChat 0.7.6 a nécessité des ajustements précis :

  • Support Mistral : Mise à jour de librechat.yaml pour mistral-large-latest.
  • Nginx : Correction des directives SSL pour HTTP/2.
  • Spot/On-Demand : Gestion flexible via Terraform.

Ces défis ont été surmontés avec des tests rigoureux et une documentation détaillée.

7. Pourquoi Ce Projet Sort du Lot

Ce projet se distingue par :

  • Automatisation complète : Tout est scripté, de l’infra à l’installation.
  • Optimisation : Coûts réduits et performance accrue.
  • Sécurité : Gestion centralisée et HTTPS par défaut.
  • Accessibilité : Documentation multilingue et options simples.

Il reflète mes compétences en Architecture AWS, DevOps, cloud et scripting, ainsi que ma passion pour l’open-source.

Découvrez et Participez !

Explorez ce projet sur GitLab, testez-le, et partagez vos retours. Que vous soyez expert ou novice, ce projet est pour vous. Contribuez pour le faire grandir !

Contact : contact@jls42.org

À propos de moi : Je suis Julien LS, passionné d’architecture cloud AWS, de DevOps, d’IA et d’automatisation. Ce projet s’inscrit dans la lignée de mes travaux comme BabelFish AI. Retrouvez-moi sur GitLab.