Skip to content

GCP Compute Engine의 OpenClaw(Docker, 프로덕션 VPS 가이드) ​

목표 ​

내구성 상태, 기본 제공 바이너리, 안전한 다시 시작 동작을 갖춘 Docker를 사용하여 GCP Compute Engine VM에서 영구 OpenClaw 게이트웨이를 실행하세요.

'OpenClaw 24/7, ~$5-12/월'을 원하는 경우 이는 Google Cloud에서 안정적인 설정입니다. 가격은 머신 유형과 지역에 따라 다릅니다. 워크로드에 맞는 가장 작은 VM을 선택하고 OOM에 도달하면 확장하세요.

우리는 무엇을 하고 있나요(간단한 용어로)? ​

  • GCP 프로젝트 생성 및 결제 활성화
  • Compute Engine VM 만들기
  • Docker 설치(격리된 앱 런타임)
  • Docker에서 OpenClaw Gateway 시작
  • 호스트에서 ~/.openclaw + ~/.openclaw/workspace 유지(재시작/재구축 후에도 유지)
  • SSH 터널을 통해 노트북에서 Control UI에 액세스

게이트웨이는 다음을 통해 액세스할 수 있습니다.

  • 노트북에서 SSH 포트 전달
  • 방화벽 및 토큰을 직접 관리하는 경우 직접 포트 노출

이 가이드에서는 GCP Compute Engine에서 Debian을 사용합니다. 우분투도 작동합니다. 그에 따라 패키지를 매핑합니다. 일반 Docker 흐름은 Docker를 참조하세요.


빠른 경로(경험이 풍부한 운영자) ​

  1. GCP 프로젝트 생성 + Compute Engine API 활성화
  2. Compute Engine VM 생성(e2-small, Debian 12, 20GB)
  3. VM에 SSH로 연결
  4. 도커 설치
  5. OpenClaw 저장소 복제
  6. 영구 호스트 디렉터리 생성
  7. .env 및 docker-compose.yml 구성
  8. 필수 바이너리 굽기, 빌드 및 실행

필요한 것 ​

  • GCP 계정(e2-micro에 적합한 무료 등급)
  • gcloud CLI 설치(또는 Cloud Console 사용)
  • 노트북에서 SSH 액세스
  • SSH + 복사/붙여넣기를 통한 기본적인 편안함
  • ~20~30분
  • 도커와 도커 컴포즈
  • 모델 인증 자격 증명
  • 선택적 공급자 자격 증명
    • 왓츠앱 QR
    • 텔레그램 봇 토큰
    • 지메일 OAuth

1) gcloud CLI 설치(또는 콘솔 사용) ​

옵션 A: gcloud CLI(자동화에 권장)

https://cloud.google.com/sdk/docs/install/에서 설치하세요.

초기화 및 인증:

bash
gcloud init
gcloud auth login

옵션 B: Cloud Console

모든 단계는 https://console.cloud.google.com의 웹 UI를 통해 수행할 수 있습니다.


2) GCP 프로젝트 생성 ​

CLI:

bash
gcloud projects create my-openclaw-project --name="OpenClaw Gateway"
gcloud config set project my-openclaw-project

https://console.cloud.google.com/billing에서 결제를 활성화합니다(Compute Engine에 필요).

Compute Engine API를 활성화합니다.

bash
gcloud services enable compute.googleapis.com

콘솔:

  1. IAM 및 관리자 > 프로젝트 생성으로 이동합니다.
  2. 이름을 지정하고 생성합니다.
  3. 프로젝트에 대한 결제 활성화
  4. API 및 서비스 > API 활성화 > "Compute Engine API" 검색 > 활성화로 이동합니다.

3) VM 생성 ​

머신 유형:

유형사양비용메모
e2-소형vCPU 2개, 2GB RAM~$12/월추천
e2-마이크로vCPU 2개(공유), 1GB RAM무료 등급 적용 가능OOM이 로드될 수 있음

CLI:

bash
gcloud compute instances create openclaw-gateway \
  --zone=us-central1-a \
  --machine-type=e2-small \
  --boot-disk-size=20GB \
  --image-family=debian-12 \
  --image-project=debian-cloud

콘솔:

  1. Compute Engine > VM 인스턴스 > 인스턴스 만들기로 이동합니다.
  2. 이름 : openclaw-gateway
  3. 지역: us-central1, 구역: us-central1-a
  4. 머신 종류 : e2-small
  5. 부팅 디스크: Debian 12, 20GB
  6. 만들기

