개발 워크스테이션 셋업

2026.04.20

컴퓨터 앞에 앉지 않아도 코딩할 수 있는 인프라를 구축하다.

GCP Tailscale AI Agents

Motivation

왜 중앙 서버가 필요한가

결국 컴퓨터 앞에도 앉기 싫고, 더 자유롭게 에이전트와 대화를 하거나
아예 대화를 안 하는 방향으로 가고 싶다.

기존 문제

기기마다 환경 세팅, .env 관리, git clone, 도구 설치를 반복. 기기 바꿀 때마다 컨텍스트 전환 비용 발생.

해결

클라우드에 "내 컴퓨터"를 올리고, 모든 기기는 모니터+키보드 역할만. SSH 하나면 어디서든 동일한 환경.

Architecture

전체 구조

  iPad / Mac / iPhone
       │
       │  Tailscale VPN (WireGuard)
       │  Zero Trust — 인터넷에 포트 개방 없음
       │
  ┌────▼─────────────────────────────────────┐
  │  GCP VM  dev-workstation                 │
  │  Ubuntu 24.04 · e2-standard-4 · 서울     │
  │                                           │
  │  ┌─ AI Agents ─────────────────────────┐  │
  │  │  ccv    Claude Code (Vertex AI)     │  │
  │  │  codex  Codex CLI (OpenAI)          │  │
  │  │  gmi    Gemini CLI (Google)         │  │
  │  │  gh     GitHub CLI                  │  │
  │  └────────────────────────────────────-┘  │
  │                                           │
  │  ┌─ Dev Tools ─────────────────────────┐  │
  │  │  tmux · git · rg · fzf · fd · yazi │  │
  │  │  zoxide · Node.js 22               │  │
  │  └────────────────────────────────────-┘  │
  │                                           │
  │  ~/workspace/                             │
  │    ├── automarketing/                     │
  │    ├── dangil_backend/                    │
  │    ├── dangil_frontend/                   │
  │    └── pog_dangil/                        │
  └───────────────────────────────────────────┘

Build Process

구축 과정 — 3단계 파이프라인

Deep Interview → Ralplan (합의) → Autopilot (실행) 파이프라인으로 요구사항 수집부터 코드 생성까지 자동화.

Deep Interview · 7 rounds
자동화 범위, 접속 방식, 도구 선택, VM 스펙 등을 Socratic Q&A로 명확화. Ambiguity 100% → 13%.
Ralplan Consensus · 2 iterations
Planner → Architect → Critic 루프. v1 REVISE (CRITICAL 2건) → v2 APPROVE. Tunnel 인증 흐름, teardown 순서 재설계.
Autopilot Execution
8개 파일 생성, 코드 리뷰 반영 (인젝션 방지, 방화벽 태그 분리, state 보호 등 6건 수정).
실전 세팅 + 디버깅
GCP VM 생성 → Cloudflare Tunnel 시도 → Tailscale 전환 → 포트 2222 해결 → 보안 하드닝.

Key Decisions

주요 의사결정

Cloudflare Tunnel → Tailscale

Cloudflare Tunnel은 SSH ProxyCommand 필요 → iPad Termius 미지원. Tailscale은 VPN 레이어로 동작하여 어떤 SSH 클라이언트에서든 접속 가능.

OAuth → Vertex AI

Claude Code OAuth는 headless VM에서 redirect URI 인증 실패. GCP VM이니까 Vertex AI 경유로 전환 — API 키 관리도 불필요.

Shell Scripts > Terraform

단일 VM 관리에 Terraform은 과잉. gcloud/cloudflared CLI가 이미 선언적 인터페이스 제공. 상태 추적은 .state/resources.json으로 경량 보완.

SSH 포트 2222

Tailscale이 자체 IP의 포트 22를 가로채는 문제. systemd socket override로 2222 추가하여 Tailscale SSH 충돌 회피.

Security

보안 구성

Layer설정효과
NetworkTailscale VPN only인터넷에서 VM 비가시
FirewallSSH/RDP 비활성화, UDP 41641만 허용공개 포트 0개 (SSH용)
SSH키 인증만, 비밀번호 비활성화Brute force 불가
SSHroot 로그인 비활성화권한 상승 방지
AuthVertex AI (GCP IAM)API 키 파일 불필요

Workflow

실제 사용 흐름

Mac에서 작업 시작

ssh dev-workstation
tmux new -s work
cd automarketing
ccv

iPad로 전환

# Mac 터미널 그냥 닫기
# iPad Termius로 접속
ssh dev-workstation
tmux attach -s work
# → 같은 화면 그대로
컨텍스트 전환 비용 = 0.
커서 위치, 실행 중인 프로세스, 터미널 출력 전부 그대로.

Comparison

Claude Code App vs Dev Workstation

Claude Code AppDev Workstation
동기화 대상대화 히스토리코드 + 환경 + 세션 전부
기기별 세팅git clone + env + 도구 설치불필요 (SSH만)
기기 전환컨텍스트 재구성 필요tmux attach → 즉시
로컬 의존로컬 머신이 켜져있어야VM 항상 가동
원격 방식Teleport/Remote/PR (비동기)실시간 동일 환경

에이전트가 아무리 똑똑해도, 작업 환경이 파편화되어 있으면 비효율이 생긴다.
기반을 먼저 통일해야 한다.

Summary

오늘의 결과

1
중앙 서버
6
AI/Dev 도구
4
프로젝트 동기화
0
공개 포트
0
컨텍스트 전환 비용
$0
Tailscale 비용

What's Next

다음 단계

문서 자산화
documents private repo → 중앙 서버 관리 → Cloudflare 도메인 배포
에이전트 자율 실행
VM에서 에이전트가 독립적으로 작업 수행. 사람은 결과만 확인.
VM 자동 시작/중지
GCP 스케줄러로 사용 시간대만 가동하여 크레딧 절약.
팀원 온보딩
my-ai-infra 스크립트를 공유하여 동일 환경을 원커맨드로 구축.