본문으로 바로가기
development2026년 3월 30일·조회 98

원격 PC를 작업 서버로 활용하기: Windows 환경에서 PM2 자동 시작 설정

Tailscale VPN과 PM2를 활용한 안정적인 원격 워커 구성 가이드

SP

SpacePlanning

SpacePlanning AI Team

## 들어가며 재택근무나 분산 처리 환경에서 집에 있는 PC를 작업 서버로 활용하고 싶은 경우가 있습니다. 특히 Windows 환경에서 Node.js 기반 워커 프로세스를 안정적으로 운영하려면 몇 가지 까다로운 문제를 해결해야 합니다. 이 글에서는 실제 운영 환경에서 검증된 원격 워커 설정 방법을 공유합니다. ## 기본 아키텍처 원격 PC를 작업 서버로 활용하기 위한 기본 구조는 다음과 같습니다: ``` 원격 PC (VPN 연결) → 중앙 프록시 서버 → 메시지 큐 (Kafka 등) → 데이터베이스 (PostgreSQL 등) ``` 이 구조에서 핵심은 **안전한 VPN 연결**과 **프로세스 자동 재시작**입니다. ## VPN 선택: Tailscale을 추천하는 이유 Tailscale은 WireGuard 기반의 제로 설정 VPN으로, 다음과 같은 장점이 있습니다: - NAT 뒤에 있는 PC도 P2P 연결 가능 - 별도의 포트포워딩 설정 불필요 - 각 기기마다 고정 내부 IP 할당 (100.x.x.x 대역) - 무료 플랜으로도 충분히 활용 가능 ## Windows에서 PM2 자동 시작의 함정 Linux에서는 `pm2 startup` 명령으로 쉽게 자동 시작을 설정할 수 있지만, **Windows는 다릅니다**. ### 실패하는 방법: pm2-windows-service `pm2-installer-win64.exe`나 `pm2-windows-service`를 사용하면 서비스 등록은 되지만 실제로는: - 서비스가 시작되어도 프로세스가 보이지 않음 - SSH로 접속 시 PM2 상태 확인 불가 - 사용자 세션과 서비스 세션이 분리되어 관리 어려움 ### 성공하는 방법: Task Scheduler + PM2_HOME 환경변수 다음 접근 방식이 훨씬 안정적입니다: ```powershell # 1. PM2_HOME 전역 설정 [System.Environment]::SetEnvironmentVariable( 'PM2_HOME', 'C:\ProgramData\pm2', [System.EnvironmentVariableTarget]::Machine ) # 2. Task Scheduler에 시작 작업 등록 $action = New-ScheduledTaskAction -Execute 'pm2' -Argument 'resurrect' $trigger = New-ScheduledTaskTrigger -AtStartup $principal = New-ScheduledTaskPrincipal -UserId 'SYSTEM' -RunLevel Highest Register-ScheduledTask -TaskName 'PM2_Startup' ` -Action $action ` -Trigger $trigger ` -Principal $principal ``` **핵심 포인트**: - `PM2_HOME`을 `C:\ProgramData\pm2`로 설정하면 모든 사용자 세션에서 동일한 PM2 인스턴스 공유 - Task Scheduler는 Windows Service보다 권한 및 환경변수 관리가 용이 - `pm2 save` 후 `pm2 resurrect`로 재부팅 시 프로세스 복원 ## 자동화 스크립트 예시 실제 운영에서 사용하는 PowerShell 설치 스크립트 구조: ```powershell param( [Parameter(Mandatory=$true)] [string]$WorkerType, [Parameter(Mandatory=$true)] [string]$WorkerId ) # 1. 필수 소프트웨어 확인 if (-not (Get-Command node -ErrorAction SilentlyContinue)) { Write-Error "Node.js가 설치되지 않았습니다" exit 1 } # 2. PM2 전역 설치 npm install -g pm2 # 3. 워커 프로세스 시작 pm2 start worker.js --name $WorkerId pm2 save # 4. Task Scheduler 등록 # (위의 코드 사용) Write-Host "설치 완료. 재부팅 후 자동 시작됩니다." ``` ## 트러블슈팅 가이드 ### PM2 상태가 SSH에서 보이지 않을 때 ```powershell # 매번 세션마다 설정 $env:PM2_HOME = "C:\ProgramData\pm2" pm2 status # 또는 PowerShell 프로필에 추가 echo '$env:PM2_HOME = "C:\ProgramData\pm2"' >> $PROFILE ``` ### 메시지 처리가 안 될 때 1. VPN 연결 상태 확인: `tailscale status` 2. 프록시 서버 연결 확인: `Test-NetConnection 프록시IP -Port 포트번호` 3. PM2 로그 확인: `pm2 logs --lines 100` ### 인증 오류 발생 시 CLI 도구의 인증은 자동화하기 어려운 경우가 많습니다. 첫 설치 시에는 수동으로 로그인 필요: ```powershell # 대화형 로그인 (브라우저 팝업) claude login # 또는 다른 CLI 도구 ``` ## 결론 및 체크리스트 Windows PC를 원격 워커로 활용하기 위한 핵심 요소: - ✅ Tailscale 등 안정적인 VPN 연결 - ✅ PM2_HOME을 `C:\ProgramData\pm2`로 전역 설정 - ✅ Task Scheduler로 시작 작업 등록 (Windows Service 사용 금지) - ✅ `pm2 save`로 프로세스 목록 저장 - ✅ CLI 인증은 최초 1회 수동 수행 이 방식으로 설정하면 재부팅 후에도 자동으로 워커가 시작되며, SSH 접속 시에도 일관된 PM2 상태를 확인할 수 있습니다. ## 다음 단계 - 모니터링: PM2 Plus나 커스텀 헬스체크 구현 - 로그 관리: PM2 로그 로테이션 설정 (`pm2 install pm2-logrotate`) - 보안 강화: Tailscale ACL로 접근 제어 설정
#원격워커#PM2#Windows자동화#Tailscale#분산처리
공유하기:

이 주제에 대해 더 알아보고 싶으신가요?

프로젝트 상담을 통해 맞춤형 솔루션을 제안받으세요.