diff --git a/services/task-watcher/NSSM_SETUP.md b/services/task-watcher/NSSM_SETUP.md new file mode 100644 index 0000000..f09a616 --- /dev/null +++ b/services/task-watcher/NSSM_SETUP.md @@ -0,0 +1,83 @@ +# NSSM 자동 시작 설정 (SP-9) + +Windows AI 머신 부팅 시 ai_trade(트레이딩) + WSL2 Docker(render workers + task-watcher) 자동 시작. + +## 1. NSSM 다운로드 + +https://nssm.cc/download → nssm-2.24.zip → `C:\nssm\nssm.exe` 배치 (또는 PATH 등록). + +## 2. ai_trade (Native Python, HIGH priority) + +⚠️ spec의 signal_v2는 ai_trade로 rename됨. 경로/포트 확인. + +```powershell +# 관리자 PowerShell +C:\nssm\nssm.exe install ai_trade "C:\Python312\python.exe" "-m uvicorn main:app --host 0.0.0.0 --port 8001" +C:\nssm\nssm.exe set ai_trade AppDirectory "C:\Users\jaeoh\Desktop\workspace\web-ai\ai_trade" +C:\nssm\nssm.exe set ai_trade Priority HIGH_PRIORITY_CLASS +C:\nssm\nssm.exe set ai_trade Start SERVICE_AUTO_START +C:\nssm\nssm.exe set ai_trade AppStdout "C:\Users\jaeoh\nssm-logs\ai_trade.log" +C:\nssm\nssm.exe set ai_trade AppStderr "C:\Users\jaeoh\nssm-logs\ai_trade.log" +``` + +(ai_trade의 실제 진입점이 main:app + port 8001인지 확인. 다르면 조정.) + +## 3. WSL2 Docker (NORMAL priority — render workers + task-watcher) + +```powershell +C:\nssm\nssm.exe install wsl_docker "C:\Windows\System32\wsl.exe" "-d Ubuntu-24.04 -- sh -c 'sudo service docker start && cd /workspace/web-ai/services && docker compose up -d'" +C:\nssm\nssm.exe set wsl_docker Priority NORMAL_PRIORITY_CLASS +C:\nssm\nssm.exe set wsl_docker Start SERVICE_AUTO_START +C:\nssm\nssm.exe set wsl_docker AppStdout "C:\Users\jaeoh\nssm-logs\wsl_docker.log" +``` + +⚠️ 변경점: Ubuntu-22.04 → **Ubuntu-24.04**, web-ai-services → **web-ai/services**. WSL 경로는 박재오 WSL 마운트 기준 (`/workspace`가 web-ai에 매핑되어 있으면 그대로, 아니면 `/mnt/c/Users/jaeoh/Desktop/workspace/web-ai/services`). + +`sudo service docker start`가 비밀번호 요구하면 sudoers에 NOPASSWD 추가: +```bash +# WSL2 안 +echo "$USER ALL=(ALL) NOPASSWD: /usr/sbin/service docker start" | sudo tee /etc/sudoers.d/docker-start +``` + +## 4. 서비스 시작 + 확인 + +```powershell +C:\nssm\nssm.exe start ai_trade +C:\nssm\nssm.exe start wsl_docker + +# 상태 확인 +C:\nssm\nssm.exe status ai_trade +C:\nssm\nssm.exe status wsl_docker +sc query ai_trade +``` + +## 5. 검증 + +```powershell +# ai_trade +curl http://localhost:8001/health # 또는 ai_trade의 실제 health endpoint + +# WSL2 docker 컨테이너 (재부팅 후 자동 시작 확인) +wsl -d Ubuntu-24.04 -- docker ps +# insta-render, music-render, video-render, task-watcher 4개 Up 확인 +``` + +## 6. 재부팅 테스트 + +Windows 재부팅 → 로그인 → 수동 조작 없이: +- ai_trade 서비스 자동 시작 (HIGH priority) +- WSL2 + Docker + 4 컨테이너 자동 시작 (NORMAL priority) +- task-watcher가 trading window에 queue:paused 토글 시작 + +## task-watcher 동작 확인 + +```bash +# WSL2 +docker logs task-watcher --tail 20 +# 기대: "task-watcher started" + mode 전환 로그 (trading/free) + +# Redis 큐 상태 (NAS 또는 LAN) +docker exec redis redis-cli GET queue:paused +# 트레이딩 시간대(평일 07:00-16:30): "1" +# 그 외: (nil) +```