Claude Code + WSL 작업 방법

방법 1: WSL 안에서 Claude Code 실행 (권장)

WSL 환경에 Claude Code를 직접 설치해서 WSL 파일 시스템에서 작업하는 가장 안정적인 방법입니다.

1단계 — WSL 설치 (없다면)

# PowerShell (관리자 권한)
wsl --install

재시작 후 Ubuntu 설정(사용자명/비밀번호) 완료

2단계 — WSL 안에서 Node.js 설치

# Ubuntu 터미널에서
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

3단계 — Claude Code 설치

# npm 전역 경로 설정 (sudo 없이 설치하기 위해)
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# Claude Code 설치
npm install -g @anthropic-ai/claude-code

4단계 — WSL 폴더에서 실행

cd ~/projects/my-project
claude

💡 WSL 홈 디렉터리(~/) 안에서 작업하는 것이 훨씬 빠릅니다. /mnt/c/... 같은 Windows 경로는 파일시스템 교차 I/O로 인해 느려질 수 있습니다.


방법 2: Windows 네이티브 설치 후 WSL 폴더 접근

Claude Code는 2025년 네이티브 Windows 버전을 출시해서, 이제 WSL 없이도 직접 Windows에서 실행할 수 있습니다.

# PowerShell에서 설치
winget install Anthropic.ClaudeCode

WSL 폴더는 이렇게 접근:

# Windows에서 WSL 경로 접근
cd \\wsl$\Ubuntu\home\<username>\projects\my-project
claude

또는 WSL 터미널에서 직접 claude 실행 (Windows에 설치된 버전 활용).


방법 3: VS Code WSL Remote + Claude Code

VS Code와 함께 사용하면 가장 편리합니다.

  1. VS Code에 WSL 확장(Remote – WSL) 설치
  2. WSL 터미널에서 프로젝트 폴더로 이동 후 code . 실행
  3. VS Code가 WSL 환경으로 열리면, 터미널에서 claude 실행

VS Code를 열면 좌측 하단에 WSL: Ubuntu 표시가 나타나고, Explorer에서 WSL 파일을 직접 편집하면서 Claude Code를 함께 사용할 수 있습니다.


어떤 방법을 선택할까?

상황추천 방법
주로 WSL/Linux 프로젝트방법 1 (WSL 내부 설치)
Windows 네이티브 프로젝트방법 2 (Windows 네이티브)
IDE 연동 원하는 경우방법 3 (VS Code WSL Remote)

공식 문서에서도 프로젝트 위치와 필요한 기능에 따라 Native Windows 또는 WSL 중 하나를 선택하도록 안내하고 있습니다.

80, 443 포트 방화벽 설정이후 wslip로 연결하는 방법

윈도우에서 80과 443 포트를 방화벽으로 허용한 후, WSL 내부 서비스(예: 웹 서버)에 호스트 IP로 연결하려면 포트 포워딩 설정이 필요합니다. WSL2는 별도 네트워크를 사용하므로 netsh 명령어로 윈도우에서 WSL IP로 트래픽을 전달해야 합니다.24hours-beginner.tistory+1

IP 주소 확인

먼저 PowerShell(관리자)에서 윈도우 IP를 ipconfig로 확인하고, WSL 터미널에서 ip addr show eth0 또는 hostname -I로 WSL IP(예: 172.x.x.x)를 확인하세요.

방화벽 규칙 추가

PowerShell(관리자 권한)에서 다음 명령어를 실행해 80, 443 포트 인바운드 허용:

New-NetFirewallRule -DisplayName "Allow 80-443 WSL" -Direction Inbound -LocalPort 80,443 -Protocol TCP -Action Allow

이 규칙은 TCP 인바운드 트래픽을 허용하며, 필요 시 Outbound도 추가하세요.velog+1

포트 포워딩 설정

PowerShell(관리자)에서 WSL IP(예: 172.20.0.1)를 사용해 명령어 실행:

netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=<WSL_IP>
netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=<WSL_IP>

설정 확인: netsh interface portproxy show v4tov4.junho85+1

연결 테스트

WSL에서 서버(예: nginx on 80)를 실행한 후, 다른 기기 브라우저에서 윈도우_IP:80 또는 윈도우_IP:443으로 접근하세요.