4) VM에 SSH로 연결 ​

CLI:

bash
gcloud compute ssh openclaw-gateway --zone=us-central1-a

콘솔:

Compute Engine 대시보드에서 VM 옆에 있는 'SSH' 버튼을 클릭하세요.

참고: SSH 키 전파는 VM 생성 후 1~2분 정도 걸릴 수 있습니다. 연결이 거부되면 기다렸다가 다시 시도하세요.


5) Docker 설치(VM에) ​

bash
sudo apt-get update
sudo apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER

그룹 변경 사항을 적용하려면 로그아웃했다가 다시 로그인하세요.

bash
exit

그런 다음 SSH를 다시 시작합니다.

bash
gcloud compute ssh openclaw-gateway --zone=us-central1-a

확인:

bash
docker --version
docker compose version

6) OpenClaw 저장소 복제 ​

bash
git clone https://github.com/openclaw/openclaw.git
cd openclaw

이 가이드에서는 바이너리 지속성을 보장하기 위해 사용자 지정 이미지를 빌드한다고 가정합니다.


7) 영구 호스트 디렉터리 생성 ​

Docker 컨테이너는 임시적입니다. 모든 장기 상태는 호스트에 있어야 합니다.

bash
mkdir -p ~/.openclaw
mkdir -p ~/.openclaw/workspace

8) 환경 변수 구성 ​

저장소 루트에 .env를 생성합니다.

bash
OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=change-me-now
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789

OPENCLAW_CONFIG_DIR=/home/$USER/.openclaw
OPENCLAW_WORKSPACE_DIR=/home/$USER/.openclaw/workspace

GOG_KEYRING_PASSWORD=change-me-now
XDG_CONFIG_HOME=/home/node/.openclaw

강력한 비밀을 생성합니다:

bash
openssl rand -hex 32

이 파일을 커밋하지 마세요.


9) Docker Compose 구성 ​

docker-compose.yml를 생성하거나 업데이트하세요.

yaml
services:
  openclaw-gateway:
    image: ${OPENCLAW_IMAGE}
    build: .
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - HOME=/home/node
      - NODE_ENV=production
      - TERM=xterm-256color
      - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
      - OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
      - GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
      - XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
      - PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
    ports:
      # Recommended: keep the Gateway loopback-only on the VM; access via SSH tunnel.
      # To expose it publicly, remove the `127.0.0.1:` prefix and firewall accordingly.
      - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"

      # Optional: only if you run iOS/Android nodes against this VM and need Canvas host.
      # If you expose this publicly, read /gateway/security and firewall accordingly.
      # - "18793:18793"
    command:
      [
        "node",
        "dist/index.js",
        "gateway",
        "--bind",
        "${OPENCLAW_GATEWAY_BIND}",
        "--port",
        "${OPENCLAW_GATEWAY_PORT}",
      ]

10) 필요한 바이너리를 이미지에 굽습니다(중요). ​

실행 중인 컨테이너 내부에 바이너리를 설치하는 것은 함정입니다. 런타임에 설치된 모든 항목은 다시 시작하면 손실됩니다.

기술에 필요한 모든 외부 바이너리는 이미지 빌드 시 설치되어야 합니다.

아래 예에서는 세 가지 일반적인 바이너리만 보여줍니다.

  • gog Gmail 액세스용
  • Google 지역 정보의 경우 goplaces
  • WhatsApp의 경우 wacli

이는 전체 목록이 아닌 예입니다. 동일한 패턴을 사용하여 필요한 만큼 많은 바이너리를 설치할 수 있습니다.

나중에 추가 바이너리에 의존하는 새로운 기술을 추가하는 경우 다음을 수행해야 합니다.

  1. Dockerfile 업데이트
  2. 이미지 재구축
  3. 컨테이너 다시 시작

도커파일 예시

dockerfile
FROM node:22-bookworm

RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*

# Example binary 1: Gmail CLI
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog

# Example binary 2: Google Places CLI
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/goplaces

# Example binary 3: WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/wacli

# Add more binaries below using the same pattern

WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts

RUN corepack enable
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build

ENV NODE_ENV=production

CMD ["node","dist/index.js"]

11) 빌드 및 실행 ​

