설정

VPS에서 Codex CLI 실행하기

Codex는 작은 Linux 서버에서 잘 돌아갑니다. 마찰의 대부분은 로그인과 Linux 샌드박스에서 생깁니다. 이 가이드는 설치, 헤드리스 로그인, 세션 유지, 그리고 휴대폰에서 서버에 접근하는 방법을 다룹니다.

VPS에서 Codex CLI 실행하기

빠른 답변

curl -fsSL https://chatgpt.com/codex/install.sh | sh(또는 npm install -g @openai/codex)로 설치하세요. 다음으로 ChatGPT 보안 설정에서 기기 코드 로그인을 켜고, 서버에서 codex login --device-auth를 실행합니다. SSH 연결보다 오래 살아남도록 Codex를 tmux나 데몬 안에서 실행하세요. ChatGPT 앱의 Remote는 공식적으로 macOS와 Windows 호스트만 지원합니다. Linux VPS에는 그중 하나를 거쳐야만 닿을 수 있는데, 깨어 있는 Mac이나 PC의 ChatGPT 데스크톱 앱이 VPS를 SSH 프로젝트로 여는 방식입니다. 휴대폰에서 VPS에 직접 닿으려면 SSH 앱이나 Maude처럼 서버와 직접 통신하는 클라이언트를 쓰세요.

서버는 OpenAI의 Codex CLI에게 좋은 집입니다. 노트북을 닫아도 계속 일하고, 연결이 끊겨도 살아남으며, 실행이 잘못되면 머신을 다시 만들면 됩니다. 새 Linux VPS에서는 두 가지에서 걸려 넘어집니다. 첫째, 일반 codex login은 서버에 절대 닿을 수 없는 브라우저 리디렉션을 기다립니다. 둘째, 샌드박스에는 대부분의 최소 이미지에 없는 패키지가 필요합니다. 이 가이드는 둘 다 해결한 뒤, 세션 유지와 휴대폰에서 접근하는 방법을 다룹니다.

요구 사항

  • Linux 서버, x86-64 또는 arm64. OpenAI는 두 가지 모두 바이너리를 공개하며, macOS도 됩니다. Debian이나 Ubuntu가 가장 쉬운 길입니다.
  • 계정. ChatGPT 요금제나 OpenAI API 키 중 하나. OpenAI Codex 요금 페이지에 따르면 Codex는 ChatGPT Free, Go, Plus, Pro, Business, Edu, Enterprise에 포함됩니다. 한도는 요금제마다 다르며, 로컬 CLI 사용은 클라우드 채팅과 할당량을 공유합니다. API 키 사용은 대신 API 요금이 청구됩니다.
  • 메모리. CLI는 컴파일된 바이너리라 그 자체로는 메모리를 거의 쓰지 않습니다. RAM을 쓰는 것은 프로젝트의 빌드와 테스트 실행입니다. 가벼운 작업에는 2 GB, 4 GB면 넉넉합니다. 사양과 현재 가격은 VPS 구매 가이드를 참고하세요.
  • root가 아닌 사용자. 무엇이든 설치하기 전에 만드세요(adduser dev 후 SSH 키 복사). 그 과정과 SSH 보안 강화는 Claude Code VPS 가이드에서 안내하며, Codex에도 단계가 같습니다.

Codex 설치하기

독립 실행형 설치 프로그램은 Node.js가 필요 없습니다.

curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version

이미 npm으로 도구를 관리한다면 이것도 같은 CLI를 설치합니다.

npm install -g @openai/codex

스코프에 주의하세요. 패키지는 @openai/codex입니다. npm의 스코프 없는 codex 패키지는 관계없는 것입니다. sudo가 아니라 일반 사용자로 설치하세요. 두 방법 모두 openai/codex README에 나와 있습니다.

Linux 샌드박스 사전 요구 사항

Linux에서 Codex는 생성한 셸 명령을 bwrap(bubblewrap)과 seccomp로 만든 샌드박스 안에서 실행합니다. OpenAI의 샌드박싱 문서는 먼저 bubblewrap을 설치하라고 합니다.

