배경
흩어져 있는 컴퓨터들을 웹에서 한눈에 관리하고, 브라우저만으로 원격 화면을 보고 조작하고 싶었다. 기존 원격 데스크톱 도구는 장치 1:1 연결 중심이라 관리자 관점이 없다. 그룹, 권한(RBAC), 세션 이력, 감사 로그 같은 것들이다. 장치에 붙는 도구가 아니라 장치들을 운영하는 플랫폼이 필요했다.
설계
컨트롤 플레인과 미디어 플레인을 분리했다. NestJS 서버는 인증, 권한, 세션 상태 머신, 시그널링만 담당하고 화면과 입력은 WebRTC로 브라우저와 에이전트가 직접 주고받는다. 영상이 서버를 통과하지 않으니 서버가 가벼워지고 지연도 준다. 콘솔은 Next.js, 에이전트는 Rust로 만들었다(Windows 서비스와 사용자 세션 Helper 분리). 프로토콜과 세션 전이표는 공유 패키지에 Zod 스키마와 데이터로 박아서 계약이 곧 코드가 되게 했다. 개발 환경은 Docker 없이 embedded PostgreSQL로 돌아가고, mock 장치 30여 대를 등록하는 시뮬레이터로 서버 로직을 검증했다.
보안은 기본값을 안전한 쪽으로 뒀다. 원격 제어 승인은 무응답, 오류, Helper 부재를 전부 거부로 처리하고, 강제할 수 없는 보호 스위치는 애초에 만들지 않았다. 지켜주지 못하면서 보호받는다는 착각을 주는 UI가 제일 위험하다고 봤기 때문이다. 에이전트 자동 업데이트는 Ed25519 공개키를 빌드 시점에 박아서 서버조차 신뢰하지 않는 서명 검증으로 갔다.
결과
qra.qjins.com에 라이브. 브라우저에서 실제 Windows 화면을 보고 마우스와 키보드로 조작하며, 적응형 품질, 오디오, 클립보드, 파일 전송까지 실측을 마쳤다. 콘솔에는 로그인, 대시보드, 장치 그룹 관리, 세션, 이벤트 로그(감사), 에이전트 설치까지 관리자 동선이 한 벌로 들어 있다. 이 사이트의 서비스 카드에 걸린 첫 서비스다.