[NETCITY NEWS] 이번 구축의 목표는 단순했다. PC 본 서버에 무선 USB 랜카드와 USB 캠코더를 붙이고, 그 장치를 하나의 작은 영상 중계 노드처럼 운영하는 것이다. 기존에는 웹캠 중계 서버 작업 폴더에 남아 있던 무선랜, 웹캠, 릴레이 기록을 기준으로 삼았고, 이번에는 현 메인 서버에서 실제 장치 인식부터 고정 주소, MJPEG 송출, 공개 HTTPS 연결까지 다시 묶었다.
결과적으로 본 서버의 유선 경로는 그대로 유지하고, USB 무선랜은 웹캠 중계 전용 경로로 분리했다. 캠코더는 Linux UVC 장치로 잡아 /dev/video0에서 영상을 받아오고, uStreamer가 8088 포트에서 MJPEG 스트림을 만든다. 외부 공개는 직접 포트를 열지 않고 https://www.netcity.co.kr/relay-server-2/live-stream/ 경로로 넘겼다.
장치부터 확인했다
USB에 연결된 무선랜카드는 Realtek RTL8188FTV 계열로 확인됐다. 장치 ID는 0bda:f179이고, 커널에서는 rtl8xxxu 드라이버로 올라왔다. 네트워크 인터페이스 이름은 wlx90de80320457로 잡혔다. 같은 USB 허브에 연결한 캠코더는 1908:2311 GEMBIRD Generic UVC 1.00 camera로 확인됐고, uvcvideo 드라이버를 통해 /dev/video0, /dev/video1, /dev/media0 장치가 만들어졌다.
USB Wi-Fi : 0bda:f179 Realtek RTL8188FTV
interface : wlx90de80320457
relay role: WEBCAM RELAY
USB camera: 1908:2311 GEMBIRD Generic UVC camera
video dev : /dev/video0
stream : uStreamer 0.0.0.0:8088
메인 서버와 무선 중계 경로를 분리했다
중요한 것은 메인 서버의 기존 운영을 흔들지 않는 것이었다. 그래서 유선랜 enp4s0은 기존 웹서버 경로로 유지하고, USB 무선랜 wlx90de80320457만 웹캠 중계 전용 경로로 고정했다. 무선 USB 랜카드는 별도 연결 이름 NETCITY.co.kr USB로 등록했고, 기본 라우팅은 유선랜이 우선하도록 유지했다. 이렇게 해두면 웹서버의 공개 동작은 메인 서버가 계속 맡고, 무선 중계 경로는 카메라 중계와 상태 확인용으로 사용할 수 있다.
| 역할 | 장치 | 주소 | 운영 목적 |
|---|---|---|---|
| 본 서버 | enp4s0 |
MAIN WEB |
기존 웹서버와 공개 HTTPS 프록시 유지 |
| 무선 중계 주소 | wlx90de80320457 |
WEBCAM RELAY |
USB 무선랜 기반 영상 중계와 상태 점검 |
| 캠코더 입력 | /dev/video0 |
localhost:8088 |
uStreamer MJPEG 영상 소스 |
캠코더는 uStreamer로 바로 중계했다
캠코더 영상은 가볍게 운영하기 위해 uStreamer로 받았다. 현재 서비스 이름은 gd-c100-ustreamer.service이고, 재부팅 뒤에도 살아나도록 systemd에 등록했다. 설정은 /dev/video0 입력, 640x480 해상도, YUYV 포맷, 30fps 목표, JPEG 품질 90으로 맞췄다.
/usr/bin/ustreamer \
--device=/dev/video0 \
--host=0.0.0.0 \
--port=8088 \
--resolution=640x480 \
--format=YUYV \
--desired-fps=30 \
--quality=90
현재 상태 API는 정상으로 응답한다. 소스는 온라인이고, 캡처 해상도는 640x480이다. 실시간 스트림은 웹캠 중계 경로에서 나오며, 외부에서는 Nginx가 이를 /relay-server-2/live-stream/으로 프록시한다.
공개 주소는 443 하나로 정리했다
내부에서는 8088 포트를 쓰지만, 외부 사용자가 직접 내부 포트를 알 필요는 없다. 공개 접속은 relay-server-2 아래로 통일했다. 라이브 화면은 live-stream, 상태 확인은 live-state, 운영 화면은 OBS 제어와 유튜브 웹캠 라이브 페이지로 이어진다.
이 방식의 장점은 명확하다. 장치와 포트는 내부에서 바뀔 수 있지만, 외부 링크는 계속 같은 주소를 유지한다. 또한 HTTPS 인증서와 도메인 관리는 본 서버 Nginx가 맡기 때문에, 작은 USB 장치 기반 중계라도 공개 서비스의 모양은 안정적으로 가져갈 수 있다.
이번 구축에서 얻은 결론
USB 허브에 꽂힌 작은 무선랜카드와 캠코더도 역할을 잘 나누면 서버 장비가 된다. 유선랜은 본 서버의 안정적인 기본 경로로 두고, 무선 USB 랜카드는 웹캠 전용 중계 경로로 묶었다. 캠코더는 UVC 장치로 받아 uStreamer가 MJPEG로 만들고, 공개는 Nginx가 443 경로로 정리했다.
이제 웹캠 중계 경로는 단순한 예전 작업 폴더 이름이 아니라, 무선 USB 랜카드와 캠코더가 붙은 실제 영상 중계 주소가 됐다. 메인 서버는 기존 웹 운영을 계속 맡고, 무선 중계 경로는 카메라, OBS, 유튜브 송출 실험을 받아내는 작은 방송 입력 노드로 움직인다. 이번 작업은 스마트폰 서버와 USB 장치 서버를 함께 굴리기 위한 다음 단계의 기반이기도 하다.