6 6
7> 첫 번째 자체 호스팅 환경 설정: Claude Code 설치, 환경 생성, 러너 시작, 세션 라우팅.7> 첫 번째 자체 호스팅 환경 설정: Claude Code 설치, 환경 생성, 러너 시작, 세션 라우팅.
8 8
9<Note>9> [!NOTE]
10 자체 호스팅 환경은 Team 및 Enterprise 플랜에서 공개 베타 상태입니다. [가용성 및 제한 사항](/docs/ko/self-hosted-environments#availability-and-limitations)에서 활성화 경로를 확인하세요. 이 페이지는 첫 번째 세션을 실행하는 방법을 설명합니다. [자체 호스팅 환경](/docs/ko/self-hosted-environments)에서 자체 호스팅 환경이 무엇인지 확인하고, [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy)에서 강화 및 플릿 레시피를 확인하세요.10>
11</Note>11> 자체 호스팅 환경은 Team 및 Enterprise 플랜에서 공개 베타 상태입니다. [가용성 및 제한 사항](/docs/ko/self-hosted-environments#availability-and-limitations)에서 활성화 경로를 확인하세요. 이 페이지는 첫 번째 세션을 실행하는 방법을 설명합니다. [자체 호스팅 환경](/docs/ko/self-hosted-environments)에서 자체 호스팅 환경이 무엇인지 확인하고, [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy)에서 강화 및 플릿 레시피를 확인하세요.
12 12
13[자체 호스팅 환경](/docs/ko/self-hosted-environments)은 조직이 운영하는 인프라에서 Claude Code [클라우드 세션](/docs/ko/claude-code-on-the-web)을 실행하며, 배포한 러너 프로세스에 의해 실행됩니다. 이 빠른 시작은 가장 작은 규모의 첫 번째 환경을 설정합니다. 단일 호스트에서 하나의 러너가 하나의 테스트 세션을 실행합니다. 두 가지 단계가 있습니다. [환경 생성, 러너 시작, 세션 라우팅](#set-up-an-environment-and-runner), 그 다음 [실행 중인 세션에 후속 메시지 전송](#send-a-follow-up-message-to-a-running-session). 두 가지 인터페이스 간에 이동합니다. claude.ai에서 환경을 생성하고, 상태를 확인하고, 세션을 라우팅하며, 호스트의 터미널에서 러너가 수행하는 모든 작업을 수행합니다.13[자체 호스팅 환경](/docs/ko/self-hosted-environments)은 조직이 운영하는 인프라에서 Claude Code [클라우드 세션](/docs/ko/claude-code-on-the-web)을 실행하며, 배포한 러너 프로세스에 의해 실행됩니다. 이 빠른 시작은 가장 작은 규모의 첫 번째 환경을 설정합니다. 단일 호스트에서 하나의 러너가 하나의 테스트 세션을 실행합니다. 두 가지 단계가 있습니다. [환경 생성, 러너 시작, 세션 라우팅](#set-up-an-environment-and-runner), 그 다음 [실행 중인 세션에 후속 메시지 전송](#send-a-follow-up-message-to-a-running-session). 두 가지 인터페이스 간에 이동합니다. claude.ai에서 환경을 생성하고, 상태를 확인하고, 세션을 라우팅하며, 호스트의 터미널에서 러너가 수행하는 모든 작업을 수행합니다.
14 14
15완료되면 [**클라우드 환경** 관리자 페이지](https://claude.ai/admin-settings/cloud-environments)에 환경이 있고, 러너가 작업을 폴링하고 있으며, 호스트에서 세션이 실행 중입니다. 실제 저장소나 내부 시스템을 연결하기 전에 [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy)를 진행하세요. 이 페이지에서는 보안 태세, 송신 제어, git 자격 증명 및 오케스트레이션을 다룹니다.15완료되면 [**클라우드 환경** 관리자 페이지](https://claude.ai/admin-settings/cloud-environments)에 환경이 있고, 러너가 작업을 폴링하고 있으며, 호스트에서 세션이 실행 중입니다. 실제 저장소나 내부 시스템을 연결하기 전에 [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy)를 진행하세요. 이 페이지에서는 보안 태세, 송신 제어, git 자격 증명 및 오케스트레이션을 다룹니다.
16 16
17<h2 id="prerequisites">17## 필수 조건
18 필수 조건
19</h2>
20 18
21<h3 id="organization-and-roles">19### 조직 및 역할
22 조직 및 역할
23</h3>
24 20
25claude.ai 측에서 필요한 사항:21claude.ai 측에서 필요한 사항:
26 22
27* **자체 호스팅 환경 허용**이 [**클라우드 환경** 관리자 페이지](https://claude.ai/admin-settings/cloud-environments)에서 [Owner](/docs/ko/cloud-environments#organization-shared-environments)에 의해 활성화되어야 합니다. **새로 만들기** 버튼은 활성화될 때까지 나타나지 않습니다. 이 역할을 보유하지 않은 경우, 역할을 보유한 사람이 환경을 생성하고 해당 비밀을 제공할 수 있습니다. 이 페이지의 러너 및 터미널 단계에는 claude.ai 역할이 필요하지 않으며, 단계에서 관리자 UI의 상태를 확인하는 경우, 러너의 자체 로그 라인이 동일한 신호를 제공합니다.23* **자체 호스팅 환경 허용**이 [**클라우드 환경** 관리자 페이지](https://claude.ai/admin-settings/cloud-environments)에서 [Owner](/docs/ko/cloud-environments#organization-shared-environments)에 의해 활성화되어야 합니다. **새로 만들기** 버튼은 활성화될 때까지 나타나지 않습니다. 이 역할을 보유하지 않은 경우, 역할을 보유한 사람이 환경을 생성하고 해당 비밀을 제공할 수 있습니다. 이 페이지의 러너 및 터미널 단계에는 claude.ai 역할이 필요하지 않으며, 단계에서 관리자 UI의 상태를 확인하는 경우, 러너의 자체 로그 라인이 동일한 신호를 제공합니다.
28* Owner가 활성화한 [GitHub 커넥터](https://claude.ai/admin-settings/connectors)와 각 개발자의 자체 [GitHub 연결](/docs/ko/web-quickstart#connect-github)이 필요합니다. 이를 통해 개발자가 세션을 시작할 때 github.com 저장소를 선택할 수 있습니다.24* Owner가 활성화한 [GitHub 커넥터](https://claude.ai/admin-settings/connectors)와 각 개발자의 자체 [GitHub 연결](/docs/ko/web-quickstart#connect-github)이 필요합니다. 이를 통해 개발자가 세션을 시작할 때 github.com 저장소를 선택할 수 있습니다.
29 25
30<h3 id="host-and-network">26### 호스트 및 네트워크
31 호스트 및 네트워크
32</h3>
33 27
34러너 호스트에 필요한 사항:28러너 호스트에 필요한 사항:
35 29
37* 테스트 세션용 저장소입니다. 공개 저장소이거나, 이 호스트가 자격 증명을 요청받지 않고 HTTPS URL로 이미 클론할 수 있는 저장소여야 합니다. 러너는 저장소의 `https://` URL을 클론하므로 SSH 키만으로는 충분하지 않습니다. 대신 SSH로 클론하려면 [프라이빗 네트워크용 git URL 재작성](/docs/ko/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks)을 참조하세요.31* 테스트 세션용 저장소입니다. 공개 저장소이거나, 이 호스트가 자격 증명을 요청받지 않고 HTTPS URL로 이미 클론할 수 있는 저장소여야 합니다. 러너는 저장소의 `https://` URL을 클론하므로 SSH 키만으로는 충분하지 않습니다. 대신 SSH로 클론하려면 [프라이빗 네트워크용 git URL 재작성](/docs/ko/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks)을 참조하세요.
38* NTP와 같은 실시간으로 동기화된 시계입니다. 시계가 5분 이상 차이나면 인증이 실패합니다. [문제 해결](/docs/ko/self-hosted-environments-deploy#troubleshooting)을 참조하세요.32* NTP와 같은 실시간으로 동기화된 시계입니다. 시계가 5분 이상 차이나면 인증이 실패합니다. [문제 해결](/docs/ko/self-hosted-environments-deploy#troubleshooting)을 참조하세요.
39 33
40<h3 id="software-on-the-runner-host">34### 러너 호스트의 소프트웨어
41 러너 호스트의 소프트웨어
42</h3>
43 35
44시작하기 전에 호스트에 설치하세요:36시작하기 전에 호스트에 설치하세요:
45 37
54 46
55준비된 호스트는 `--environment-secret-file`과 같은 플래그를 나열하는 러너의 사용 텍스트를 인쇄합니다. 2.1.224보다 이전 버전에서는 명령이 대신 일반 `claude --help` 출력을 인쇄합니다. `claude update`로 업그레이드하거나 `latest` 채널에서 다시 설치하세요.47준비된 호스트는 `--environment-secret-file`과 같은 플래그를 나열하는 러너의 사용 텍스트를 인쇄합니다. 2.1.224보다 이전 버전에서는 명령이 대신 일반 `claude --help` 출력을 인쇄합니다. `claude update`로 업그레이드하거나 `latest` 채널에서 다시 설치하세요.
56 48
57<h2 id="set-up-an-environment-and-runner">49## 환경 및 러너 설정
58 환경 및 러너 설정
59</h2>
60 50
61[안내식 설정](#run-the-guided-setup) 또는 [수동 단계](#set-up-manually) 중 하나를 사용하세요. 안내식 설정은 대화형 Claude Code 세션을 시작하고 나머지 과정을 안내하는 단일 명령입니다. 대화형 세션이 불가능한 호스트에서는 대신 수동 단계를 사용하세요. Owner 역할을 보유한 다른 사람이 환경을 생성하고 그 비밀을 전달한 경우에도 수동 단계를 사용하세요. 안내식 설정에는 Owner 로그인이 필요하기 때문입니다.51[안내식 설정](#run-the-guided-setup) 또는 [수동 단계](#set-up-manually) 중 하나를 사용하세요. 안내식 설정은 대화형 Claude Code 세션을 시작하고 나머지 과정을 안내하는 단일 명령입니다. 대화형 세션이 불가능한 호스트에서는 대신 수동 단계를 사용하세요. Owner 역할을 보유한 다른 사람이 환경을 생성하고 그 비밀을 전달한 경우에도 수동 단계를 사용하세요. 안내식 설정에는 Owner 로그인이 필요하기 때문입니다.
62 52
63<h3 id="run-the-guided-setup">53### 안내식 설정 실행
64 안내식 설정 실행
65</h3>
66 54
67안내식 설정은 관리자 UI에서 환경 생성을 안내하고, 저장한 비밀 파일로 로컬 러너를 시작하고, 러너가 등록되었는지 확인하고, `./runner-setup/CHEAT-SHEET.md`에 치트 시트를 작성합니다. 실행하기 전에 로그인과 버전을 확인하세요:55안내식 설정은 관리자 UI에서 환경 생성을 안내하고, 저장한 비밀 파일로 로컬 러너를 시작하고, 러너가 등록되었는지 확인하고, `./runner-setup/CHEAT-SHEET.md`에 치트 시트를 작성합니다. 실행하기 전에 로그인과 버전을 확인하세요:
68 56
77 65
78설정 자체는 테스트 세션을 시작하지 않으며, claude.ai/code에서 세션을 시작하도록 안내합니다. 설정의 마지막 단계는 설정이 시작한 러너를 중지합니다. 해당 단계 이전에 설정을 떠나면 러너는 계속 실행됩니다. 마지막 단계 이후에도 계속하려면 `./runner-setup/CHEAT-SHEET.md`에 있는 명령으로 셸에서 러너를 다시 시작한 다음 [세션을 환경으로 라우팅](#route-a-session)하세요.66설정 자체는 테스트 세션을 시작하지 않으며, claude.ai/code에서 세션을 시작하도록 안내합니다. 설정의 마지막 단계는 설정이 시작한 러너를 중지합니다. 해당 단계 이전에 설정을 떠나면 러너는 계속 실행됩니다. 마지막 단계 이후에도 계속하려면 `./runner-setup/CHEAT-SHEET.md`에 있는 명령으로 셸에서 러너를 다시 시작한 다음 [세션을 환경으로 라우팅](#route-a-session)하세요.
79 67
80<h3 id="set-up-manually">68### 수동으로 설정
81 수동으로 설정
82</h3>
83 69
84claude.ai에서 환경을 생성하고, 호스트의 터미널에서 러너를 시작한 다음, claude.ai로 돌아가 러너가 나타나는지 확인하고 세션을 러너로 라우팅합니다. Owner 역할을 보유한 사람이 이미 환경을 생성하고 그 비밀을 전달한 경우 2단계부터 시작하세요.70claude.ai에서 환경을 생성하고, 호스트의 터미널에서 러너를 시작한 다음, claude.ai로 돌아가 러너가 나타나는지 확인하고 세션을 러너로 라우팅합니다. Owner 역할을 보유한 사람이 이미 환경을 생성하고 그 비밀을 전달한 경우 2단계부터 시작하세요.
85 71
86<Steps>72**1. 환경 생성**
87 <Step title="환경 생성">
88 관리자 설정의 [**클라우드 환경** 페이지](https://claude.ai/admin-settings/cloud-environments)로 이동하세요. **자체 호스팅 환경** 아래에서 **새로 만들기**를 선택하고, 환경의 이름을 지정한 후 **생성**을 선택하세요. 마법사의 두 번째 단계에서 **환경 키 복사**를 선택하여 환경 비밀을 복사하세요. 관리자 UI는 이를 환경 키로 표시합니다. claude.ai는 비밀을 한 번만 표시하며, 나중에 검색할 수 없습니다. 생성 후 365일 후에 만료됩니다. 환경의 `ccpool_...` ID는 세부 정보 대화 상자에서 계속 표시됩니다. [토큰 검증](/docs/ko/self-hosted-environments-identity)의 `aud` 확인 및 [CI에서 테스트 세션 디스패치](/docs/ko/self-hosted-environments-testing#run-the-test-loop)에 필요합니다.
89 73
90 비밀을 잃어버렸거나 회전해야 하는 경우, 환경의 **구성** 탭에서 새 비밀을 생성하고, 새 비밀을 러너에 배포한 후, 이전 비밀을 취소하세요. 취소된 비밀을 보유한 러너는 다음 인증된 폴에서 실패하고 종료되며, `poll auth failed`를 기록하고, 오케스트레이터가 새 비밀로 다시 시작합니다.74관리자 설정의 [**클라우드 환경** 페이지](https://claude.ai/admin-settings/cloud-environments)로 이동하세요. **자체 호스팅 환경** 아래에서 **새로 만들기**를 선택하고, 환경의 이름을 지정한 후 **생성**을 선택하세요. 마법사의 두 번째 단계에서 **환경 키 복사**를 선택하여 환경 비밀을 복사하세요. 관리자 UI는 이를 환경 키로 표시합니다. claude.ai는 비밀을 한 번만 표시하며, 나중에 검색할 수 없습니다. 생성 후 365일 후에 만료됩니다. 환경의 `ccpool_...` ID는 세부 정보 대화 상자에서 계속 표시됩니다. [토큰 검증](/docs/ko/self-hosted-environments-identity)의 `aud` 확인 및 [CI에서 테스트 세션 디스패치](/docs/ko/self-hosted-environments-testing#run-the-test-loop)에 필요합니다.
91 </Step>
92 75
93 <Step title="러너 시작">76비밀을 잃어버렸거나 회전해야 하는 경우, 환경의 **구성** 탭에서 새 비밀을 생성하고, 새 비밀을 러너에 배포한 후, 이전 비밀을 취소하세요. 취소된 비밀을 보유한 러너는 다음 인증된 폴에서 실패하고 종료되며, `poll auth failed`를 기록하고, 오케스트레이터가 새 비밀로 다시 시작합니다.
94 비밀 디렉토리를 생성하세요. 이 명령과 다음 명령은 루트 권한이 필요한 `/etc/claude`를 사용하며, 이 명령들이 생성하는 비밀 파일은 명령을 실행한 사용자만 읽을 수 있습니다. 러너가 다른 사용자로 실행되면 `error: Failed to read environment secret file <path> (EACCES: permission denied, open '<path>')`와 함께 종료됩니다. 이 경우 `/etc/claude` 대신 러너의 사용자가 쓸 수 있는 디렉토리를 사용하여 두 명령을 러너의 사용자로 실행하고, 같은 경로를 `--environment-secret-file`에 전달하세요. 러너 프로세스가 읽을 수 있는 모든 경로가 작동합니다.
95 77
96 ```bash theme={null}78**2. 러너 시작**
97 mkdir -p /etc/claude
98 ```
99 79
100 환경 비밀을 파일에 작성하세요. 아래 명령은 터미널에서 읽으므로 비밀이 셸 히스토리에서 벗어납니다. 복사한 값을 붙여넣고, Enter를 누른 후 Ctrl-D를 누르면, 서브셸의 `umask`가 파일을 소유자만 읽을 수 있도록 만듭니다.80비밀 디렉토리를 생성하세요. 이 명령과 다음 명령은 루트 권한이 필요한 `/etc/claude`를 사용하며, 이 명령들이 생성하는 비밀 파일은 명령을 실행한 사용자만 읽을 수 있습니다. 러너가 다른 사용자로 실행되면 `error: Failed to read environment secret file <path> (EACCES: permission denied, open '<path>')`와 함께 종료됩니다. 이 경우 `/etc/claude` 대신 러너의 사용자가 쓸 수 있는 디렉토리를 사용하여 두 명령을 러너의 사용자로 실행하고, 같은 경로를 `--environment-secret-file`에 전달하세요. 러너 프로세스가 읽을 수 있는 모든 경로가 작동합니다.
101 81
102 ```bash theme={null}82```bash theme={null}
103 (umask 077 && cat > /etc/claude/environment-secret)83mkdir -p /etc/claude
104 ```84```
85
86환경 비밀을 파일에 작성하세요. 아래 명령은 터미널에서 읽으므로 비밀이 셸 히스토리에서 벗어납니다. 복사한 값을 붙여넣고, Enter를 누른 후 Ctrl-D를 누르면, 서브셸의 `umask`가 파일을 소유자만 읽을 수 있도록 만듭니다.
87
88```bash theme={null}
89(umask 077 && cat > /etc/claude/environment-secret)
90```
91
92기본 디렉토리를 선택하고, 아래 러너 명령의 `<writable-dir>`을 러너가 쓸 수 있거나 생성할 수 있는 절대 경로로 바꾸세요. 러너는 시작 시 디렉토리를 생성한 후, 저장소를 체크아웃하고 그 아래에 세션별 디렉토리를 생성합니다. `--base-dir` 없이는 `/workspace`를 사용하며, 이는 해당 디렉토리가 이미 존재하고 쓸 수 있거나 러너를 루트로 시작하는 경우에만 작동합니다.
93
94> [!WARNING]
95>
96> 홈 디렉터리나 직접 클론한 저장소가 있는 디렉터리가 아닌, 러너 전용 디렉터리를 사용하세요. 러너는 `<writable-dir>/<repo-owner>/<repo>`에서 찾은 모든 것을 자신의 클론으로 취급하며, 이를 재설정하고 그 안의 파일을 덮어쓰거나 삭제할 수 있습니다.
105 97
106 기본 디렉토리를 선택하고, 아래 러너 명령의 `<writable-dir>`을 러너가 쓸 수 있거나 생성할 수 있는 절대 경로로 바꾸세요. 러너는 시작 시 디렉토리를 생성한 후, 저장소를 체크아웃하고 그 아래에 세션별 디렉토리를 생성합니다. `--base-dir` 없이는 `/workspace`를 사용하며, 이는 해당 디렉토리가 이미 존재하고 쓸 수 있거나 러너를 루트로 시작하는 경우에만 작동합니다.98러너가 기본 디렉터리를 생성하거나 쓸 수 없으면, 등록하지 않고 시작 시 디렉터리의 이름을 지정하는 오류로 종료됩니다. [문제 해결](/docs/ko/self-hosted-environments-deploy#troubleshooting)을 참조하세요.
107 99
108 <Warning>100그런 다음 `--environment-secret-file` 및 `--base-dir`로 러너를 시작하세요:
109 홈 디렉터리나 직접 클론한 저장소가 있는 디렉터리가 아닌, 러너 전용 디렉터리를 사용하세요. 러너는 `<writable-dir>/<repo-owner>/<repo>`에서 찾은 모든 것을 자신의 클론으로 취급하며, 이를 재설정하고 그 안의 파일을 덮어쓰거나 삭제할 수 있습니다.
110 </Warning>
111 101
112 러너가 기본 디렉터리를 생성하거나 쓸 수 없으면, 등록하지 않고 시작 시 디렉터리의 이름을 지정하는 오류로 종료됩니다. [문제 해결](/docs/ko/self-hosted-environments-deploy#troubleshooting)을 참조하세요.102```bash theme={null}
103claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'
104```
113 105
114 그런 다음 `--environment-secret-file` 및 `--base-dir`로 러너를 시작하세요:106러너는 환경에 등록되면 `Registered: runner_id=<runner-id>`를 기록한 다음 작업 폴링을 시작합니다. 이 명령으로 시작한 러너는 각 턴 이후가 아니라 하나의 세션을 처리한 후 설계상 종료됩니다. 더 많은 세션을 처리하려면 러너가 종료될 때마다 다시 시작하세요. 종료되는 시점과 러너가 기록하는 내용은 [러너가 종료되는 경우](#if-the-runner-exits)를 참조하세요.
115 107
116 ```bash theme={null}108**3. 러너가 나타나는지 확인**
117 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'
118 ```
119 109
120 러너는 환경에 등록되면 `Registered: runner_id=<runner-id>`를 기록한 다음 작업 폴링을 시작합니다. 이 명령으로 시작한 러너는 각 턴 이후가 아니라 하나의 세션을 처리한 후 설계상 종료됩니다. 더 많은 세션을 처리하려면 러너가 종료될 때마다 다시 시작하세요. 종료되는 시점과 러너가 기록하는 내용은 [러너가 종료되는 경우](#if-the-runner-exits)를 참조하세요.110[**클라우드 환경** 페이지](https://claude.ai/admin-settings/cloud-environments)로 돌아가세요. 환경의 상태는 러너 시작 후 몇 초 내에 **배포된 러너 없음**에서 **정상**으로 변경됩니다. 환경을 열고 **활동**을 선택하여 러너 자체를 확인하세요. 관리자 페이지에 접근할 수 없는 경우, 이전 단계의 러너 로그에 있는 `Registered: runner_id=<runner-id>` 줄이 같은 신호를 제공합니다.
121 </Step>
122 111
123 <Step title="러너가 나타나는지 확인">112**4. 세션을 환경으로 라우팅**
124 [**클라우드 환경** 페이지](https://claude.ai/admin-settings/cloud-environments)로 돌아가세요. 환경의 상태는 러너 시작 후 몇 초 내에 **배포된 러너 없음**에서 **정상**으로 변경됩니다. 환경을 열고 **활동**을 선택하여 러너 자체를 확인하세요. 관리자 페이지에 접근할 수 없는 경우, 이전 단계의 러너 로그에 있는 `Registered: runner_id=<runner-id>` 줄이 같은 신호를 제공합니다.
125 </Step>
126 113
127 <Step title="세션을 환경으로 라우팅">114claude.ai/code에서 세션을 시작하고 환경 선택기에서 환경을 선택하세요. 자체 호스팅 환경은 Anthropic 호스팅 환경과 함께 나타납니다. 저장소는 [사전 요구 사항](#host-and-network)에서 정한 것, 즉 공개 저장소나 이 호스트가 자격 증명 요청 없이 HTTPS URL로 이미 클론할 수 있는 저장소를 선택하세요.
128 <span id="route-a-session" />claude.ai/code에서 세션을 시작하고 환경 선택기에서 환경을 선택하세요. 자체 호스팅 환경은 Anthropic 호스팅 환경과 함께 나타납니다. 저장소는 [사전 요구 사항](#host-and-network)에서 정한 것, 즉 공개 저장소나 이 호스트가 자격 증명 요청 없이 HTTPS URL로 이미 클론할 수 있는 저장소를 선택하세요.
129 115
130 다음 사용 가능한 러너가 대기 중인 세션을 선택하고 `Picked up session <session-id>`를 기록하며, 활성 개수 및 용량을 함께 기록하므로, 러너의 자체 출력에서 어느 호스트가 세션을 선택했는지 확인할 수 있습니다. [claude.ai/code](https://claude.ai/code)에서 세션이 작동하는 것을 보고 Claude의 답변을 읽으세요.116다음 사용 가능한 러너가 대기 중인 세션을 선택하고 `Picked up session <session-id>`를 기록하며, 활성 개수 및 용량을 함께 기록하므로, 러너의 자체 출력에서 어느 호스트가 세션을 선택했는지 확인할 수 있습니다. [claude.ai/code](https://claude.ai/code)에서 세션이 작동하는 것을 보고 Claude의 답변을 읽으세요.
131 117
132 <span id="session-doesnt-start" />세션이 작업을 시작하지 않으면 보이는 상황에 맞춰 확인하세요:118세션이 작업을 시작하지 않으면 보이는 상황에 맞춰 확인하세요:
133 119
134 * **세션이 대기 상태로 머무는 경우**: [문제 해결](/docs/ko/self-hosted-environments-deploy#troubleshooting)을 참조하세요.120* **세션이 대기 상태로 머무는 경우**: [문제 해결](/docs/ko/self-hosted-environments-deploy#troubleshooting)을 참조하세요.
135 * **세션이 git 오류로 시작에 실패하는 경우**: 오류에 git의 `could not read Username for`와 그 뒤에 git 호스트의 URL이 포함되어 있다면, 러너에 해당 호스트에 대한 HTTPS 자격 증명이 없는 것입니다.121* **세션이 git 오류로 시작에 실패하는 경우**: 오류에 git의 `could not read Username for`와 그 뒤에 git 호스트의 URL이 포함되어 있다면, 러너에 해당 호스트에 대한 HTTPS 자격 증명이 없는 것입니다.
136 * **HTTPS 자격 증명 제공**: [Git 구성](/docs/ko/self-hosted-environments-deploy#configure-git)을 참조하세요122 * **HTTPS 자격 증명 제공**: [Git 구성](/docs/ko/self-hosted-environments-deploy#configure-git)을 참조하세요
137 * **대신 SSH로 클론**: 러너 호스트에 이미 SSH 키가 있다면 [비공개 네트워크용 git URL 재작성](/docs/ko/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks)을 참조하세요123 * **대신 SSH로 클론**: 러너 호스트에 이미 SSH 키가 있다면 [비공개 네트워크용 git URL 재작성](/docs/ko/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks)을 참조하세요
138 </Step>
139</Steps>
140 124
141<h3 id="if-the-runner-exits">125### 러너가 종료되는 경우
142 러너가 종료되는 경우
143</h3>
144 126
145이 빠른 시작 중에 러너가 종료되면 다시 시작하세요. 러너는 스스로 종료될 수 있습니다:127이 빠른 시작 중에 러너가 종료되면 다시 시작하세요. 러너는 스스로 종료될 수 있습니다:
146 128
153 135
154프로덕션의 경우, 종료 시 러너를 다시 시작하고 러너가 시작 직후 계속 종료될 때는 재시작 간격을 더 길게 두는 오케스트레이터 아래에 러너를 배포하세요. [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy) 및 [러너가 종료될 때](/docs/ko/self-hosted-environments-deploy#when-the-runner-exits)를 참조하세요.136프로덕션의 경우, 종료 시 러너를 다시 시작하고 러너가 시작 직후 계속 종료될 때는 재시작 간격을 더 길게 두는 오케스트레이터 아래에 러너를 배포하세요. [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy) 및 [러너가 종료될 때](/docs/ko/self-hosted-environments-deploy#when-the-runner-exits)를 참조하세요.
155 137
156<h2 id="send-a-follow-up-message-to-a-running-session">138## 실행 중인 세션에 후속 메시지 전송
157 실행 중인 세션에 후속 메시지 전송
158</h2>
159 139
160세션이 환경에서 실행 중이면, `claude auth login`으로 로그인한 모든 머신의 `claude` CLI에서 후속 메시지를 전송하세요. 명령은 세션을 시작한 머신에서 실행할 필요가 없습니다. 명령은 하나의 메시지를 게시합니다:140세션이 환경에서 실행 중이면, `claude auth login`으로 로그인한 모든 머신의 `claude` CLI에서 후속 메시지를 전송하세요. 명령은 세션을 시작한 머신에서 실행할 필요가 없습니다. 명령은 하나의 메시지를 게시합니다:
161 141
165 145
166`<session-id>`의 경우, 베어 `session_...` 또는 `cse_...` ID 또는 세션의 claude.ai/code URL을 전달하세요. 성공적인 전송은 세션 ID 및 보기 링크와 함께 `Sent to cloud session.`을 인쇄합니다. 수락된 ID 형식, JSON 출력, 계정 및 정책 요구 사항은 [CLI에서 후속 메시지 전송](/docs/ko/claude-code-on-the-web#send-follow-ups-from-the-cli)에 있습니다. 명령은 Anthropic 호스팅 세션에 대해 동일하게 작동하기 때문입니다.146`<session-id>`의 경우, 베어 `session_...` 또는 `cse_...` ID 또는 세션의 claude.ai/code URL을 전달하세요. 성공적인 전송은 세션 ID 및 보기 링크와 함께 `Sent to cloud session.`을 인쇄합니다. 수락된 ID 형식, JSON 출력, 계정 및 정책 요구 사항은 [CLI에서 후속 메시지 전송](/docs/ko/claude-code-on-the-web#send-follow-ups-from-the-cli)에 있습니다. 명령은 Anthropic 호스팅 세션에 대해 동일하게 작동하기 때문입니다.
167 147
168<h2 id="what’s-next">148## 다음 단계
169 다음 단계
170</h2>
171 149
172* [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy): 배포를 강화하고, 송신을 제어하고, git 자격 증명을 구성하고, Kubernetes 또는 Compose 아래에서 플릿을 실행합니다.150* [프로덕션에 배포](/docs/ko/self-hosted-environments-deploy): 배포를 강화하고, 송신을 제어하고, git 자격 증명을 구성하고, Kubernetes 또는 Compose 아래에서 플릿을 실행합니다.
173* [세션 사용자 정의](/docs/ko/self-hosted-environments-configuration): 래퍼 스크립트, 수명 주기 훅, 온디맨드 러너, MCP 서버, 권한151* [세션 사용자 정의](/docs/ko/self-hosted-environments-configuration): 래퍼 스크립트, 수명 주기 훅, 온디맨드 러너, MCP 서버, 권한