Tech

frigate 구성기 (over VPN)

가루군 2025. 11. 22. 23:36

제 작업실에는 관리용 CCTV가 2대 설치되어 있습니다, 아무래도 "혹시" 모르는 일이 있을 수 있으니깐요 (도난이라던지..)

 

NVR는 2010년대 초반에 NVR 을 알리익스프레스에서 구매했는데,

그 시절 제품답게 브라우저로 접근시 ActiveX!!! or Adobe Flash!!! 라는 엄청난 스펙이라 슬슬 치울 생각을 하고 있었습니다.

 

그러다 찾은 오픈소스 + 적당히 굴려볼 수 있는 것 을 찾았는데.. 이게 적합했습니다.

 

https://frigate.video/

 

아 그리고 저는 TrueNAS에 앱으로 셋팅 가능해서, 해당 버전으로 설정했습니다.

 

선택한 이유

 

1. 원래 IP카메라 각각의 모션감지 기능이 있긴 합니다만, 성능이 들쑥 날쑥인데 frigate는 rtsp만 꼽으면 모션감지, 구역감지 모두 자체 연산으로 처리가 가능합니다.

2. rtsp 만 지원하고 snapshot 지원 안 하는 바보 모델들이 일부 있는데, frigate는 rtsp을 처리하면서 자체 스냅샷/rtsp 프록시도 지원해서 약간 덜 바보 카메라처럼 쓸 수 있습니다. 

3. 이게 주 선택 이유지만 이 모든 게 웹에서 모두 지원합니다. 녹화 조회, 감시 이벤트, 구역 이벤트 등 모두요.

 


 

여기 까지만 셋팅하면 평범한 frigate 설치 이야기겠지요? 하지만 제 목적은 over VPN이었습니다. 

 

보통 녹화 장소는 동일 장소에 저장하는 게 좋습니다. (백업이 잘된다는 가정하에)

왜냐면 영상은 24시간 다뤄야 하고 이를 24시간 NVR에 보내야 하고 이 구조는 해당 네트워크 대역폭을 꾸준히 점유합니다.

 

다만... 제 경우는 다른 층 화재로 인해 작업실 접근... 이 제한적이 있었습니다. 이때 다행히 "혹시 모를" 이유로 작업실에 있는 장비를 (모뎀/스위치/서버)에 모두 안전하게 종료할 수 있도록 최소한의 UPS을 발라놓은 덕에 (이거 최소로 해도 비쌉니다 비싸..) 데이터는 안전했는데

 

근데 정작 카메라는 구간에는 UPS가 없었고 (이후에 연결했음..) 어떤 상황인지 모르는 게 엄청 답답하더라고요

이때 결국 NVR의 데이터는 외부로 옮기기로 생각은 했습니다. 물론 실제로 실행으로 옮긴 지는 이번이지만요...

 

단점도 있습니다. 네트워크를 점유하는 것 그리고 네트워크가 끊기면 녹화가 바보가 되는 건데..

제대로 세팅하려면 이중으로 저장하되 내부에서는 내부대로..이지만 일단 내부는 나중에 생각하고 외부에 저장부터 구현해보기로 합니다.

 


 

준비물

 

1. IP카메라 - RTSP

RTSP / ONVIF을 직접 지원해야 합니다.

단, 여기서 ONVIF는 옵션입니다. (카메라가 좌우 움직이면 ONVIF가 되는 편이 좋습니다. 그걸로 통신하거든요.)

 

근데 frigate 자체가 rtsp 도 안 되는 카메라를 쓰기가 어렵습니다. 이건 frigate 기본 조건이네요.

 

2. 녹화용 서버

여기에 frigate가 설치되어야 합니다. 저는 truenas 설치된 서버가 있어서 이쪽에 세팅했습니다.

 

내장 그래픽이라도 연산할 수 있는 그래픽이 있으면 좀 더 좋습니다. (모션감지나 등등을 위해)

제 경우는 AMD 서버라 그런지 내장그래픽 보내니까 렌더링 할 때 CPU점유가 낮더라고요.

 

3. (와이파이) 라우터 및 WireGuard

아무래도 이 게시물이 핵심이겠지요. 저는 ip카메라가 있는 쪽에 iptime 공유기를 썼습니다

iptime 최근 업데이트에 WireGuard 클라이언트가 있더군요. 

 

녹화용 서버 쪽은 iptime 보다는 직접적으로 녹화용 서버에 wireguard 서버를 설치해서 세팅하던가, 

