가정용 감시 카메라 시장은 오랫동안 클라우드 종속이라는 딜레마를 안고 있었다. 저렴한 IP 카메라를 사면 대개 제조사 서버에 영상이 올라가고, 구독료를 내야 녹화본을 오래 보관할 수 있으며, 무엇보다 내 집 거실 영상이 어디에 저장되고 누가 접근하는지 사용자가 통제하기 어렵다. 최근 Show HN에 공개된 CheapSecurity는 이 구조를 정면으로 뒤집으려는 오픈소스 프로젝트다. 리눅스 기반 싱글보드컴퓨터(SBC)와 흔한 USB 웹캠만으로 동작하는 경량 자체 호스팅 CCTV를 표방하며, 영상 데이터를 전적으로 사용자 손에 두는 것을 핵심 철학으로 내세운다.
무엇을 하는 도구인가
동작 구조는 단순하고 명료하다. 라즈베리파이 같은 SBC에 USB 웹캠(보통 /dev/video0)을 연결하고, 파이썬과 OpenCV 기반 애플리케이션을 올린 뒤 Flask로 대시보드와 라이브 스트림을 제공한다. 움직임이 감지되면 클립을 녹화해 저장하고, 이를 텔레그램 봇을 통해 지정한 채팅으로 업로드한다. 모션이 시작되는 순간의 사진은 이메일 등 알림에도 첨부된다. 사용자는 대시보드에서 야간 모드 같은 옵션을 켜고 끌 수 있으며, 이 설정은 라이브 스트림과 녹화, 알림 사진에 함께 적용된다. 텔레그램 봇은 설정된 chat_id에만 응답하도록 제한돼 있어, 아무나 명령을 보낼 수 없다.
설계에서 눈에 띄는 대목은 우선순위 처리다. 모션 감지로 이미 녹화가 진행 중이면 사용자가 /video 명령으로 수동 촬영을 요청해도 진행 중인 녹화를 끊지 않는다. 봇은 모션 영상이 진행 중이며 끝나면 자동으로 업로드된다고 답한다. 알림과 업로드 모두 min_interval_minutes로 전송 빈도를 제한해, 카메라 앞에서 움직임이 반복될 때 알림 폭탄을 맞는 상황을 막는다. 카메라 장치는 단일 프로세스만 열 수 있기 때문에 Gunicorn은 워커 하나에 스레드 넷으로 구동하도록 안내한다.
설치와 운영에서 챙길 점
실무자 입장에서 프로젝트가 정직하게 밝혀둔 제약이 오히려 신뢰를 준다. 구형 ARM 보드에서는 pip의 opencv-python-headless 휠이 없거나 느릴 수 있어, 이 경우 배포판 패키지 관리자로 OpenCV를 설치하고 시스템 패키지를 볼 수 있는 가상환경을 쓰라고 권한다. 또 하나 중요한 지적은 하드웨어의 한계다. 대다수 USB 웹캠은 V4L2를 통해 ISO·게인·노출 제어를 노출하지 않기 때문에 FPS나 게인 조정이 무시될 수 있고, 진짜 야간 감시를 원한다면 IR 감응 카메라와 IR 조명이 별도로 필요하다. 저가 웹캠으로 야간까지 완벽히 커버할 수 있다는 과장을 하지 않는 점은 이 도구의 성격을 잘 보여준다.
보안 설정도 실사용 관점에서 구체적이다. 비밀번호와 토큰이 담기는 config.json은 .gitignore에 포함돼 있어 절대 커밋해서는 안 되며, 예시 파일인 config.json.example만 저장소에 남긴다. 구글이 일반 Gmail 비밀번호로 외부 앱 접속을 막았기 때문에 이메일 알림에는 앱 비밀번호를 발급해 써야 한다. 무엇보다 프로젝트는 Flask 개발 서버를 인터넷에 노출하지 말라고 못 박는다. 로컬에서만 쓴다면 내장 인증을 켜두고, 외부에서 접근해야 한다면 HTTPS와 인증을 갖춘 리버스 프록시를 Gunicorn 앞에 두라는 것이다.
실무적 의미와 한계
CheapSecurity의 가치는 기능의 화려함이 아니라 통제권의 이전에 있다. 이미 남는 라즈베리파이와 웹캠이 있는 개발자라면 구독료 없이, 그리고 영상이 외부 서버로 나가지 않는 조건으로 집이나 사무실 한 구석을 감시할 수 있다. 라이선스가 AGPLv3라는 점도 의미가 있다. 이 코드를 서비스 형태로 제공한다면 소스 공개 의무가 따르므로, 상업적 재포장보다는 자체 운영과 커뮤니티 기여에 무게가 실린 프로젝트임을 시사한다.
다만 이것은 상용 감시 시스템의 대체재라기보다 자작(DIY) 성격의 도구로 봐야 한다. 카메라 프로세스가 단일화돼 있어 다수 카메라를 하나의 인스턴스로 묶는 확장성은 기대하기 어렵고, 녹화·알림 채널이 텔레그램과 이메일에 맞춰져 있으며, 실질적인 화질과 야간 성능은 결국 붙이는 웹캠에 좌우된다. 무엇보다 인터넷 노출 시 프록시와 인증을 직접 구성하는 책임이 사용자에게 넘어온다. 프라이버시를 지키는 대가로 운영 부담을 떠안는 구조인 셈이다. 클라우드 편의성과 데이터 주권 사이에서 어느 쪽에 더 무게를 둘지, CheapSecurity는 그 선택지를 구체적인 코드로 보여준다.