개발 워크스테이션 셋업
setupdevops
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 | 설정 | 효과 |
|---|---|---|
| Network | Tailscale VPN only | 인터넷에서 VM 비가시 |
| Firewall | SSH/RDP 비활성화, UDP 41641만 허용 | 공개 포트 0개 (SSH용) |
| SSH | 키 인증만, 비밀번호 비활성화 | Brute force 불가 |
| SSH | root 로그인 비활성화 | 권한 상승 방지 |
| Auth | Vertex 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 App | Dev 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 스크립트를 공유하여 동일 환경을 원커맨드로 구축.
Built with Claude Code on dev-workstation · 2026.04.20