아니면 좋은 장비를 위에 설치하는 게 좋습니다. 위에 말씀드린 것처럼 이런 구조는 카메라가 상시로 회선 내 대역폭을 점유합니다.

- iptime구 제품류 같은 쪽은 WireGuard 서버로는 성능이 모자랄 수 있어요. 

 

 


네트워크 구조

우선 IP카메라는 대부분 바보임으로, 외부 네트워크와 연결은 권장하지 않습니다.

위에 WireGuard 네트워크인 이유는 그런 외부 네트워크와 구분하고, 외부에서 볼 수 있는 접속 포인트는 한정 짓기 위한 이유도 있습니다.
제 경우는 카메라는 아예 외부 오픈을 하지 않고/MAC주소로 외부 네트워크를 차단했습니다.

그리고 frigate도 내부 네트워크에서만 들어가게 세팅했습니다.

 

제 실제 구성은 이것과 좀 다릅니다. 이건 예시

 

작업실(iptime) 에는 WireGuard 클라이언트 기능을 이용해서, 메인에 있는 WireGuard 서버에 접속하여 터널을 구축합니다.

frigate는 메인 라우터 + WireGuard 서버 + 라우팅 설정 통해서 WireGuard 클라이언트 통해 IPCAM에 접근하여 스트림을 받아 녹화 처리합니다. 

 

네트워크는 개개별 상황마다 달라서 권장 케이스가 딱히 없네요.

누구는 이런 WG가 필요 없을 수도 있고, 카메라 자체가 직접 보낼 수도 있으니깐요. (비싼 건 직접 터널도 만들던데..?!)

 

다만 저는 가진 카메라가 다 바보라... 이런 구조를 취했습니다.


그래서 결론은?

 

이점

1. 여러 원격지/네트워크 (제 최종 세팅은 원격지가 2곳)의 IP카메라를 한 서버에 저장하고 웹으로 관리할 수 있습니다.

2. this is free

 

단점

1. 고정 대역폭(트래픽)이 생깁니다. 이걸 lightsail에 올리면..

 

제 카메라 2대 값입니다.

 

 

MB/GB로 표시하는 게 좀 나을 것 같으니.. 2대에 852.46 MiB/1시간입니다. MB로 환산하면 894MB 정도 되네요.

1시간에 이 정도를 네트워크로 쏘고 있다는 걸로 보면 됩니다. 24시간이면? 21,456MB = 20.9GB

 

1달을 30일로 가정 시

- 네트워크 20.9*30 = 627GB

- 스토리지: 20.9*14(2주)  292.6GB ( => 300GB 이상) - 1달 하면 627GB겠죠 똑같으니

 

lightsail 기준으로 네트워크 1TB, $5 = 1GB (vCPU 2), 40GB+(300GB 추가/GB당 0.1$ = 30$) = $35 (~= 5만 원)부터

 

사실 이 가격에 12개월이면 그냥 NVR 사는 게 싸요!!!

 

2. 네트워크가 무너지면 녹화도 무너짐

맞습니다 네트워크 무너지면 녹화도 무너집니다, 다만 거꾸로 보면 네트워크가 무너지기 직전까지는 영상을 볼 수 있다가 이점일 수도 있고요.

 

제일 좋은 건 내부에서 녹화하고 + UPS을 설치하고  이벤트가 있을 때만 외부로 백업을 쏘는 방향입니다.

근데 저는 이런 장비를 내부에 두기에는 별로 추가 장비를 애매하고 (아무래도 돈이~) 당장은 네트워크는 쓸 수 있으니..

 

누가 봐도 차력쇼(...) 겸 이렇게 구축한 거고  나중에 여유가 된다 하면..

 

결국 내부로 구축하고 외부에서는 모션/장소 이벤트만 있을 때 외부로 보내는 게 좋지 않을까 싶습니다.

(그럼 에도 제경우에는 원격지 2곳 이상의 카메라를 한 서버에서 관리하는 이점이 크긴 합니다.)

 

 

3. 메인 네트워크 (wg 서버) 성능도 필요

각각의 카메라에서 터널이 연동되든, 아니면 하나의 네트워크에서 터널이 연결되든 어떤 방향이든 wireguard 서버 성능 영향을 갈수밖에 없습니다. 서버 성능이 낮으면 스트림 성능도 떨어집니다.

 

 

 

결론

아무튼 frigate + vpn + ipcam? 잘 됩니다. 아무튼 됩니다. 근데 좋은 케이스인지 아닌지는 개개인 상황마다 다를듯.