我很高兴向您展示我的最新项目:在 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 Instances 或 On-Demand。
- Internet 网关:允许通过 HTTPS 进行安全连接。
- AWS SSM:集中管理 API 密钥并跟踪部署。
EC2 上的部署通过一个 Bash 编写的 User-Data 脚本实现自动化,该脚本会:
- 安装依赖(Docker、Git、Node.js)并更新系统。
- 克隆 LibreChat(版本 0.7.7)并配置文件
.env和librechat.yaml。 - 以安全方式从 SSM 获取 API 密钥。
- 为 HTTPS 使用自签名证书配置 Nginx。
该脚本通过 Terraform 集成,包含错误处理(set -e、trap '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