sudo apt install bubblewrap      # Debian / Ubuntu
sudo dnf install bubblewrap      # Fedora

bwrap이 없으면 Codex는 번들된 도우미로 대체하는데, 그 도우미에는 비특권 사용자 네임스페이스가 필요합니다. Ubuntu 24.04는 AppArmor로 이를 제한합니다. 문서에 나온 해결책은 추가 프로필을 불러오는 것입니다.

sudo apt install apparmor-profiles apparmor-utils
sudo install -m 0644 /usr/share/apparmor/extra-profiles/bwrap-userns-restrict /etc/apparmor.d/bwrap-userns-restrict
sudo apparmor_parser -r /etc/apparmor.d/bwrap-userns-restrict

문서는 머신 전체에서 제한을 끄는 더 무딘 대안인 sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0도 제시합니다. 프로필 쪽을 택하세요. 샌드박스 안의 모든 명령이 네임스페이스 오류로 실패한다면 이 섹션이 원인입니다.

기기 코드로 로그인하기

서버에서 일반 codex login을 실행하면 멈춘 것처럼 보입니다. 이유는 이렇습니다. 포트 1455에 로컬 콜백 서버를 띄우고 브라우저가 localhost로 리디렉션되기를 기다리는데, 그것은 서버의 localhost라서 휴대폰이나 노트북에서는 닿을 수 없습니다. 대신 기기 코드 로그인을 쓰세요. 거의 모두가 걸리는 사전 조건이 하나 있습니다.

  1. 기기 코드 로그인을 켜세요. 개인 계정은 ChatGPT 보안 설정에서 켭니다. Business, Edu, Enterprise 워크스페이스에서는 관리자가 워크스페이스 권한에서 켭니다. 켜기 전까지 내 계정에서는 기기 흐름이 작동하지 않습니다.
  2. 서버에서 흐름을 시작하세요:
    codex login --device-auth
  3. 아무 기기에서 마무리하세요. Codex가 링크와 일회용 코드를 출력합니다. 휴대폰이나 노트북에서 링크를 열고, ChatGPT에 로그인한 뒤 코드를 입력하세요.
  4. 작동했는지 확인하세요:
    codex login status
    현재 인증 방식을 출력하고 로그인되어 있으면 0으로 종료하므로 스크립트에서도 유용합니다.

이 내용은 OpenAI의 인증 문서에서 왔습니다. 기기 코드를 쓸 수 없을 때를 위한 대안이 두 가지 있습니다.

  • 콜백 포트를 포워딩하세요. ssh -L 1455:localhost:1455 user@your-server로 접속해 서버에서 codex login을 실행하고, 출력된 주소를 로컬 브라우저에서 엽니다. 그러면 리디렉션이 터널을 통해 돌아옵니다.
  • 자격 증명을 복사하세요. 브라우저가 있는 머신에서 로그인한 뒤 scp ~/.codex/auth.json user@your-server:~/.codex/auth.json을 실행합니다.

대신 API 키 쓰기

printenv OPENAI_API_KEY | codex login --with-api-key

키를 stdin으로 파이프하면 셸 기록에 남지 않습니다. ChatGPT 요금제에서 차감하는 대신 API 가격으로 토큰당 지불합니다. 과금 경계를 분명히 하고 싶은 공용 머신이나 CI에 맞습니다.

auth.json은 비밀번호처럼 다루세요

기본적으로 Codex는 자격 증명을 ~/.codex/auth.json에 캐시합니다. cli_auth_credentials_store 설정으로 OS 키링으로 옮길 수 있습니다(file, keyring, auto, ephemeral). 내 사용자의 셸을 가진 누구나 내 ChatGPT 요금제를 쓸 수 있습니다. 에이전트용 머신의 셸 접근을 다른 사람에게 주지 마세요.

계속 실행하기

대화형 codex 세션은 그것을 시작한 터미널과 운명을 같이합니다. SSH 연결을 닫으면 세션도 끝납니다. 이를 피하는 방법은 세 가지입니다.

