# OpenClaw Migration Guide 이 문서는 현재 `~/.openclaw` 환경을 다른 PC로 옮길 때 필요한 최소/권장 절차를 정리한다. ## 목표 - OpenClaw 본체를 새 PC에 안정적으로 재설치 - 기존 workspace / custom project / 설정을 복원 - KIS 자동화(`projects/kis-trader`)와 MCP 구성 재연결 - 크론 작업 복원 - 로컬 모델/포트/경로 차이로 인한 오류를 줄임 --- ## 권장 전략 통폴더 복사보다 아래 방식이 더 안정적이다. 1. **새 PC에 OpenClaw 본체 재설치** 2. **`~/.openclaw`에서 필요한 설정/문서/프로젝트만 복원** 3. **언어 런타임/의존성 재설치** 4. **크론/서비스 재등록** 5. **로컬 경로/포트/모델 설정 보정** 6. **각 MCP / 자동화 / 백업 스크립트 개별 점검** --- ## 반드시 확인할 환경 차이 다른 PC에서 자주 깨지는 원인: - 절대경로 차이 (`/home/arin/...`) - Node / npm / dotnet / python 버전 차이 - OpenClaw 버전 차이 - 로컬 llama.cpp 서버 포트 차이 - 인증/토큰/세션 파일 차이 - GUI/헤드리스 환경 차이 - 크론/서비스 미복원 - 방화벽/로컬 네트워크 차이 --- ## 이식 우선순위 ### 1. 가장 중요한 파일/폴더 - `~/.openclaw/openclaw.json` - `~/.openclaw/cron/crontab.backup` - `~/.openclaw/cron/jobs.json` - `~/.openclaw/workspace/AGENTS.md` - `~/.openclaw/workspace/SOUL.md` - `~/.openclaw/workspace/USER.md` - `~/.openclaw/workspace/MEMORY.md` - `~/.openclaw/workspace/memory/*.md` - `~/.openclaw/workspace/acpx.json` - `~/.openclaw/workspace/projects/kis-trader/` - `~/.openclaw/workspace/projects/mcp_sshterminal/` - `~/.openclaw/workspace/KIS_MCP_Server/` ### 2. 선택 복원 - `~/.openclaw/subagents/runs.json` - `~/.openclaw/agents/main/agent/models.json` ### 3. 보통 재생성/재설정 권장 - `.venv` - `__pycache__` - `price_logs/` - sqlite / 세션 transcript / 캐시류 - token/env 파일 --- ## 새 PC 복원 절차 ### Step 0. 압축 복사만으로 끝나지 않는 이유 `~/.openclaw`만 복사해도 다음은 자동으로 복구되지 않을 수 있다. - 전역 npm 패키지 경로 - OpenClaw 본체 설치 경로 - OpenClaw 확장(plugin) 설치 경로 - Node / npm / dotnet / python 런타임 - 시스템 크론 등록 상태 - 로컬 GUI / 브라우저 실행 환경 즉, **압축 파일은 데이터/설정 복원용**이고, 실제 실행 가능 상태로 만들려면 아래 추가 셋업을 다시 해야 한다. ### Step 1. OpenClaw 설치 새 PC에서 OpenClaw를 먼저 설치한다. - Node / npm 준비 - OpenClaw 설치 - 실행 파일/서비스 기본 동작 확인 권장 확인: ```bash which openclaw npm root -g openclaw status ``` 정상 응답이 먼저 나와야 한다. --- ### Step 2. `.openclaw` 기본 구조 복원 기존 백업에서 다음을 새 PC `~/.openclaw`로 복사: - `openclaw.json` - `cron/` - `workspace/` - `agents/main/agent/models.json` (선택) 주의: - 통째로 덮어쓰기보다 필요한 파일/폴더를 선별 복사하는 편이 안전함 --- ### Step 3. 경로 보정 현재 설정은 `/home/arin/...` 절대경로를 많이 사용한다. 새 PC 사용자명이 다르면 아래를 전부 점검해야 한다. 주요 위치: - `~/.openclaw/openclaw.json` - `~/.openclaw/workspace/acpx.json` - `~/.openclaw/workspace/projects/kis-trader/*.sh` - `~/.openclaw/workspace/projects/kis-trader/*.py` - `~/.openclaw/cron/crontab.backup` 추천 검사: ```bash grep -RIn '/home/arin' ~/.openclaw ``` --- ### Step 3-1. 플러그인 / 확장 복원 (중요) 현재 환경은 OpenClaw 본체 외에 **ACPX 확장 플러그인**에 의존한다. 플러그인 오류가 많이 났다면 이 단계가 빠졌을 가능성이 높다. 현재 기준 경로: - OpenClaw 전역 설치 경로 예시: - `/home/arin/.npm-global/lib/node_modules/openclaw` - ACPX 확장 경로: - `/home/arin/.npm-global/lib/node_modules/openclaw/extensions/acpx` `openclaw.json`에 실제로 박혀 있는 설정도 다음을 기대한다. - `plugins.allow = ["acpx", "telegram"]` - `plugins.load.paths = ["/home/arin/.npm-global/lib/node_modules/openclaw/extensions/acpx"]` - `plugins.entries.acpx.enabled = true` - `plugins.entries.telegram.enabled = true` 즉 새 PC에서 사용자 홈/전역 npm 경로가 달라지면, 아래 둘 중 하나를 해야 한다. 1. **같은 경로 구조로 OpenClaw 재설치** 2. 또는 `openclaw.json`의 `plugins.load.paths`, `plugins.installs.acpx.*`를 새 경로로 수정 권장 확인: ```bash npm root -g ls -la $(npm root -g)/openclaw ls -la $(npm root -g)/openclaw/extensions/acpx ``` 만약 ACPX가 없다면, 새 PC에서 OpenClaw 설치가 불완전하거나 설치 경로가 달라진 것일 수 있다. ### Step 3-2. 추가 런타임/CLI 의존성 현재 구성은 다음 외부 런타임/도구를 기대한다. - `node`, `npm`, `npx` - `python3` - `.NET 9 SDK` - `git` - `cron` (`crontab`) 그리고 MCP/브리지용으로 다음 npm 실행형이 실제로 사용된다. - `@playwright/mcp` - `mcp-remote` 이 둘은 `npx -y ...`로 실행하므로 전역 설치가 꼭 필요하진 않지만, 새 PC에서 네트워크/패키지 접근이 안 되면 최초 실행에 실패할 수 있다. 권장 확인: ```bash node -v npm -v npx -y @playwright/mcp@latest --version || true npx -y mcp-remote https://example.com/sse || true python3 --version dotnet --info git --version crontab -l || true ``` ### Step 4. 로컬 모델 포트 점검 현재 로컬 llama.cpp 매핑은 다음 기준이다. - `llamacpp-8080/qwen3-8b-q4km` - `llamacpp-8081/qwen2.5-72b-q4km` - `llamacpp-8082/qwen2.5-coder-32b-q4km` - `llamacpp-8083/deepseek-r1_q4km` 새 PC에서 동일 포트/모델로 띄우지 않으면 `openclaw.json`의 모델 설정을 수정해야 한다. 점검: ```bash curl http://llama:8080/v1/models curl http://llama:8081/v1/models curl http://llama:8082/v1/models curl http://llama:8083/v1/models ``` 현재 운영 환경에서는 로컬 모델 서버가 같은 머신의 `127.0.0.1`가 아니라, 호스트명 `llama`로 붙어 있는 별도 머신/서비스일 수 있다. 따라서 새 PC 복원 시에는 `openclaw.json`의 provider baseUrl이 실제 환경과 맞는지 함께 확인한다. --- ### Step 5. Python / .NET / Node 의존성 재설치 #### KIS_MCP_Server ```bash cd ~/.openclaw/workspace/KIS_MCP_Server python3 -m venv .venv source .venv/bin/activate pip install -U pip pip install -e . ``` 또는 프로젝트 문서 기준 재설치. #### mcp_sshterminal `.NET 9 SDK` 필요. ```bash cd ~/.openclaw/workspace/projects/mcp_sshterminal dotnet restore dotnet build -c Release ``` #### Playwright MCP / mcp-remote `npx` 기반이므로 Node/npm 동작만 정상이면 즉시 재사용 가능. --- ### Step 6. 크론 복원 현재 크론은 다음 계열 작업을 포함한다. - `kis-trader` collector/watcher 자동 재시작 - 30분마다 git 자동 백업 push 백업된 crontab 확인: ```bash cat ~/.openclaw/cron/crontab.backup ``` 복원 예시: ```bash crontab ~/.openclaw/cron/crontab.backup crontab -l ``` 주의: - 경로가 달라졌다면 `crontab.backup` 내용을 먼저 수정한 뒤 등록할 것 --- ### Step 7. KIS 자동화 점검 확인 항목: - `projects/kis-trader/start_price_collector.sh` - `projects/kis-trader/start_alert_watcher.sh` - `strategy_config.json` - `monitor_config.json` - `acpx.json`의 KIS MCP 설정 수동 점검: ```bash bash ~/.openclaw/workspace/projects/kis-trader/start_price_collector.sh bash ~/.openclaw/workspace/projects/kis-trader/start_alert_watcher.sh ps -ef | grep kis-trader ``` 로그 확인: ```bash tail -n 50 ~/.openclaw/workspace/projects/kis-trader/price_logs/collector.log tail -n 50 ~/.openclaw/workspace/projects/kis-trader/price_logs/alert_watcher.log ``` --- ### Step 8. MCP 서버 점검 현재 `workspace/acpx.json` 기준으로 등록되는 MCP는 다음 3개다. - `KIS MCP Server` - `Playwright MCP` - `SSH Terminal MCP` #### KIS MCP 실행 기대값: - Python venv 존재: - `~/.openclaw/workspace/KIS_MCP_Server/.venv/bin/python` - 엔트리포인트: - `~/.openclaw/workspace/KIS_MCP_Server/server.py` 확인: ```bash ls -l ~/.openclaw/workspace/KIS_MCP_Server/.venv/bin/python python3 -m py_compile ~/.openclaw/workspace/KIS_MCP_Server/server.py ``` 주의: - 해외주식 현재가 조회는 나스닥 시장코드 `NAS` 사용 권장 - 현재 로컬 수정으로 `NASD`도 내부 alias 처리되지만, 새 PC에서 파일이 최신인지 확인할 것 #### Playwright MCP 등록 형식: - `npx -y @playwright/mcp@latest --isolated --output-dir ...` 주의: - GUI 환경에서 화면이 보여야 하면 headless 옵션 제거 상태인지 확인 - Linux에서 실제 창이 보여야 한다면 X/Wayland GUI 세션이 살아 있어야 함 - 단순 서버 기동만으로는 충분하지 않고, **MCP 클라이언트 세션이 살아 있어야 브라우저 창이 유지**된다 #### SSH Terminal MCP 이 프로젝트는 **직접 stdio MCP가 아니라 HTTP MCP 서버**다. 따라서 `acpx.json`에는 서버 실행 명령 자체가 아니라, `mcp-remote` 브리지를 통해 등록한다. 실서버: - `http://127.0.0.1:5057/mcp` 실행 프로젝트: - `~/.openclaw/workspace/projects/mcp_sshterminal/McpSshTerminal.App` 서버 수동 실행 예시: ```bash cd ~/.openclaw/workspace/projects/mcp_sshterminal/McpSshTerminal.App dotnet build -c Release dotnet run -c Release ``` 확인: ```bash curl http://127.0.0.1:5057/api/config-path ``` OpenClaw 등록: - `npx -y mcp-remote http://127.0.0.1:5057/mcp --allow-http` 중요: - 왜 `dotnet run ...`이 아니라 `npx mcp-remote ...`가 `acpx.json`에 들어가 있는지 혼동하기 쉬움 - 이유는 `acpx.json`의 `mcpServers`가 사실상 **로컬 stdio command 형식**을 기대하고, `mcp_sshterminal`은 **HTTP MCP 서버**이기 때문 - 즉: - `dotnet run ...` = 실제 HTTP MCP 서버 실행 - `mcp-remote ...` = OpenClaw가 붙기 위한 stdio 브리지 --- ## 이식 후 추천 점검 순서 1. `openclaw status` 2. `npm root -g` / OpenClaw 설치 경로 확인 3. `openclaw.json` 안의 `plugins.load.paths` / `plugins.installs.acpx.sourcePath` 경로 확인 4. 로컬 모델 포트 확인 5. `acpx.json` JSON 문법 확인 6. KIS MCP 수동 호출 확인 7. Playwright MCP initialize / tools/list 확인 8. `mcp_sshterminal` HTTP MCP 확인 9. 크론 등록 확인 10. git backup 스크립트 수동 실행 확인 --- ## 문제 발생 시 우선 로그 - `~/.openclaw/openclaw.json` - `~/.openclaw/cron/crontab.backup` - `~/.openclaw/workspace/projects/kis-trader/price_logs/collector.log` - `~/.openclaw/workspace/projects/kis-trader/price_logs/alert_watcher.log` - `~/.openclaw/workspace/projects/mcp_sshterminal/mcp_sshterminal.log` 그리고 다음을 같이 확인: ```bash openclaw status npm root -g crontab -l ps -ef | grep -E 'kis-trader|McpSshTerminal.App|playwright|mcp-remote' grep -RIn 'plugins' ~/.openclaw/openclaw.json ``` 플러그인 관련 오류가 많이 난다면 특히 아래를 먼저 의심할 것: 1. OpenClaw 본체 설치 경로가 달라짐 2. `extensions/acpx`가 실제로 존재하지 않음 3. `openclaw.json`의 `plugins.load.paths`가 옛 PC 경로를 가리킴 4. `npx`/`node`가 새 PC에서 안 잡힘 5. `dotnet`이 없어 `mcp_sshterminal`이 안 뜸 6. GUI가 없어 Playwright headed 브라우저가 표시되지 않음 --- ## 운영 원칙 - 통복사보다 **재설치 + 설정/프로젝트 복원**이 더 안정적 - 절대경로는 이식 시 항상 재검토 - 토큰/세션/캐시는 되도록 재생성 - 커스텀은 `workspace/projects/` 기준으로 분리 유지 - KIS 원본 repo와 커스텀 자동화는 개념적으로 분리하되, 이제 backup git에는 둘 다 포함 가능