다음은 안될 떄, 추가로 확인 절차

windows에서 ipconfig로 IP확인(WanIP, LanIP)

WSL에서 IP확인
ip addr show eth0
$ hostname -I

먼저 확인할 것

아래 두 가지가 가장 흔한 실패 원인입니다.

  • WSL 안의 웹 서버가 127.0.0.1에만 바인딩되어 있으면 portproxy로 못 들어옵니다. 반드시 0.0.0.0:800.0.0.0:443처럼 바인딩되어야 합니다.gwangtori+1
  • Windows 방화벽 규칙은 열었더라도, Hyper-V/WSL 방화벽 규칙이 따로 막을 수 있습니다. Microsoft 문서도 WSL용 Hyper-V 방화벽 규칙을 별도로 다룹니다.learn.microsoft

방법 1: Windows Hosts 파일 수정 (가장 추천)

스마트폰(외부망)에서 접속이 된다는 것은 포트 포워딩, 윈도우 방화벽, 그리고 WSL 내부의 Nginx 설정이 모두 완벽하게 작동하고 있다는 뜻입니다. 이제 전 세계 어디서든 사용자님의 서버에 접속할 수 있는 상태가 되었습니다.

로컬 컴퓨터에서 자신의 공인 IP(220.68.77.33)로 접속이 안 되는 현상은 **’NAT Loopback’ 또는 ‘Hairpinning’**이라고 불리는 네트워크 기술적 특성 때문입니다. 윈도우 시스템이 자기 자신에게 할당된 외부 IP로 나갔다가 다시 들어오는 패킷을 정상적으로 처리하지 못하는 경우가 많습니다.

로컬 컴퓨터에서만 220.68.77.33을 127.0.0.1로 인식하게 만들어 루프백 문제를 우회합니다.

  1. 메모장을 관리자 권한으로 엽니다.
  2. C:\Windows\System32\drivers\etc\hosts 파일을 엽니다.
  3. 맨 아래에 다음 내용을 추가하고 저장합니다:
    text
    127.0.0.1 220.68.77.33
  4. 이제 브라우저에서 http://220.68.77.33을 입력하면 즉시 로컬 서버(WSL)로 연결됩니다.

WSL IP로 연결 다른 방법

외부 IP로 연결이 안 되는 문제는 WSL 2의 기본 네트워크 모드(NAT)와 netsh portproxy의 불안정성 때문일 가능성이 큽니다. 특히 현재 WSL 내부에서 443 포트가 리스닝 상태가 아니며, 윈도우 호스트와 WSL 간의 방화벽 차단으로 인해 프록시가 정상 작동하지 않고 있습니다.

이를 해결하기 위해 가장 현대적이고 확실한 방법인 **미러드 네트워크 모드(Mirrored Networking Mode)**로 전환하는 계획을 세웠습니다. 이 모드에서는 별도의 포트 포워딩 설정 없이 WSL의 서비스를 호스트 IP에서 직접 접근할 수 있습니다.

주요 제안 사항:

1. Mirrored Mode 활성화.wslconfig 설정을 통해 WSL이 호스트의 IP를 직접 공유하도록 변경합니다. [NEW] .wslconfig
Enable mirrored networking in the user’s home directory. Location: C:\Users\User\.wslconfig (or equivalent %USERPROFILE%\.wslconfig)