bash
docker compose build
docker compose up -d openclaw-gateway

바이너리 확인:

bash
docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker compose exec openclaw-gateway which wacli

예상 출력:

/usr/local/bin/gog
/usr/local/bin/goplaces
/usr/local/bin/wacli

12) 게이트웨이 확인 ​

bash
docker compose logs -f openclaw-gateway

성공:

[gateway] listening on ws://0.0.0.0:18789

13) 노트북에서 액세스 ​

게이트웨이 포트를 전달할 SSH 터널을 만듭니다.

bash
gcloud compute ssh openclaw-gateway --zone=us-central1-a -- -L 18789:127.0.0.1:18789

브라우저에서 엽니다.

http://127.0.0.1:18789/

게이트웨이 토큰을 붙여넣으세요.


무엇이 지속되는지(진실의 출처) ​

OpenClaw는 Docker에서 실행되지만 Docker는 정보의 원천이 아닙니다. 수명이 긴 모든 상태는 다시 시작, 재구축 및 재부팅 후에도 유지되어야 합니다.

구성요소위치지속성 메커니즘메모
게이트웨이 구성/home/node/.openclaw/호스트 볼륨 마운트openclaw.json, 토큰 포함
모델 인증 프로필/home/node/.openclaw/호스트 볼륨 마운트OAuth 토큰, API 키
스킬 구성/home/node/.openclaw/skills/호스트 볼륨 마운트스킬레벨 상태
에이전트 작업공간/home/node/.openclaw/workspace/호스트 볼륨 마운트코드 및 에이전트 아티팩트
WhatsApp 세션/home/node/.openclaw/호스트 볼륨 마운트QR 로그인 유지
Gmail 열쇠 고리/home/node/.openclaw/호스트 볼륨 + 비밀번호GOG_KEYRING_PASSWORD 필요
외부 바이너리/usr/local/bin/도커 이미지빌드 시 구워져야 합니다
노드 런타임컨테이너 파일 시스템도커 이미지모든 이미지 빌드를 다시 작성
OS 패키지컨테이너 파일 시스템도커 이미지런타임에 설치하지 않음
도커 컨테이너임시재시작 가능파괴해도 안전함

업데이트 ​

VM에서 OpenClaw를 업데이트하려면:

bash
cd ~/openclaw
git pull
docker compose build
docker compose up -d

문제 해결 ​

SSH 연결이 거부되었습니다

SSH 키 전파는 VM 생성 후 1~2분 정도 걸릴 수 있습니다. 기다렸다가 다시 시도하세요.

OS 로그인 문제

OS 로그인 프로필을 확인하세요.

bash
gcloud compute os-login describe-profile

계정에 필수 IAM 권한(Compute OS 로그인 또는 Compute OS 관리자 로그인)이 있는지 확인하세요.

메모리 부족(OOM)

e2-micro를 사용하고 OOM에 도달하는 경우 e2-small 또는 e2-medium으로 업그레이드하세요.

bash
# Stop the VM first
gcloud compute instances stop openclaw-gateway --zone=us-central1-a

# Change machine type
gcloud compute instances set-machine-type openclaw-gateway \
  --zone=us-central1-a \
  --machine-type=e2-small

# Start the VM
gcloud compute instances start openclaw-gateway --zone=us-central1-a

서비스 계정(보안 모범 사례) ​

개인적인 용도로는 기본 사용자 계정이 제대로 작동합니다.

자동화 또는 CI/CD 파이프라인의 경우 최소한의 권한으로 전용 서비스 계정을 만듭니다.

  1. 서비스 계정을 만듭니다.

    bash
    gcloud iam service-accounts create openclaw-deploy \
      --display-name="OpenClaw Deployment"
  2. Compute 인스턴스 관리자 역할(또는 더 좁은 사용자 정의 역할)을 부여합니다.

    bash
    gcloud projects add-iam-policy-binding my-openclaw-project \
      --member="serviceAccount:openclaw-deploy@my-openclaw-project.iam.gserviceaccount.com" \
      --role="roles/compute.instanceAdmin.v1"

자동화를 위해 소유자 역할을 사용하지 마십시오. 최소 권한의 원칙을 사용하십시오.

IAM 역할에 대한 자세한 내용은 https://cloud.google.com/iam/docs/understanding-roles를 참조하세요.


다음 단계 ​

비공식 커뮤니티 번역 · 공식 영문 문서