Skip to content

Coder

Secure environments for developers and their agents

Tutorials

Install

Docker

## 1. 공식 compose 예제 다운로드 / Download the official compose example
curl -fLo compose.yaml https://raw.githubusercontent.com/coder/coder/main/compose.yaml

## 2. docker 그룹 GID 확인 (아래 group_add 값에 사용) / Get docker group GID
getent group docker | cut -d: -f3

## 3. Coder 기동 / Start Coder
docker compose up -d

## 4. 로그 확인 (access URL 확인용) / Check logs for the access URL
docker compose logs -f coder

외부에서 도달 가능한 IP 또는 Domain 을 CODER_ACCESS_URL 환경변수로 설정해야 한다.

클라이언트 로그인

## 클라이언트 설치
curl -fsSL https://coder.com/install.sh | sh

## `coder` 커맨드 사용 가능
coder login https://coder.run   # 브라우저가 열리고 세션 토큰 발급 / opens browser for session token

SSH 접속 방법

워크스페이스 생성 후:

coder config-ssh

## 워크스페이스.coder 이름으로 접속하자. 예를 들어 이름이 `demo-workspace` 라면:
ssh demo-workspace.coder

Docker 템플릿에 GPU 연결하기

템플릿을 수정하면 된다:

kreuzwerker/docker 를 사용하고 있으니, docker_containergpus 인자가 그대로 있습니다. docker run --gpus all과 동일하게 DeviceRequests로 변환됩니다.

resource "docker_container" "workspace" {
  count = data.coder_workspace.me.start_count
  image = docker_image.main.image_id
  name  = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"

  gpus = "all"   # == docker run --gpus all

  # ...
}

Troubleshooting

HTTP 400: System message must be at the beginning

vLLM 실행 후 "OpenAI 호환" 으로 AI 연결하면 HTTP 400 에러 나면서 다음 에러 출력됨:

System message must be at the beginning

Jinja chat template 이 문제이다.

많은 템플릿에 이런 방어 코드가 들어 있습니다:

{%- if messages[0]['role'] != 'system' and ns.system_seen %}
    {{- raise_exception('System message must be at the beginning') }}
{%- endif %}

messages 배열에 role: "system" 이 첫 번째가 아닌 위치에 들어왔다는 뜻입니다. 게이트웨이가 프롬프트를 통과시킬 때 system 메시지를 추가로 끼워넣었거나, 클라이언트가 대화 중간에 system을 다시 보낸 경우입니다.

흔한 발생 경로:

  • Anthropic 포맷 클라이언트(Claude Code 등) → OpenAI 포맷 변환. Anthropic은 system이 최상위 별도 필드라 변환 시 위치가 어긋날 수 있습니다.
  • 에이전트 하네스가 대화 중간에 system reminder를 삽입 (Claude Code, Cline이 자주 이럽니다)
  • system 메시지가 2개 이상 (첫 번째는 맞는데 두 번째가 중간에)
  • role: "developer" 를 system으로 매핑하면서 위치가 밀림

See also

Favorite site