Devex

Devex

🚀 DevEx – 开源云集成开发环境平台

DevEx 是一个开源的云开发环境平台,能让你在浏览器中随时随地运行全功能的、基于容器的开发环境,就像在本地一样。它还提供 AI 辅助和安全的沙箱功能,借助 Kubernetes、WebSocket 和 GoLang 实现可扩展的 REPL 会话。

🚀 快速开始

DevEx 是一个开源平台,可创建基于云的开发环境(REPLs),其使用体验与本地环境无异,但你可以在任何时间、任何地点通过浏览器访问。它具有高度的灵活性,你可以使用自己喜欢的技术栈进行编码,通过 SSH 连接,或者通过我们的 MCP 服务器与 AI 代理运行会话。此外,它还支持安全地沙箱化 AI 生成的代码,让你在隔离的环境中测试实际更改。与 Gitpod 或 E2B 不同,DevEx 轻量级、可自托管,并且从一开始就是为生产环境设计的,拥有以开发者为中心的 CLI、无缝的 AI 集成以及基于 Kubernetes 的原生设计,可实现无限扩展。

📣 想添加自己的 REPL 模板?很简单! 👉 阅读贡献指南 即可开始。

✨ 主要特性

  • 🔐 GitHub OAuth 认证
  • 🪄 通过核心 API 创建、启动、停止、删除 REPLs
  • 💾 基于 S3 的文件持久化
  • 📦 每个 REPL 的 Kubernetes 部署(动态)
  • 📡 基于 WebSocket 的编辑器和终端
  • 🧹 用于清理和同步的临时容器
  • 🔒 通过 Let's Encrypt 和 Cert Manager 实现 HTTPS 和 TLS
  • 🎨 美观的 Next.js + Tailwind 前端

⚙️ 工作原理

graph TB
User[👤 用户] --> Web[🌐 前端网页
React/Next.js 应用程序] Web --> Core[🔧 核心后端
• 用户认证
• REPL 管理
• S3 集成
• K8s 编排] Core --> S3[(🗄️ S3 存储
用户名/REPL ID/
├── 模板/
└── 用户文件/)] subgraph K8sCluster["☸️ Kubernetes 集群"] direction TB IngressController[🚪 Ingress NGINX 控制器
流量路由] CertManager[🔒 Cert 管理器
TLS 证书管理] subgraph ReplResources["📦 每个 REPL 的资源"] Deployment[🚀 部署
REPL 容器实例] Service[🔗 服务
内部网络访问] Ingress[🌍 入口
外部访问路由] end subgraph Pod["🏠 REPL Pod"] MainContainer[🐳 运行容器
• WebSocket 服务器
• 文件操作
• PTY/终端访问
• 代码执行] EphemeralContainer[⚡ 临时容器
文件同步回 S3
🔄 清理过程] end Deployment --> Pod Service --> Pod Ingress --> Service IngressController --> Ingress end Core --> K8sCluster Core -.->|创建资源
部署 → 服务 → 入口| ReplResources Web -.->|🔌 WebSocket 连接
• 文件管理
• 终端访问
• 实时协作| MainContainer Core -.->|📁 复制模板
到用户目录| S3 EphemeralContainer -.->|💾 同步文件回
清理前| S3 MainContainer -.->|📂 加载文件
会话开始时| S3

🌀 会话生命周期

sequenceDiagram
participant U as 用户
participant W as 前端网页
participant C as 核心服务
participant K as Kubernetes
participant S as S3 存储
participant R as 运行容器

U->>W: 创建新 REPL
W->>C: POST /repl/create
C->>S: 创建用户目录
复制模板文件 U->>W: 启动会话 W->>C: POST /repl/start C->>K: 创建部署
服务和入口 K->>R: 初始化容器 R->>S: 下载文件 R->>W: WebSocket 连接 Note over U,R: 开发会话激活 U->>R: 通过 WebSocket 进行文件操作 R->>R: 实时文件编辑 U->>W: 关闭会话 W->>C: POST /repl/stop C->>K: 注入临时容器 K->>S: 上传修改后的文件 C->>K: 删除资源

🔩 关键组件

前端

  • 基于 Next.js + Tailwind CSS 构建
  • 支持 GitHub OAuth 登录
  • 提供文件树、编辑器和终端的图形用户界面
  • 包含用于与运行器交互的 WebSocket 钩子

后端 API

  • 采用 Go 语言编写
  • 处理用户认证、S3 操作、Kubernetes 部署和清理
  • 使用 Redis 进行 REPL 会话状态跟踪
  • 📄 详细架构和部署步骤请参阅 core/README.md

REPL 运行时容器

  • 轻量级 Go 服务器
  • 提供以下功能的 WebSocket API:
    • 文件树和文件内容访问
    • 终端(PTY)会话
  • 📄 事件列表和包内部详情请参阅 runner/README.md

Kubernetes 引导和 TLS

  • 包含:
    • Ingress-NGINX 配置
    • cert-manager + Let’s Encrypt 实现自动 TLS
  • 📄 完整设置说明请参阅 k8s/README.md

  • 在创建 REPL 时复制的基础文件夹(如 Node.js、Python)
  • 特定语言的 Docker 化脚手架
  • 📦 想添加自己的模板?请参阅 贡献指南

🧱 基础设施

  • ☸️ 用于 REPL Pod 的 Kubernetes 集群
  • 🔒 用于 TLS 的 Cert Manager + Let’s Encrypt
  • 🗃️ 用于持久化的 S3 兼容存储
  • 🐳 用于运行时环境的 Docker 镜像
  • ⚙️ 用于内存会话跟踪的 Redis

📦 部署流程

  1. 用户登录并创建 REPL
  2. core/ 将模板复制到 S3 上的 用户名/REPL ID/ 目录
  3. core/ 在 Kubernetes 中部署 Pod、服务和入口
  4. runner/ 通过 WebSocket 连接并提供文件系统和终端服务
  5. 会话结束时:
  • 临时容器将更新后的文件上传到 S3
  • 清理所有 K8s 资源

💻 技术栈

层次 技术栈
前端 Next.js、Tailwind、WebSockets
后端 GoLang(Echo/Fiber)、Redis、S3 SDK
运行器 GoLang + PTY + WebSocket
编排 Kubernetes、Docker、Docker Swarm
网络 Ingress NGINX + cert-manager
认证 GitHub OAuth

📄 各组件文档

📚 如需更深入的实现细节:

  • – 后端 README.md
  • – 运行器 WebSocket README.md
  • – Kubernetes + TLS 设置
  • – 前端 README.md

🧠 构建原因

“这个项目是我深入研究云基础设施、DevOps 和全栈工程的成果,它是一个实际应用的体现。” — Parth Kapoor

🌐 演示与链接

🤝 贡献

本项目正在积极开发中。如果你想贡献模板、修复问题或添加功能,请从这里开始 👉 CONTRIBUTING.md。欢迎提交拉取请求、提出建议和反馈!

📜 许可证

本项目采用 MIT 许可证。

  • 0 关注
  • 0 收藏,23 浏览
  • system 提出于 2025-10-06 01:27

相似服务问题

相关AI产品