搜索

在 AWS EC2 上自动化部署 LibreChat:创新的 DevOps 解决方案

在 AWS EC2 上自动化部署 LibreChat:创新的 DevOps 解决方案

我很高兴向您展示我的最新项目:在 AWS EC2 上对 LibreChat 进行的完全自动化部署,这是一个开源解决方案,已发布在 GitLab。该项目展示了我在 DevOps云工程 方面的能力,基于 Terraform 实现基础设施即代码(IaC)、一个以 Bash 编写的 User-Data 脚本、GitLab CI/CD 流水线,以及通过 AWS Systems Manager (SSM) 的集中化管理。结果:LibreChat 实例在不到 6 分钟内可运行,同时实现了成本优化、强化的安全性和最大化的可访问性。

该项目超越了单纯的技术部署:它体现了一种面向专家和初学者的高级自动化理念。以下是我如何设计该解决方案。

1. 优化且可复现的云架构

基础设施基于 Terraform,遵循 基础设施即代码 的原则,以实现无缝的可复现性和可扩展性。主要组件包括:

  • AWS VPC:用于保护基础设施的隔离虚拟网络。
  • 公有子网:三个子网以保证高可用性。
  • EC2 实例 (t3a.small):承载 LibreChat,可选择 Spot InstancesOn-Demand
  • Internet 网关:允许通过 HTTPS 进行安全连接。
  • AWS SSM:集中管理 API 密钥并跟踪部署。

EC2 上的部署通过一个 Bash 编写的 User-Data 脚本实现自动化,该脚本会:

  • 安装依赖(Docker、Git、Node.js)并更新系统。
  • 克隆 LibreChat(版本 0.7.7)并配置文件 .envlibrechat.yaml
  • 以安全方式从 SSM 获取 API 密钥。
  • 为 HTTPS 使用自签名证书配置 Nginx。

该脚本通过 Terraform 集成,包含错误处理(set -etrap 'error_handler' ERR)以及在 /var/log/user-data.log 中的日志记录,确保过程可靠且可追溯。

2. 安全性与 API 密钥的集中管理

安全是首要任务。API 密钥(OpenAI、Mistral AI、Anthropic、Google)存储在 AWS SSM Parameter Store 中,动态检索,绝不硬编码。所采取的措施包括:

  • 强制 HTTPS:自签名证书并将 80 重定向到 443。
  • 错误处理:出现问题时停止脚本,并在 SSM 中更新状态。
  • AWS Session Manager:无需 SSH 即可访问实例,提高安全性。

该方法保证了安全管理和实时监控。

3. 使用 Spot Instances 的成本优化

为降低成本,我集成了 AWS 的 Spot Instances,利用未使用的资源。一个 Terraform 变量 spot_enabled 允许在 Spot 与 On-Demand 之间切换,使该项目面向所有用户可用。一个 Python 脚本 check_spot.py 会在 variables.tf 中自动调整价格,以实现持续优化。

4. 使用 GitLab 的完整 CI/CD 管道

一个 GitLab CI/CD 流水线(在 gitlab-ci.yml 中定义)协调部署:

  • Terraform:规划并应用基础设施更改。
  • 实例管理:通过 SSM 启动、停止并检查状态。
  • API 密钥:安全地添加或删除密钥。
  • 注册:控制对 LibreChat 的访问。

脚本 export.sh 简化了命令操作,无论是本地还是通过 CI/CD,都提供了流畅且专业的体验。

5. 通过国际化实现全球可访问性

为了面向全球用户,README 已通过我的 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@jls42.org

关于我:我是 Julien LS,热衷于 AWS 云架构、DevOps、人工智能和自动化。该项目延续了我的其它工作,例如 BabelFish AI。在 GitLab 找到我。

本文件已使用 gpt-5-mini 模型从 fr 版本翻译为 zh 语言。有关翻译过程的更多信息,请参阅 https://gitlab.com/jls42/ai-powered-markdown-translator