# # 1코어 VPS에서 처음부터 P2P 비디오 서비스 구축: 9개월 개발기
여가 시간 9개월 동안, 오지 출신 전기 기술자가 'Vizavi'라는 완전한 기능을 갖춘 P2P 비디오 서비스를 만들어냈습니다—등록이나 앱 설치 없이 사용 가능. 1코어, 512 MB RAM의 소박한 VPS에서 처음부터 구축되었으며, WebRTC를 활용해 직접적인 P2P 연결을 하고 차단을 우회합니다. 결과는 브라우저 기반 솔루션으로, 러시아 도메인을 사용해 로컬 네트워크 제한 환경에서도 안정적으로 작동합니다.
아이디어에서 현실로: 'Vizavi' 탄생기
이 프로젝트는 창작자가 주류 비디오 서비스의 차단에 부딪히면서 대안을 찾던 중 시작되었습니다. 신경망 실험 중에 아이디어가 떠올랐죠: "비디오 통화 앱을 만들 수 있을까?" WebRTC 기본, STUN/TURN 서버, ICE 후보에 깊이 파고들었고, 첫 성공적인 테스트 통화가 본격 개발의 불씨가 되었습니다. 핵심 기능: 회원가입이나 앱 없이 브라우저에서 짧은 숫자 룸 코드를 입력하면 바로 연결.
아키텍처는 '룸 기반' 모델을 따릅니다: 사용자가 https://vizavi.rf/ 에 룸 번호를 입력하면, 참가자 2명이 모이면 시스템이 자동 연결해줍니다. 룸 코드 공유는 사용자 몫—메신저, 전화, 또는 대면으로. 장벽을 최소화: 링크 클릭 후 카메라/마이크 권한만 부여하면 끝.
기술 스택: 미니멀리즘 철학
모스크바 데이터센터의 임대 VPS에서 실행되며, 최소 사양입니다:
- 1 CPU 코어
- 512 MB RAM
- 10 GB SSD 디스크 (3.3 GB 사용)
- OS Debian 11
인프라는 다음과 같습니다:
- Coturn — NAT traversal을 위한 자체 STUN/TURN 서버
- Node.js (시그널링 서버), PM2로 관리
- Nginx를 리버스 프록시로
- Let’s Encrypt의 SSL, 자동 갱신
- 기본 보안으로 UFW와 Fail2Ban
- 클라이언트와 서버 로직은 바닐라 JavaScript
- Express로 정적 파일과 REST API
- Socket.io로 실시간 WebRTC 시그널링
데이터 저장은 전통 데이터베이스 대신 JSON 파일을 사용합니다. 서버 자원이 제한적이라 적합하고 배포도 간단합니다. 처음부터 만든 커스텀 관리 패널로 실시간 연결 통계와 활동을 모니터링합니다.
룸 유형: 기본부터 VIP까지
시스템은 세 가지 룸 유형을 지원합니다:
- 기본 룸 — 2인용 기본 설정. 같은 번호 입력 시 자동 연결. 통화 녹음, IP 로깅, 메시지 저장 없음.
- VIP 룸 — 계층 구조 추가: 소유자가 채팅 제어, 회의 녹음, 게스트 킥아웃 가능. 게스트는 화면 공유와 파일 전송 가능. 다중 연결 대기열과 입구 메시지 보드 포함.
- 관찰 룸 (개발 중) — '베이비 모니터'처럼: 한 기기는 카메라, 다른 기기는 시청자 역할. 오래된 스마트폰을 비디오 피드로 재활용할 계획.
주요 강점: 연결 전 불필요한 단계 없음. 등록이나 사용자 이름 요구하는 경쟁자와 달리, 룸 코드 입력 후 즉시 연결.
보안과 프라이버시: 현재 상태
WebRTC 내장 엔드투엔드 암호화로 오디오와 비디오 스트림이 보호됩니다. 다만 개선이 필요한 부분:
- 채팅 기록은 브라우저 localStorage에 평문으로 저장
- VIP 입구 메시지는 암호화되지 않은 JSON 파일에 저장
- 룸 접근 인증 없음
창작자는 민감 데이터용이 아니라고 밝히며, 보호 강화 필요성을 인정합니다. 512 MB RAM VPS에서 전체 암호화 추가는 보안과 성능 균형이 관건입니다.
개발자들을 위한 핵심 교훈
- 아키텍처 미니멀리즘 — 데이터베이스 대신 JSON, 불필요 의존성 제거가 저사양 VPS 운영의 핵심.
- 시그널링 서버 유연성 — Socket.io가 봇과 스캐너 트래픽에도 WebRTC 시그널을 원활히 처리.
- 사용자 경험 — 등록이나 이름 입력 같은 단계를 생략하면 참여율이 즉시 상승.
- 지속적인 보안 — UFW와 Fail2Ban 같은 기본은 필수지만, 정기 감사 필요.
시스템은 스캐너와 봇의 지속적 탐색에 대응해 필터링합니다: 비브라우저 클라이언트는 JavaScript 없는 간소한 HTML 페이지만 제공. 서버 부하 감소와 SEO에도 도움.
이 프로젝트는 WebRTC 같은 기술이 초보 개발자도 도달할 수 있음을 증명합니다. 단계적 구축, 핵심 기능 집중, Coturn·Let’s Encrypt 같은 도구 활용으로 성공. 다음 목표: 메시지 암호화와 동시 연결 확대.
— Editorial Team
아직 댓글이 없습니다.