> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# VPC 部署概览

> 了解如何在虚拟私有云（VPC）中部署 Devin

<div id="overview">
  ## 概览
</div>

Devin 的 VPC 内部署方案允许在您的 VPC 中托管 Devin 的开发环境，从而使 Devin 的虚拟机能够访问公司防火墙后的专有资源。所支持的架构提供完全无状态的系统保证，这意味着在您的环境之外不会有任何数据静态存储/落盘。

您可以通过多种方式在您的环境中对 Devin 的访问进行细粒度控制，包括但不限于通过 SSO 或版本控制系统的访问控制来管理对您的服务或资源的访问。

<Card title="信任中心" icon="shield-check" href="https://trust.cognition.ai">
  如需更多信息和安全相关文档，请访问我们的信任中心。
</Card>

<div id="core-architecture">
  ## 核心架构
</div>

Devin 包含两个主要组件：

<div id="devins-devbox">
  ### Devin 的 DevBox
</div>

一个可自定义的开发环境，是 Devin 执行各项操作的场所。包含 shell、编辑器和浏览器功能，并部署在客户的 VPC 内。

<div id="devins-brain">
  ### Devin 的大脑
</div>

这是负责处理上下文片段并决定 Devin 每一步动作的核心智能系统，托管在 Cognition 的租户环境中。

<Frame>
  <img src="https://mintcdn.com/cognitionai/SST7qBOGO28X2sVc/images/devin-enterprise-architecture.png?fit=max&auto=format&n=SST7qBOGO28X2sVc&q=85&s=8aa23be761669d460e1c50c5636fdb38" alt="Devin Enterprise Architecture" width="2332" height="1152" data-path="images/devin-enterprise-architecture.png" />
</Frame>

<div id="deployment-specifications">
  ## 部署规格
</div>

<div id="infrastructure-requirements">
  ### 基础设施要求
</div>

<Note>
  **实例类型要求：**

  * **AWS**：i3 裸金属 EC2
  * **Azure**：安全类型为 standard 的 Lasv3 实例
</Note>

每个 Devin 会话都需要一个新的 VM。上述实例类型支持在 Devin 会话启动时按需创建 VM。请参阅 [AWS VPC Setup](/zh/enterprise/vpc/aws-setup) 了解每个实例的并发容量。

\*\*操作系统：\*\*Ubuntu 24.04

<div id="architecture">
  ### 架构
</div>

<Frame>
  <img src="https://mintcdn.com/cognitionai/k89q9Lsp7DOurdC0/images/tenant-diagram.png?fit=max&auto=format&n=k89q9Lsp7DOurdC0&q=85&s=68096596bee9b30361eea1a2420eaea4" alt="租户架构示意图" width="1764" height="1944" data-path="images/tenant-diagram.png" />
</Frame>

* Cognition 租户托管在 Azure 上
* \*\*端口：\*\*HTTPS/443（仅需允许从客户 VPC 发出的出站流量）
* 在 DevBox 启动时，会打开一个 WebSocket 并连接到 Devin 租户中的隔离容器
* 随后的所有交互都通过此连接进行
* 此架构默认支持后端会话隔离

<Warning>
  强烈建议为 Devin 在客户 VPC 内运行的实例提供访问互联网的权限
</Warning>

<div id="data-management">
  ## 数据管理
</div>

<div id="cognition-database">
  ### Cognition 数据库
</div>

* 仅存储元数据
* 包含哈希引用数据（会话 ID、事件 ID 等）

<div id="customer-databases">
  ### 客户数据库
</div>

客户数据分为两个存储位置：

1. **主客户数据库：**
   * 直接连接 Devin 的核心系统
   * 存储加密的会话日志和客户 Devin 数据

2. **辅助客户数据库：**
   * 连接到 VPC 内的实例
   * 存储 VM 快照，以便会话可以从快照启动

<Note>
  所有客户数据都使用自定义 KMS 密钥进行加密。所有数据库读写操作都通过原生 API 执行。
</Note>

<div id="secrets">
  ### Secrets
</div>

每个新会话都会创建一个隔离的 Devin Brain 容器，并授予其访问客户数据存储的权限。Secrets（机密信息）会在会话开始时被解密并加载为环境变量，随后再次加密。整个过程是以编程方式完成的。

<Info>
  在发送到前端之前，机密信息会被脱敏处理，并以 `[REDACTED SECRET]` 的形式显示。
</Info>

<div id="security">
  ## 安全
</div>

<div id="encryption">
  ### 加密
</div>

* 数据静态存储时采用 AES-256 加密
* 传输过程中使用 TLS 1.3 及以上版本加密

<div id="isolation">
  ### 隔离
</div>

* 每个会话使用独立的 Devin Brain 容器
* 对公共前端 API 使用 AWS WAF 防护

<div id="devbox-components">
  ## DevBox 组件
</div>

Devin 的机器上预装了以下内容：

1. **核心工具：** git、python、java、docker 等

2. **自定义组件：**
   * VS Code server
   * 用于交互式浏览器控制的 VNC server
   * Devin 功能所需的专有 `.py` 实用脚本

<Tip>
  你可以审计这些脚本，并根据需要精简默认安装的软件包。向你的 Cognition 代表请求 DevBox 设置脚本。
</Tip>

<div id="limitations">
  ## 局限性
</div>

<div id="technical-constraints">
  ### 技术限制
</div>

* 并发会话数量受裸金属实例容量限制
* 可通过预配更多基础实例对容量进行水平扩展
* 在低使用量期间，这些实例可能会被临时关机
* 云基础设施成本由客户自行承担

<div id="deployment-restrictions">
  ### 部署限制
</div>

<Warning>
  * 不支持客户自有 AMI。需要进行一次性手动配置机器
  * 不支持非 Linux 操作系统
</Warning>

<Note>
  ## DNS 配置

  Devin 实例的 DNS 配置需要正确设置，才能解析私有托管区域中的记录。如果你在解析私有记录时遇到 DNS 解析问题，请按照以下步骤操作。

  要使 Devin 实例能够解析私有托管区域中的记录：

  1. 更新 DNS 配置，使其使用 VPC DNS 解析器（.2 地址）而不是公共解析器。要获取该地址，请运行以下命令：

  ```
  aws ec2 describe-vpcs --vpc-id <VPC_ID> --query 'Vpcs[0].CidrBlock' --output text | awk -F/ '{split($1,a,"."); print a[1]"."a[2]"."a[3]".2"}'
  ```

  2. 编辑 systemd-resolved 配置文件：
     ```bash theme={null}
     sudo nano /etc/systemd/resolved.conf
     ```
  3. 将 DNS 条目替换为 VPC 的 .2 地址。
     ```bash theme={null}
     [Resolve]
     DNS={N.N.N.2}
     ```
  4. 重启 systemd-resolved 服务以应用更改：
     ```bash theme={null}
     sudo systemctl restart systemd-resolved
     ```

  此配置可确保 Devin 实例能够正确解析你托管区域中的公共 DNS 记录和私有记录。
</Note>
