10>10>
11> 자체 호스팅 환경은 Team 및 Enterprise 플랜에서 공개 베타 상태이며 기본적으로 비활성화되어 있습니다. 활성화 경로 및 제외 사항은 [가용성 및 제한 사항](#availability-and-limitations)을 참조하세요.11> 자체 호스팅 환경은 Team 및 Enterprise 플랜에서 공개 베타 상태이며 기본적으로 비활성화되어 있습니다. 활성화 경로 및 제외 사항은 [가용성 및 제한 사항](#availability-and-limitations)을 참조하세요.
12 12
13자체 호스팅 환경은 조직이 운영하는 인프라에서 Claude Code 클라우드 세션을 실행합니다. [클라우드 세션](/docs/ko/claude-code-on-the-web.md)은 개발자의 머신이 아닌 다른 곳에서 실행되는 모든 세션입니다. 개발자는 claude.ai, 모바일 및 데스크톱 앱, [`claude --cloud`](/docs/ko/claude-code-on-the-web#from-terminal-to-cloud)를 사용한 터미널, [클라우드 예약 작업](/docs/ko/routines.md)에서 이러한 세션을 시작합니다. 기본적으로 클라우드 세션은 Anthropic의 인프라에서 실행됩니다.13자체 호스팅 환경은 조직이 운영하는 인프라에서 Claude Code 클라우드 세션을 실행합니다. [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)은 개발자의 머신이 아닌 다른 곳에서 실행되는 모든 세션입니다. 개발자는 claude.ai, 모바일 및 데스크톱 앱, [`claude --cloud`](https://code.claude.com/docs/ko/claude-code-on-the-web#from-terminal-to-cloud)를 사용한 터미널, [클라우드 예약 작업](https://code.claude.com/docs/ko/routines.md)에서 이러한 세션을 시작합니다. 기본적으로 클라우드 세션은 Anthropic의 인프라에서 실행됩니다.
14 14
15자체 호스팅 환경에서는 동일한 세션이 네트워크 내부에서 실행됩니다. 개발자 경험은 [가용성 및 제한 사항](#availability-and-limitations)의 차이점과 배포 페이지의 [알려진 문제](/docs/ko/self-hosted-environments-deploy.md#known-issues-and-limitations)를 제외하고는 동일합니다.15자체 호스팅 환경에서는 동일한 세션이 네트워크 내부에서 실행됩니다. 개발자 경험은 [가용성 및 제한 사항](#availability-and-limitations)의 차이점과 배포 페이지의 [알려진 문제](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#known-issues-and-limitations)를 제외하고는 동일합니다.
16 16
17팀이 클라우드 세션을 사용하지 않으면 여기서 구성할 것이 없습니다: 터미널이나 IDE의 세션은 항상 개발자 자신의 머신에서 실행됩니다. Claude Code를 자신의 항상 켜져 있는 머신에서 실행하고 다른 디바이스에서 구동하려면 [원격 제어](/docs/ko/remote-control.md)를 사용하세요. 이는 Pro 및 Max 플랜에서도 사용 가능합니다. 설정할 준비가 되면 [빠른 시작](/docs/ko/self-hosted-environments-quickstart.md)으로 바로 이동하세요. 먼저 보안 태세를 검토하려면 [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy.md)부터 시작하세요. 이 페이지의 나머지 부분은 자체 호스팅이 어떻게 작동하는지와 언제 선택해야 하는지를 설명합니다.17팀이 클라우드 세션을 사용하지 않으면 여기서 구성할 것이 없습니다: 터미널이나 IDE의 세션은 항상 개발자 자신의 머신에서 실행됩니다. Claude Code를 자신의 항상 켜져 있는 머신에서 실행하고 다른 디바이스에서 구동하려면 [원격 제어](https://code.claude.com/docs/ko/remote-control.md)를 사용하세요. 이는 Pro 및 Max 플랜에서도 사용 가능합니다. 설정할 준비가 되면 [빠른 시작](https://code.claude.com/docs/ko/self-hosted-environments-quickstart.md)으로 바로 이동하세요. 먼저 보안 태세를 검토하려면 [프로덕션에 배포](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md)부터 시작하세요. 이 페이지의 나머지 부분은 자체 호스팅이 어떻게 작동하는지와 언제 선택해야 하는지를 설명합니다.
18 18
19## 자체 호스팅 환경이 작동하는 방식19## 자체 호스팅 환경이 작동하는 방식
20 20
24* **러너**: 네트워크 내부의 호스트에서 실행되는 프로그램입니다. 러너는 세션을 실행합니다. 개념은 자체 호스팅 CI 러너와 동일합니다.24* **러너**: 네트워크 내부의 호스트에서 실행되는 프로그램입니다. 러너는 세션을 실행합니다. 개념은 자체 호스팅 CI 러너와 동일합니다.
25* **세션**: 개발자가 시작한 하나의 Claude Code 작업입니다.25* **세션**: 개발자가 시작한 하나의 Claude Code 작업입니다.
26 26
27개발자가 클라우드 세션을 시작하면, 세션 시작 UI는 Anthropic 호스팅 환경과 조직이 생성한 환경을 나열하는 환경 선택기를 표시합니다. 조직의 환경을 선택하면, Anthropic의 제어 평면이 세션을 환경의 큐에 배치하고, 러너가 이를 요청하고, 개발자가 선택한 저장소를 복제하고, 호스트에서 Claude Code 프로세스를 시작하여 실행합니다. 러너는 구성한 자격 증명으로 git 호스트에 인증합니다. [git 구성](/docs/ko/self-hosted-environments-deploy.md#configure-git)에서 옵션을 다룹니다. 세션은 네트워크 내부에서 내부 서비스에 도달하며, 내부인 경우 git 호스트도 동일한 방식으로 도달합니다. Anthropic으로의 트래픽, 즉 큐 폴링, 세션의 이벤트 스트림, 그리고 기본적으로 모델 추론은 `api.anthropic.com`으로의 아웃바운드 HTTPS이며, 세션이 도달할 수 있는 추가 호스트의 짧은 목록은 [네트워크 요구 사항](/docs/ko/self-hosted-environments-deploy.md#network-requirements)에 있습니다. Anthropic은 절대 네트워크에 연결하지 않습니다.27개발자가 클라우드 세션을 시작하면, 세션 시작 UI는 Anthropic 호스팅 환경과 조직이 생성한 환경을 나열하는 환경 선택기를 표시합니다. 조직의 환경을 선택하면, Anthropic의 제어 평면이 세션을 환경의 큐에 배치하고, 러너가 이를 요청하고, 개발자가 선택한 저장소를 복제하고, 호스트에서 Claude Code 프로세스를 시작하여 실행합니다. 러너는 구성한 자격 증명으로 git 호스트에 인증합니다. [git 구성](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#configure-git)에서 옵션을 다룹니다. 세션은 네트워크 내부에서 내부 서비스에 도달하며, 내부인 경우 git 호스트도 동일한 방식으로 도달합니다. Anthropic으로의 트래픽, 즉 큐 폴링, 세션의 이벤트 스트림, 그리고 기본적으로 모델 추론은 `api.anthropic.com`으로의 아웃바운드 HTTPS이며, 세션이 도달할 수 있는 추가 호스트의 짧은 목록은 [네트워크 요구 사항](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#network-requirements)에 있습니다. Anthropic은 절대 네트워크에 연결하지 않습니다.
28 28
2929
30 30
31다이어그램의 두 Claude Code 상자는 세션 프로세스입니다: 한 러너가 동시에 두 세션을 실행하며, 구성된 용량까지입니다. 러너는 한 번에 하나의 [소유자](#key-concepts)를 제공하며 첫 번째 세션을 요청할 때 해당 소유자에게 잠깁니다. 따라서 체크아웃된 코드는 소유자 간에 혼합되지 않습니다. [러너 수명 주기](#runner-lifecycle)에서 규칙을 다룹니다.31다이어그램의 두 Claude Code 상자는 세션 프로세스입니다: 한 러너가 동시에 두 세션을 실행하며, 구성된 용량까지입니다. 러너는 한 번에 하나의 [소유자](#key-concepts)를 제공하며 첫 번째 세션을 요청할 때 해당 소유자에게 잠깁니다. 따라서 체크아웃된 코드는 소유자 간에 혼합되지 않습니다. [러너 수명 주기](#runner-lifecycle)에서 규칙을 다룹니다.
32 32
33러너를 직접 시작하고 계속 실행하거나, [자동 스케일링 오케스트레이터](/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)를 실행할 수 있습니다. 이는 호스팅하는 두 번째 프로세스로, 세션이 큐에 대기할 때 러너를 시작합니다. 각 러너는 작업이 완료되면 자동으로 종료됩니다. 어느 쪽이든, 환경을 한 번 설정하면 지원되는 모든 표면의 선택기에 나타납니다.33러너를 직접 시작하고 계속 실행하거나, [자동 스케일링 오케스트레이터](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)를 실행할 수 있습니다. 이는 호스팅하는 두 번째 프로세스로, 세션이 큐에 대기할 때 러너를 시작합니다. 각 러너는 작업이 완료되면 자동으로 종료됩니다. 어느 쪽이든, 환경을 한 번 설정하면 지원되는 모든 표면의 선택기에 나타납니다.
34 34
35## 가용성 및 제한 사항35## 가용성 및 제한 사항
36 36
37롤아웃을 계획하기 전에 다음을 확인하세요:37롤아웃을 계획하기 전에 다음을 확인하세요:
38 38
39* **플랜**: Team 및 Enterprise 조직을 위한 공개 베타입니다. 자체 호스팅 환경은 기본적으로 비활성화되어 있습니다. [소유자](/docs/ko/cloud-environments.md#organization-shared-environments)가 [**클라우드 환경** 관리 페이지](https://claude.ai/admin-settings/cloud-environments)에서 **자체 호스팅 환경 허용**을 켜야 하며, 이는 조직에 대해 [클라우드 세션](/docs/ko/claude-code-on-the-web.md)이 활성화되어 있어야 합니다.39* **플랜**: Team 및 Enterprise 조직을 위한 공개 베타입니다. 자체 호스팅 환경은 기본적으로 비활성화되어 있습니다. [소유자](https://code.claude.com/docs/ko/cloud-environments.md#organization-shared-environments)가 [**클라우드 환경** 관리 페이지](https://claude.ai/admin-settings/cloud-environments)에서 **자체 호스팅 환경 허용**을 켜야 하며, 이는 조직에 대해 [클라우드 세션](https://code.claude.com/docs/ko/claude-code-on-the-web.md)이 활성화되어 있어야 합니다.
40* **Zero Data Retention 및 HIPAA**: [Zero Data Retention](/docs/ko/zero-data-retention.md)이 활성화되어 있거나 [HIPAA 구성](/docs/ko/hipaa-setup.md)이 적용된 조직에서는 사용할 수 없습니다.40* **Zero Data Retention 및 HIPAA**: [Zero Data Retention](https://code.claude.com/docs/ko/zero-data-retention.md)이 활성화되어 있거나 [HIPAA 구성](https://code.claude.com/docs/ko/hipaa-setup.md)이 적용된 조직에서는 사용할 수 없습니다.
41* **모델 추론**: 러너가 [Amazon Bedrock 또는 Google Cloud의 Agent Platform으로 모델 요청을 보내도록](/docs/ko/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) 구성하지 않는 한 세션은 Anthropic API를 사용합니다. 두 경우 모두 세션 콘텐츠는 Anthropic으로 전송됩니다. 이렇게 구성된 러너에서는 claude.ai의 [서버 관리 설정](/docs/ko/server-managed-settings.md) 및 조직 정책이 세션에 적용되지 않습니다.41* **모델 추론**: 러너가 [Amazon Bedrock 또는 Google Cloud의 Agent Platform으로 모델 요청을 보내도록](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) 구성하지 않는 한 세션은 Anthropic API를 사용합니다. 두 경우 모두 세션 콘텐츠는 Anthropic으로 전송됩니다. 이렇게 구성된 러너에서는 claude.ai의 [서버 관리 설정](https://code.claude.com/docs/ko/server-managed-settings.md) 및 조직 정책이 세션에 적용되지 않습니다.
42* **사용 환경**: [claude.ai/code](https://claude.ai/code), 모바일 및 데스크톱 앱, [클라우드 예약 작업](/docs/ko/routines.md), 터미널에서 [`claude --cloud`](/docs/ko/claude-code-on-the-web#from-terminal-to-cloud) 또는 [`--environment` 디스패치](/docs/ko/self-hosted-environments-testing#run-the-test-loop)로 시작된 세션은 자체 호스팅 환경에서 실행될 수 있습니다. [Claude Tag](https://claude.com/docs/claude-tag/overview) 세션도 실행될 수 있지만, Claude는 아직 해당 세션에서 [Access 번들](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle)을 사용할 수 없습니다. [Claude Security](/docs/ko/claude-security.md) 및 [Code Review](/docs/ko/code-review.md) 세션은 아직 라우팅되지 않습니다. 이 두 사용 환경에 대한 지원은 별도로 제공될 예정입니다.42* **사용 환경**: [claude.ai/code](https://claude.ai/code), 모바일 및 데스크톱 앱, [클라우드 예약 작업](https://code.claude.com/docs/ko/routines.md), 터미널에서 [`claude --cloud`](https://code.claude.com/docs/ko/claude-code-on-the-web#from-terminal-to-cloud) 또는 [`--environment` 디스패치](https://code.claude.com/docs/ko/self-hosted-environments-testing#run-the-test-loop)로 시작된 세션은 자체 호스팅 환경에서 실행될 수 있습니다. [Claude Tag](https://claude.com/docs/claude-tag/overview) 세션도 실행될 수 있지만, Claude는 아직 해당 세션에서 [Access 번들](https://claude.com/docs/claude-tag/concepts/glossary#access-bundle)을 사용할 수 없습니다. [Claude Security](https://code.claude.com/docs/ko/claude-security.md) 및 [Code Review](https://code.claude.com/docs/ko/code-review.md) 세션은 아직 라우팅되지 않습니다. 이 두 사용 환경에 대한 지원은 별도로 제공될 예정입니다.
43* **저장소**: 세션은 GitHub에서 저장소를 체크아웃합니다. [GitHub 인증 옵션](/docs/ko/claude-code-on-the-web.md#github-authentication-options)을 참조하세요. GitHub Enterprise Server 호스트의 경우 해당 [네트워크 요구 사항](/docs/ko/github-enterprise-server.md#network-requirements)을 참조하세요.43* **저장소**: 세션은 GitHub에서 저장소를 체크아웃합니다. [GitHub 인증 옵션](https://code.claude.com/docs/ko/claude-code-on-the-web.md#github-authentication-options)을 참조하세요. GitHub Enterprise Server 호스트의 경우 해당 [네트워크 요구 사항](https://code.claude.com/docs/ko/github-enterprise-server.md#network-requirements)을 참조하세요.
44* **청구**: 자체 호스팅 환경의 세션은 Anthropic 호스팅 환경의 세션과 동일한 방식으로 조직의 Claude Code 사용량을 소비합니다.44* **청구**: 자체 호스팅 환경의 세션은 Anthropic 호스팅 환경의 세션과 동일한 방식으로 조직의 Claude Code 사용량을 소비합니다.
45 45
46## 자체 호스팅을 하는 이유46## 자체 호스팅을 하는 이유
68| 러너 | 사용자가 배포하는 장기 실행 프로세스입니다. 러너는 환경에 등록하고, 러너 토큰을 받은 다음, 세션을 폴링합니다. |68| 러너 | 사용자가 배포하는 장기 실행 프로세스입니다. 러너는 환경에 등록하고, 러너 토큰을 받은 다음, 세션을 폴링합니다. |
69| 세션 | claude.ai, 모바일 앱 또는 예약 작업이나 에이전트 같은 다른 Anthropic 사용 환경에서 시작된 하나의 Claude Code 작업입니다. 각 세션은 러너가 생성하는 자식 Claude Code 프로세스로 실행됩니다. |69| 세션 | claude.ai, 모바일 앱 또는 예약 작업이나 에이전트 같은 다른 Anthropic 사용 환경에서 시작된 하나의 Claude Code 작업입니다. 각 세션은 러너가 생성하는 자식 Claude Code 프로세스로 실행됩니다. |
70 70
71API 필드, 토큰 클레임, 메트릭 이름에서 환경은 `pool`로, 환경 ID는 `pool_id`로 나타납니다. [레퍼런스](/docs/ko/self-hosted-environments-reference.md)에서 deprecated된 `pool` 플래그 이름을 포함해 두 표기의 대응 관계를 확인할 수 있습니다.71API 필드, 토큰 클레임, 메트릭 이름에서 환경은 `pool`로, 환경 ID는 `pool_id`로 나타납니다. [레퍼런스](https://code.claude.com/docs/ko/self-hosted-environments-reference.md)에서 deprecated된 `pool` 플래그 이름을 포함해 두 표기의 대응 관계를 확인할 수 있습니다.
72 72
73러너는 한 번에 한 명의 소유자만 처리합니다. 러너가 처음 가져가는 세션이 러너를 해당 세션의 소유자에게 고정하며, 이후 러너는 구성된 용량까지 해당 소유자의 세션만 실행합니다. 소유자가 누구인지는 세션이 시작된 방식에 따라 달라집니다.73러너는 한 번에 한 명의 소유자만 처리합니다. 러너가 처음 가져가는 세션이 러너를 해당 세션의 소유자에게 고정하며, 이후 러너는 구성된 용량까지 해당 소유자의 세션만 실행합니다. 소유자가 누구인지는 세션이 시작된 방식에 따라 달라집니다.
74 74
90 90
91### 러너 수명 주기91### 러너 수명 주기
92 92
93러너가 처음 가져가는 세션이 러너를 해당 세션의 소유자에게 고정하며, 러너는 해당 소유자에 대해 최대 `--capacity`개의 세션을 동시에 실행합니다. 러너에 활성 세션이 있고 종료 신호를 받지 않았으며 은퇴 시간에 도달하지 않은 동안, 러너는 고정된 소유자의 대기 중인 작업을 계속 가져갑니다. 세션이 끝난 후 어떻게 되는지는 [`--drain-grace-sec`](/docs/ko/self-hosted-environments-reference#runner-cli-flags)에 따라 달라집니다.93러너가 처음 가져가는 세션이 러너를 해당 세션의 소유자에게 고정하며, 러너는 해당 소유자에 대해 최대 `--capacity`개의 세션을 동시에 실행합니다. 러너에 활성 세션이 있고 종료 신호를 받지 않았으며 은퇴 시간에 도달하지 않은 동안, 러너는 고정된 소유자의 대기 중인 작업을 계속 가져갑니다. 세션이 끝난 후 어떻게 되는지는 [`--drain-grace-sec`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags)에 따라 달라집니다.
94 94
95* **기본값 `0`인 경우**: 러너는 더 이상 폴링하지 않고 활성 세션이 끝나는 즉시 종료되므로, Kubernetes 같이 러너를 배포한 오케스트레이터가 새 디스크로 러너를 재시작하여 어떤 소유자든 처리할 수 있는 상태로 만들 수 있습니다.95* **기본값 `0`인 경우**: 러너는 더 이상 폴링하지 않고 활성 세션이 끝나는 즉시 종료되므로, Kubernetes 같이 러너를 배포한 오케스트레이터가 새 디스크로 러너를 재시작하여 어떤 소유자든 처리할 수 있는 상태로 만들 수 있습니다.
96* **양수 값인 경우**: 러너는 종료하기 전에 해당 초만큼 고정된 소유자의 대기열을 계속 폴링합니다.96* **양수 값인 경우**: 러너는 종료하기 전에 해당 초만큼 고정된 소유자의 대기열을 계속 폴링합니다.
97 97
98이 수명 주기는 러너가 소유자 간에 디스크 상태를 삭제할 필요 없이 각 소유자의 체크아웃된 코드를 격리합니다.98이 수명 주기는 러너가 소유자 간에 디스크 상태를 삭제할 필요 없이 각 소유자의 체크아웃된 코드를 격리합니다.
99 99
100인프라가 러너를 중지하는 방식에 따라 `--retire-at`이 필요한지가 결정됩니다. `SIGTERM`을 전달하는 종료에는 플래그가 필요하지 않습니다. 러너는 [종료 타이밍](/docs/ko/self-hosted-environments-deploy.md#shutdown-timing)에 설명된 대로 드레인하거나, [`--defer-shutdown-max-min`](/docs/ko/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal)을 설정한 경우 이미 보유한 세션을 계속 처리합니다. 반면 샌드박스 수명 제한이나 스팟 인스턴스 회수처럼 인프라가 신호 없이, 또는 드레인하기에 너무 짧은 유예 기간으로 알려진 시각에 호스트를 제거한다면, 해당 시각보다 몇 분 앞선 값으로 `--retire-at <epoch-seconds>`를 전달합니다. 은퇴 시간이 되면 다음이 진행됩니다.100인프라가 러너를 중지하는 방식에 따라 `--retire-at`이 필요한지가 결정됩니다. `SIGTERM`을 전달하는 종료에는 플래그가 필요하지 않습니다. 러너는 [종료 타이밍](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#shutdown-timing)에 설명된 대로 드레인하거나, [`--defer-shutdown-max-min`](https://code.claude.com/docs/ko/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal)을 설정한 경우 이미 보유한 세션을 계속 처리합니다. 반면 샌드박스 수명 제한이나 스팟 인스턴스 회수처럼 인프라가 신호 없이, 또는 드레인하기에 너무 짧은 유예 기간으로 알려진 시각에 호스트를 제거한다면, 해당 시각보다 몇 분 앞선 값으로 `--retire-at <epoch-seconds>`를 전달합니다. 은퇴 시간이 되면 다음이 진행됩니다.
101 101
1021. 러너가 새 작업 수락을 중단합니다.1021. 러너가 새 작업 수락을 중단합니다.
1032. 러너는 [`--release-idle-session-min`](/docs/ko/self-hosted-environments-reference#runner-cli-flags) 플래그가 사용하는 것과 동일한 해제 경로를 통해 각 활성 세션을 해제하므로, 사용자가 다음 메시지를 보내면 세션이 새 러너에서 재개됩니다. 러너가 각 세션을 해제하는 시점은 세션 상태에 따라 달라집니다.1032. 러너는 [`--release-idle-session-min`](https://code.claude.com/docs/ko/self-hosted-environments-reference#runner-cli-flags) 플래그가 사용하는 것과 동일한 해제 경로를 통해 각 활성 세션을 해제하므로, 사용자가 다음 메시지를 보내면 세션이 새 러너에서 재개됩니다. 러너가 각 세션을 해제하는 시점은 세션 상태에 따라 달라집니다.
104 * 턴 진행 중인 세션은 해당 턴이 끝난 후 해제됩니다. 러너는 먼저 세션의 프로세스가 Anthropic에 턴 종료를 보고할 때까지 최대 [`SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS`](/docs/ko/self-hosted-environments-reference#environment-variable-only-settings) 동안 기다립니다. v2.1.280 이전에는 러너가 턴이 끝나는 즉시 세션을 해제했습니다.104 * 턴 진행 중인 세션은 해당 턴이 끝난 후 해제됩니다. 러너는 먼저 세션의 프로세스가 Anthropic에 턴 종료를 보고할 때까지 최대 [`SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS`](https://code.claude.com/docs/ko/self-hosted-environments-reference#environment-variable-only-settings) 동안 기다립니다. v2.1.280 이전에는 러너가 턴이 끝나는 즉시 세션을 해제했습니다.
105 * 턴이 끝났지만 백그라운드 작업이 계속 실행 중이면, 러너는 최대 60초 동안 기다린 후 작업이 여전히 실행 중이더라도 세션을 해제합니다. 작업은 끝났지만 그 결과를 읽는 후속 턴이 아직 실행되지 않았다면, 러너는 해당 턴이 끝날 때까지 세션을 유지하며, 해당 턴이 시작되기까지 최대 [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](/docs/ko/self-hosted-environments-reference#environment-variable-only-settings) 동안만 기다립니다.105 * 턴이 끝났지만 백그라운드 작업이 계속 실행 중이면, 러너는 최대 60초 동안 기다린 후 작업이 여전히 실행 중이더라도 세션을 해제합니다. 작업은 끝났지만 그 결과를 읽는 후속 턴이 아직 실행되지 않았다면, 러너는 해당 턴이 끝날 때까지 세션을 유지하며, 해당 턴이 시작되기까지 최대 [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](https://code.claude.com/docs/ko/self-hosted-environments-reference#environment-variable-only-settings) 동안만 기다립니다.
1063. 모든 세션이 해제되면 러너는 종료 코드 0으로 종료됩니다.1063. 모든 세션이 해제되면 러너는 종료 코드 0으로 종료됩니다.
107 107
108종료 시점 이후까지 이어지는 턴은 여전히 유실됩니다. 여유 시간 산정 방법은 [종료 타이밍](/docs/ko/self-hosted-environments-deploy.md#shutdown-timing)에서 다룹니다. `--retire-at`이 없으면 신호 없는 호스트 종료는 크래시와 구별되지 않습니다. 컨트롤 플레인은 정상적인 해제가 아닌 워커 유실로 기록하고, 세션은 다른 러너용 대기열에 다시 들어갑니다.108종료 시점 이후까지 이어지는 턴은 여전히 유실됩니다. 여유 시간 산정 방법은 [종료 타이밍](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#shutdown-timing)에서 다룹니다. `--retire-at`이 없으면 신호 없는 호스트 종료는 크래시와 구별되지 않습니다. 컨트롤 플레인은 정상적인 해제가 아닌 워커 유실로 기록하고, 세션은 다른 러너용 대기열에 다시 들어갑니다.
109 109
110### 네트워크 경로110### 네트워크 경로
111 111
112러너와 세션은 여러 종류의 아웃바운드 연결을 생성하며, Anthropic으로부터의 인바운드 연결은 필요하지 않습니다.112러너와 세션은 여러 종류의 아웃바운드 연결을 생성하며, Anthropic으로부터의 인바운드 연결은 필요하지 않습니다.
113 113
114* **컨트롤 플레인**: 러너는 `api.anthropic.com`을 폴링하여 작업을 가져오고 설정 진행 및 실패 이벤트를 게시하며, 모두 아웃바운드 HTTPS를 사용합니다. 폴링은 러너의 하트비트 역할도 합니다.114* **컨트롤 플레인**: 러너는 `api.anthropic.com`을 폴링하여 작업을 가져오고 설정 진행 및 실패 이벤트를 게시하며, 모두 아웃바운드 HTTPS를 사용합니다. 폴링은 러너의 하트비트 역할도 합니다.
115* **Git**: 러너는 배포에서 제공하는 자격 증명으로 인증하여 HTTPS 또는 SSH를 통해 git 호스트에서 클론하고 푸시합니다. 세션별로 발급되는 자격 증명을 포함한 옵션은 [git 구성](/docs/ko/self-hosted-environments-deploy.md#configure-git)을 참조하세요. [Anthropic git 프록시](/docs/ko/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy)를 사용하면 github.com 저장소에 대한 git 트래픽은 대신 `api.anthropic.com`을 거칩니다.115* **Git**: 러너는 배포에서 제공하는 자격 증명으로 인증하여 HTTPS 또는 SSH를 통해 git 호스트에서 클론하고 푸시합니다. 세션별로 발급되는 자격 증명을 포함한 옵션은 [git 구성](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#configure-git)을 참조하세요. [Anthropic git 프록시](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy)를 사용하면 github.com 저장소에 대한 git 트래픽은 대신 `api.anthropic.com`을 거칩니다.
116* **세션 자식 프로세스**: 자식 Claude Code 프로세스는 `api.anthropic.com`으로의 세션 이벤트 스트림을 유지하며, 모델 추론 및 세션 중 실행되는 git 명령을 위한 자체 아웃바운드 호출을 수행합니다. [Anthropic 관리 git](/docs/ko/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy)을 사용하는 세션에서는 자식 프로세스가 github.com에 대한 `git` 및 `gh` 트래픽을 `api.anthropic.com`으로 여는 WebSocket 연결을 통해 전송합니다.116* **세션 자식 프로세스**: 자식 Claude Code 프로세스는 `api.anthropic.com`으로의 세션 이벤트 스트림을 유지하며, 모델 추론 및 세션 중 실행되는 git 명령을 위한 자체 아웃바운드 호출을 수행합니다. [Anthropic 관리 git](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy)을 사용하는 세션에서는 자식 프로세스가 github.com에 대한 `git` 및 `gh` 트래픽을 `api.anthropic.com`으로 여는 WebSocket 연결을 통해 전송합니다.
117* **SCM 커넥터**: 선택 사항인 오케스트레이터 [SCM 커넥터](/docs/ko/self-hosted-environments-reference.md#scm-connector-flags)는 사용할 수 없으므로 해당 터널은 열리지 않습니다. 이 터널은 `api.anthropic.com`으로의 WebSocket 연결입니다.117* **SCM 커넥터**: 선택 사항인 오케스트레이터 [SCM 커넥터](https://code.claude.com/docs/ko/self-hosted-environments-reference.md#scm-connector-flags)는 사용할 수 없으므로 해당 터널은 열리지 않습니다. 이 터널은 `api.anthropic.com`으로의 WebSocket 연결입니다.
118 118
119전체 이그레스 목록은 [네트워크 요구 사항](/docs/ko/self-hosted-environments-deploy.md#network-requirements)을 참조하세요. [위 다이어그램](#how-self-hosted-environments-work)은 선택 사항인 SCM 커넥터와 Anthropic 관리 git 연결을 제외한 이러한 경로를 보여줍니다.119전체 이그레스 목록은 [네트워크 요구 사항](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#network-requirements)을 참조하세요. [위 다이어그램](#how-self-hosted-environments-work)은 선택 사항인 SCM 커넥터와 Anthropic 관리 git 연결을 제외한 이러한 경로를 보여줍니다.
120 120
121기본적으로 모델 추론은 Anthropic API를 사용합니다. 컨트롤 플레인이 각 세션에 API 엔드포인트를 전달하며, 세션은 Anthropic이 발급한 세션 범위 OAuth 토큰으로 인증합니다. 대신 자체 클라우드 계정으로 모델 요청을 보내려면 [Bedrock 또는 Agent Platform으로 모델 요청 보내기](/docs/ko/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform)를 참조하세요.121기본적으로 모델 추론은 Anthropic API를 사용합니다. 컨트롤 플레인이 각 세션에 API 엔드포인트를 전달하며, 세션은 Anthropic이 발급한 세션 범위 OAuth 토큰으로 인증합니다. 대신 자체 클라우드 계정으로 모델 요청을 보내려면 [Bedrock 또는 Agent Platform으로 모델 요청 보내기](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform)를 참조하세요.
122 122
123기업 이그레스 프록시가 지원됩니다. 러너와 선택 사항인 [자동 확장 오케스트레이터](/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)는 `HTTPS_PROXY` 및 `NO_PROXY` 같이 [네트워크 구성](/docs/ko/network-config.md)에 설명된 프록시 및 mTLS 환경 변수를 따르며, 이 변수는 각 프로세스의 환경에 설정합니다. 이 변수는 컨트롤 플레인 호출, 오케스트레이터의 [SCM 커넥터](/docs/ko/self-hosted-environments-reference.md#scm-connector-flags) WebSocket, HTTPS 원격 저장소에 대한 기본 제공 클론에 적용되며, 세션은 러너로부터 이 변수를 상속합니다. 세션 스트리밍은 HTTPS를 통한 서버 전송 이벤트를 사용하므로, 경로상의 프록시는 응답을 버퍼링해서는 안 됩니다.123기업 이그레스 프록시가 지원됩니다. 러너와 선택 사항인 [자동 확장 오케스트레이터](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#on-demand-runners)는 `HTTPS_PROXY` 및 `NO_PROXY` 같이 [네트워크 구성](https://code.claude.com/docs/ko/network-config.md)에 설명된 프록시 및 mTLS 환경 변수를 따르며, 이 변수는 각 프로세스의 환경에 설정합니다. 이 변수는 컨트롤 플레인 호출, 오케스트레이터의 [SCM 커넥터](https://code.claude.com/docs/ko/self-hosted-environments-reference.md#scm-connector-flags) WebSocket, HTTPS 원격 저장소에 대한 기본 제공 클론에 적용되며, 세션은 러너로부터 이 변수를 상속합니다. 세션 스트리밍은 HTTPS를 통한 서버 전송 이벤트를 사용하므로, 경로상의 프록시는 응답을 버퍼링해서는 안 됩니다.
124 124
125프록시에 `Proxy-Authorization` 헤더도 필요한 경우, 러너가 프록시로 여는 각 연결에 해당 헤더를 추가할 수 있습니다. [이그레스 프록시에 인증하기](/docs/ko/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)를 참조하세요.125프록시에 `Proxy-Authorization` 헤더도 필요한 경우, 러너가 프록시로 여는 각 연결에 해당 헤더를 추가할 수 있습니다. [이그레스 프록시에 인증하기](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)를 참조하세요.
126 126
127## 인프라에 남아 있는 것127## 인프라에 남아 있는 것
128 128
129저장소 체크아웃, 빌드 아티팩트, 시크릿 및 세션이 생성하거나 수정하는 모든 파일은 프로비저닝한 머신에 남아 있습니다. 대화 자체(프롬프트, 응답 및 도구 결과 포함)는 `api.anthropic.com`으로 이동하며, Anthropic은 다른 [지원되는 사용 환경](#availability-and-limitations)에서 세션을 재개할 수 있도록 세션 트랜스크립트를 저장합니다. 러너가 [Amazon Bedrock 또는 Google Cloud의 Agent Platform으로 모델 요청을 보내는 경우](/docs/ko/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform)에도 대화는 여전히 세션의 이벤트 스트림을 통해 `api.anthropic.com`으로 이동합니다.129저장소 체크아웃, 빌드 아티팩트, 시크릿 및 세션이 생성하거나 수정하는 모든 파일은 프로비저닝한 머신에 남아 있습니다. 대화 자체(프롬프트, 응답 및 도구 결과 포함)는 `api.anthropic.com`으로 이동하며, Anthropic은 다른 [지원되는 사용 환경](#availability-and-limitations)에서 세션을 재개할 수 있도록 세션 트랜스크립트를 저장합니다. 러너가 [Amazon Bedrock 또는 Google Cloud의 Agent Platform으로 모델 요청을 보내는 경우](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform)에도 대화는 여전히 세션의 이벤트 스트림을 통해 `api.anthropic.com`으로 이동합니다.
130 130
131자체 호스팅 환경은 세션 실행을 네트워크로 이동합니다. 제어 평면은 Anthropic 호스팅입니다: 세션 오케스트레이션, 큐잉 및 claude.ai 인터페이스는 Anthropic의 인프라에서 계속 실행됩니다.131자체 호스팅 환경은 세션 실행을 네트워크로 이동합니다. 제어 평면은 Anthropic 호스팅입니다: 세션 오케스트레이션, 큐잉 및 claude.ai 인터페이스는 Anthropic의 인프라에서 계속 실행됩니다.
132 132
134 134
135자체 호스팅 환경 페이지는 수행 중인 작업별로 구성됩니다:135자체 호스팅 환경 페이지는 수행 중인 작업별로 구성됩니다:
136 136
137* [빠른 시작](/docs/ko/self-hosted-environments-quickstart.md): Claude Code 설치, 환경 생성, 러너 시작 및 첫 번째 세션 라우팅137* [빠른 시작](https://code.claude.com/docs/ko/self-hosted-environments-quickstart.md): Claude Code 설치, 환경 생성, 러너 시작 및 첫 번째 세션 라우팅
138* [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy.md): 보안 강화, 네트워크 이그레스, git 자격 증명, Kubernetes 및 Compose 레시피, 알려진 문제 및 문제 해결138* [프로덕션에 배포](https://code.claude.com/docs/ko/self-hosted-environments-deploy.md): 보안 강화, 네트워크 이그레스, git 자격 증명, Kubernetes 및 Compose 레시피, 알려진 문제 및 문제 해결
139* [세션 사용자 정의](/docs/ko/self-hosted-environments-configuration.md): 세션별 자격 증명, 수명 주기 훅, 온디맨드 러너, MCP 서버 및 권한에 대한 래퍼 스크립트139* [세션 사용자 정의](https://code.claude.com/docs/ko/self-hosted-environments-configuration.md): 세션별 자격 증명, 수명 주기 훅, 온디맨드 러너, MCP 서버 및 권한에 대한 래퍼 스크립트
140* [엔드 투 엔드 테스트](/docs/ko/self-hosted-environments-testing.md): 러너 이미지를 프로모션하기 전에 검증하는 CI 스모크 테스트140* [엔드 투 엔드 테스트](https://code.claude.com/docs/ko/self-hosted-environments-testing.md): 러너 이미지를 프로모션하기 전에 검증하는 CI 스모크 테스트
141* [참조](/docs/ko/self-hosted-environments-reference.md): 모든 CLI 플래그, 환경 변수, 메트릭 및 상태 엔드포인트141* [참조](https://code.claude.com/docs/ko/self-hosted-environments-reference.md): 모든 CLI 플래그, 환경 변수, 메트릭 및 상태 엔드포인트
142* [세션 ID 검증](/docs/ko/self-hosted-environments-identity.md): 액세스를 부여하기 전에 자신의 서비스에서 세션 토큰을 검증합니다.142* [세션 ID 검증](https://code.claude.com/docs/ko/self-hosted-environments-identity.md): 액세스를 부여하기 전에 자신의 서비스에서 세션 토큰을 검증합니다.