ini
[wsl2]
networkingMode=mirrored

      2. 기존 설정 초기화: 혼선을 방지하기 위해 netsh interface portproxy 설정을 삭제합니다.

      powershell
      netsh interface portproxy reset

      3. WSL 재시작: 설정을 적용하기 위해 wsl --shutdown을 실행합니다.

      Run wsl --shutdown to apply the new networking configuration.

      이후

      관리자 권한으로 PowerShell 또는 명령 프롬프트를 열고 다음 명령어를 실행해 주세요:

      powershell# 기존 포트 포워딩 규칙 삭제 (관리자 권한 필수)
      netsh interface portproxy reset

      그 후, WSL로 돌아가서 Nginx를 다시 시작하면 포트 80으로 외부 접속이 가능해집니다:

      bash
      sudo service nginx restart

      Ubuntu에서 Ollama 운영

      Ubuntu에서 Ollama를 운영할 때는 보통 설치 → systemd 서비스 확인 → 모델 pull → GPU/원격접속 설정 → 모니터링/업데이트 순서로 관리하면 됩니다. 공식 Linux 문서도 systemd 서비스 파일을 사용하는 운영 방식을 안내합니다.

      기본 설치

      • 설치는 공식 스크립트로 진행합니다: curl -fsSL https://ollama.com/install.sh | sh 또는 Ubuntu용 안내에 맞는 설치 방법을 사용합니다. 설치가 끝나면 ollama.service가 만들어지고 자동 시작됩니다. docs.ollama+1
      • 상태 확인은 systemctl status ollama로 하고, 실행 중인지 ss -napt | grep 11434 또는 curl http://127.0.0.1:11434/api/tags로 확인합니다. 기본적으로 Ollama API는 127.0.0.1:11434에서 열립니다. server-world

      서비스 운영

      • ollama serve는 수동 실행, systemd는 상시 운영에 적합합니다. 터미널을 닫아도 계속 돌아가게 하려면 systemd 서비스로 운용하는 것이 정석입니다.reddit+1
      • 재시작은 sudo systemctl restart ollama, 중지는 sudo systemctl stop ollama, 자동 시작은 sudo systemctl enable ollama로 관리합니다.server-world+1

      모델 관리

      • 모델은 ollama pull llama3.1:8b, ollama pull qwen3:8b처럼 내려받고, ollama list로 확인합니다. 이후 ollama run 모델명으로 테스트합니다.docs.ollama
      • 실제 서비스에서는 자주 쓰는 모델만 유지하고, 나머지는 지우거나 교체해 디스크와 메모리를 아끼는 편이 좋습니다.docs.ollama

      GPU 설정

      • Linux에서 Ollama가 systemd로 실행될 때는 환경변수를 서비스 오버라이드로 넣는 방식이 권장됩니다. 예를 들어 sudo systemctl edit ollama.service[Service]Environment="OLLAMA_HOST=0.0.0.0:11434" 같은 식으로 추가합니다.mostlytech+1
      • NVIDIA/AMD/Intel GPU 활용 여부는 드라이버와 환경에 따라 달라지며, GPU가 없으면 CPU-only로 동작합니다. Ubuntu 안내에서도 GPU가 없을 경우 CPU 모드로 실행된다고 설명합니다.server-world

      원격 접속

      • 다른 PC에서 쓰려면 OLLAMA_HOST=0.0.0.0:11434로 바인딩을 바꾸고, ufw에서 포트를 열어야 합니다. 예: sudo ufw allow 11434/tcp 또는 LAN만 허용하는 규칙을 쓰는 것이 안전합니다.glukhov+1
      • 단, Ollama는 기본적으로 인증/레이트리밋이 없으므로 공개 인터넷에 직접 노출하면 안 됩니다. 가능하면 Tailscale/WireGuard/SSH 터널 같은 방식으로 제한하는 것이 좋습니다.serverman.co+1

      운영 팁

      • 안정성 우선이면 systemd 상시 구동 + LAN/VPN 제한 + 필요한 모델만 pull이 가장 깔끔합니다.glukhov+1
      • 성능 우선이면 GPU 드라이버를 먼저 잡고, 큰 모델 대신 7B~8B급 모델로 시작하는 편이 관리가 쉽습니다.mostlytech+1

      가능합니다. 가장 쉬운 방법은 OLLAMA_KEEP_ALIVE=-1로 서버를 띄워서, 현재 많이 쓰는 1개 모델만 메모리에 계속 유지하는 것입니다. Ollama는 기본적으로 모델을 약 5분 후 언로드하지만, OLLAMA_KEEP_ALIVE나 요청별 keep_alive로 유지 시간을 조절할 수 있습니다.insiderllm+1

      1개 모델만 상시 유지하는 방법

      방법 A: 서버 전체에 적용

      ollama.service에 환경변수를 넣습니다.

      bashsudo systemctl edit ollama.service

      아래 추가:

      text[Service]
      Environment="OLLAMA_KEEP_ALIVE=-1"

      적용:

      bashsudo systemctl daemon-reload
      sudo systemctl restart ollama

      이렇게 하면 서버가 실행되는 동안 모델이 계속 메모리에 남아 있게 됩니다.docs.ollama+1

      방법 B: 특정 모델만 유지

      한 번만 호출해서 그 모델을 계속 유지시킬 수도 있습니다.

      bashcurl http://localhost:11434/api/generate -d '{
        "model": "qwen3:8b",
        "prompt": "keep alive",
        "keep_alive": -1
      }'

      이 방식은 그 요청으로 활성화한 1개 모델만 오래 붙잡는 용도로 쓰기 좋습니다.insiderllm+1

      3개 모델 중 1개만 상시 운영할 때

      Ollama는 기본적으로 현재 메모리에 올라간 모델이 있으면 그 모델을 유지하고, 다른 모델을 쓰면 그쪽으로 바뀌면서 메모리를 다시 사용합니다. 그래서 실무적으로는:

      • 상시 쓸 1개 모델만 keep_alive=-1
      • 나머지 2개는 필요할 때만 호출
      • 필요 없는 모델은 ollama stop 모델명으로 내리기

      이 방식이 가장 단순합니다.ollama.apidog+2

      추천 운영 방식

      항상 붙여둘 모델

      • 캘린더 CRUD, 음성 명령 처리용이면 가장 자주 쓰는 1개 모델만 상시 유지하세요.
      • 예: qwen3:8b 또는 glm-4.7-flash 같은 주력 모델 1개.ollama+1

      나머지 모델

      • 테스트용, 백업용, 고성능 모델은 필요할 때만 로드
      • 사용 후 ollama stop 모델명으로 정리
      bashollama stop qwen3:8b

      확인 명령

      현재 어떤 모델이 올라와 있는지 보려면:

      bashollama ps

      이걸로 실제로 메모리에 상주 중인 모델을 확인할 수 있습니다.

      Ollama LLM을 별도 서버에 설치하고 OpenClaw에서 원격으로 사용하는 방법은 서버에서 Ollama를 외부 접근 가능하게 설정한 후, OpenClaw 구성 파일에서 서버 주소를 지정하는 것입니다. 이 과정은 Ubuntu나 Linux 서버에서 주로 적용되며, 보안 주의가 필요합니다.

      Ollama 서버 설정 (별도 서버)

      • 서버(Linux/Ubuntu)에 Ollama 설치: curl -fsSL https://ollama.com/install.sh | sh 실행.recording-it.tistory
      • 원격 접근 허용: OLLAMA_HOST=0.0.0.0:11434 환경변수 설정.
        systemd 서비스 편집 (systemctl edit ollama.service) 후 [Service] Environment="OLLAMA_HOST=0.0.0.0" 추가하고 재시작 (sudo systemctl daemon-reload && sudo systemctl restart ollama).
      • 모델 다운로드: ollama pull llama3.1:8b (또는 원하는 모델, 추천 8B).
      • 방화벽 확인: sudo ufw allow 11434로 포트 개방, 서버 IP 확인 (예: 192.168.x.x).blog.naver

      OpenClaw 클라이언트 설정 (다른 컴퓨터)

      • OpenClaw 설치: npm install -g openclaw (Node.js 필요).recording-it.tistory
      • 온보딩 실행: openclaw 명령으로 마법사 실행, Quick Start 선택 후 Ollama provider 선택.recording-it.tistory
      • 구성 파일 수정 (~/.openclaw/openclaw.json 또는 해당 경로):
        text{ "agent": { "provider": "ollama", "model": "llama3.1:8b", "baseUrl": "http://서버IP:11434" } }서버 IP를 실제 주소로 변경.open-clawai+1
      • 재시작: openclaw restart 또는 systemctl restart openclaw-gateway.recording-it.tistory

      테스트 및 주의사항

      다른 컴퓨터에서 curl http://서버IP:11434/api/tags로 Ollama 연결 확인.growth-coder.tistory
      OpenClaw에서 Telegram 등 앱 연동 후 “hello” 테스트. GPU 서버 추천, 보안 위해 VPN/SSH 터널 사용.fdcservers+1

      error: Content is protected !!