고전적인 tmux:

sudo apt install tmux
tmux new -A -s codex     # create or re-attach
cd ~/src/my-app && codex
# detach: Ctrl-b then d; later: tmux attach -t codex

세션이 끝나 버렸다면 codex resume --last가 그 디렉터리의 가장 최근 대화를 이어 가고, codex resume은 선택 화면을 엽니다. 휴대폰에 맞는 tmux 설정은 tmux, mosh, Tailscale 가이드에 있습니다.

비대화형 실행. codex exec "…"는 TUI 없이 작업 하나를 실행하고, codex exec resume --last는 그것을 이어 갑니다. cron 작업과 CI에 맞지만, 승인 요청에 답할 사람이 없으므로 아래의 샌드박스 설정이 더 중요해집니다.

세션을 소유하고 재부팅을 견디는 데몬. 24시간 가이드에서 systemd 유닛, Remote Control 서버, 그리고 Maude처럼 머신에서 자체 프로세스를 실행하는 앱을 비교합니다.

승인과 샌드박스

Codex에는 두 가지 별개의 제어가 있습니다. 명령이 무엇을 건드릴 수 있는지(샌드박스)와 언제 멈춰서 묻는지(승인 정책)입니다. 아래 값은 OpenAI의 승인과 보안 문서와 CLI 레퍼런스에서 왔습니다.

설정값서버에서의 의미
--sandbox / -sread-only, workspace-write, danger-full-accessgit 저장소에서는 workspace-write가 기본값. 편집은 프로젝트 안에 머물며, 켜지 않으면 네트워크 접근은 꺼져 있음.
--ask-for-approval / -aon-request, neveron-request는 작업이 샌드박스가 허용하는 것보다 많은 것을 필요로 할 때 물음. never는 전혀 묻지 않음. config.toml의 approval_policy는 granular도 받으며, 예전 값인 untrusted는 폐지됨.
--yolo(--dangerously-bypass-approvals-and-sandbox의 별칭)샌드박스도 요청도 없음. OpenAI는 이미 바깥에서 강화된 환경 전용으로 둠.

--full-auto는 예전 가이드에 아직 나옵니다. 이제는 지원 중단된 호환용 플래그이며, 레퍼런스는 대신 --sandbox workspace-write를 쓰라고 합니다. 샌드박스 안의 명령이 네트워크에 닿게 하려면(예를 들어 npm install이 작동하도록), ~/.codex/config.toml에 다음을 추가하세요.

sandbox_mode = "workspace-write"
approval_policy = "on-request"

[sandbox_workspace_write]
network_access = true

컨테이너에 관한 참고: 내 "VPS"가 사실 네임스페이스 작업을 막는 Docker나 LXC 컨테이너라면, 문서는 --sandbox danger-full-access를 권합니다. 컨테이너 자체가 샌드박스일 때만 그렇게 하세요. 장단점은 Claude의 바이패스 모드와 같으며, 에이전트를 전체 권한으로 안전하게 실행하기에서 다룹니다.

휴대폰 접근 선택지

선택지Linux VPS에서 작동?장점주의할 점
Codex Remote (ChatGPT 앱)공식적으로는 아님. 호스트는 macOS나 Windows에서 ChatGPT 데스크톱 앱을 실행해야 하며, 그 앱이 VPS의 SSH 프로젝트에 닿을 수 있음.공식, 요금제에 무료 포함, 네이티브 UI호스트 컴퓨터가 깨어 있고 온라인이어야 함
SSH 앱 + tmux예무료, 서버에 추가할 것 없음휴대폰 키보드로 전체 화면 TUI, 푸시 없음
Maude예 (SSH로 닿는 모든 Linux나 macOS)네이티브 채팅 UI, 인라인 승인, 푸시, Claude Code 등도 지원유료 앱. ChatGPT 요금제나 키는 여전히 필요

헤드리스 Linux와 Codex Remote에 대해 한마디. CLI 레퍼런스는 로컬 app-server용으로 codex remote-control start와 codex remote-control pair를 문서화합니다. 그러나 Remote connections 가이드는 여전히 호스트가 macOS나 Windows에서 데스크톱 앱을 실행한다고 말합니다. 사용자들이 이 차이에 대해 issue를 열었습니다. #31183은 헤드리스 Linux 호스트를 현재 모바일 클라이언트에서 다시 페어링할 수 없다고 보고하고, #35928은 그 모순을 지적합니다. 확인했을 때 둘 다 열려 있었습니다. 그 경로가 작동한다면 그것이 공식 경로입니다. 다만 아직 그것을 전제로 워크플로를 만들지는 마세요.

Maude로 휴대폰에서 실행하기

Maude는 TUI 없이 휴대폰에서 그 VPS를 조작하는 한 가지 방법입니다. 주소나 붙여넣은 ssh 명령으로 서버를 추가하면, 앱이 SSH로 자체 작은 데몬을 배포합니다. 그 데몬이 검증된 고정 버전의 Codex를 체크섬으로 확인해 설치하므로 설치 단계를 건너뜁니다. 휴대폰에서 ChatGPT 기기 코드나 API 키로 Codex에 로그인합니다. 그래도 먼저 ChatGPT에서 기기 코드 로그인을 켜야 합니다. 앱을 닫아도 세션은 서버에서 계속 실행되고, 승인 요청은 받은함과 허용/거부가 있는 푸시 알림으로 나타나며, 같은 서버에서 Codex 옆에 Claude Code, OpenCode, Grok Build, Antigravity를 실행할 수 있습니다. 자세한 내용은 Codex 에이전트 페이지에 있습니다.

자주 묻는 질문

서버에서 codex login이 왜 멈추나요?
일반 codex login은 localhost:1455에 콜백 서버를 띄우고 브라우저 리디렉션을 기다리는데, 다른 기기의 브라우저는 그것을 VPS로 전달할 수 없습니다. ChatGPT 보안 설정에서 기기 코드 로그인을 켠 뒤 codex login --device-auth를 쓰세요. 또는 ssh -L 1455:localhost:1455로 포트를 포워딩하세요.
Codex를 실행하려면 Node.js가 필요한가요?
아니요. 독립 실행형 설치 프로그램(curl -fsSL https://chatgpt.com/codex/install.sh | sh)과 릴리스 바이너리는 Node가 필요 없습니다. npm install -g @openai/codex라는 npm 경로를 택할 때만 Node가 필요합니다.
ChatGPT 요금제 대신 API 키를 쓸 수 있나요?
네: printenv OPENAI_API_KEY | codex login --with-api-key. 그러면 사용량은 ChatGPT 요금제 할당량에서 차감되지 않고 OpenAI API 요금으로 청구됩니다.
Codex Remote가 내 VPS를 볼 수 있나요?
지금은 간접적으로만 됩니다. OpenAI의 Remote 문서는 호스트로 macOS나 Windows의 ChatGPT 데스크톱 앱을 명시하며, 그 데스크톱 앱이 VPS의 SSH 프로젝트를 열 수 있습니다. CLI 페어링 경로(codex remote-control)도 문서화되어 있지만, 열려 있는 GitHub issue에서 헤드리스 Linux 호스트의 페어링 문제가 보고되고 있으니 믿기 전에 최신 문서를 확인하세요.
VPS에서는 어떤 샌드박스 모드를 써야 하나요?
workspace-write와 on-request 승인으로 시작하고, 빌드에서 패키지를 내려받아야 한다면 network_access를 켜세요. --yolo는 버려도 되는 머신이나 격리를 신뢰할 수 있는 컨테이너에만 쓰세요.

변경 사항

  • — 최초 게시. 설치, 인증, 샌드박스, Remote 관련 내용을 이 날짜에 OpenAI 문서와 openai/codex README로 확인했습니다.

내 서버의 Codex를 휴대폰으로

서버를 추가하고, ChatGPT 요금제로 로그인한 뒤 세션을 시작하세요. iOS와 Android.

Download Maude on the App Store Get Maude on Google Play