
Home Server 실시간 온도 모니터링
Node.jsTypeScriptDockerWebSocketNginxUbuntu 24.04
Node.js, TypeScript, Docker를 이용해 홈 서버에서 실시간으로 센서 데이터를 스트리밍하는 WebSocket API를 구축했습니다.
📡 센서 데이터 수신 중...
Home Server 기반 실시간 센서 스트리밍 프로젝트
이 프로젝트는 Ubuntu 기반의 Home Server(맥미니)에 Docker 환경을 구축하고,WebSocket을 이용해 실시간으로 서버 내부 온도와 팬 속도 데이터를 전송하는 시스템입니다.
주요 기능
- 실시간 온도 및 팬 속도 전송:
lm-sensors
패키지를 활용해 CPU/GPU 온도, 팬 RPM을 3초 간격으로 수집 - WebSocket API 제공: Node.js 기반 서버에서 구조화된 센서 데이터를 실시간으로 전송
- Docker 컨테이너화: WebSocket 서버를 Docker로 패키징하여 어디서나 쉽게 실행 가능
- 환경변수 기반 설정 관리:
.env
파일을 통한 포트 등 설정 유연화 - React 기반 시각화 대시보드 연동 (추가 구현 예정): 클라이언트에서 실시간 데이터를 시각화하여 모니터링
사용 기술
- Node.js + TypeScript: 실시간 WebSocket 서버 구현 및 데이터 파싱 로직 개발
- WebSocket (
ws
): 양방향 실시간 통신 구현 - lm-sensors: 리눅스 기반 온도/팬 속도 수집 도구
- Docker / Docker Compose: 서버 배포를 위한 컨테이너 환경 구성
- Ubuntu 24.04 LTS (맥미니): 홈 서버 운영체제
- Cloudflare + 커스텀 도메인: 외부에서 접근 가능한
api.devhimchan.com
도메인 연결 - Nginx: SSL 적용 및 리버스 프록시 설정
개발 과정
이 프로젝트는 홈 서버를 통한 자가 호스팅 시스템을 구축하며 다음과 같은 과정을 거쳐 진행되었습니다:- 홈 서버 인프라 구축: 중고 맥미니에 Ubuntu 24.04 LTS 설치, 포트포워딩 및 DDNS 구성
- 센서 수집 기반 구축:
lm-sensors
,sensors-detect
설정을 통해 다양한 센서 정보 확보 - WebSocket 서버 개발:
ws
모듈을 사용하여 구조화된 JSON 데이터를 실시간으로 전송 - Dockerfile 작성 및 이미지 빌드: TypeScript 기반 서버를 Docker 환경에서 실행 가능하도록 구성
- .env 설정 및 자동화: 포트, 센서 간격 등의 설정을
.env
로 관리 - Nginx 프록시 및 SSL 적용:
wss://api.devhimchan.com/ws
경로를 통해 외부에서 안전하게 접근 가능
배포 및 인프라
- Docker Compose:
--env-file .env
기반으로 설정된 컨테이너 자동 실행 - Nginx + Let's Encrypt: Cloudflare DNS를 이용해 SSL 인증서 적용 및 리버스 프록시 구성
- 포트포워딩: 공유기 설정을 통해 외부에서 서버 443 포트로 접속 가능
- Git + rsync 배포 자동화: MacBook에서 개발 →
rsync
로 맥미니 서버에 자동 배포 및 컨테이너 실행 (추가예정)
배운 점
이 프로젝트를 통해 리눅스 기반 홈 서버 운영, Docker 환경 설정, WebSocket 실시간 데이터 처리 등 실무적인 인프라 관리 경험을 쌓을 수 있었습니다.특히 센서 데이터를 구조화하여 전송하고, 보안상 안전하게 외부로 노출하는 전체 과정을 직접 구성하며
클라우드 없이도 운영 가능한 자가 호스팅 서비스의 이해도를 크게 높일 수 있었습니다. 또한 TypeScript + Docker 기반 실시간 API 서버를 완전한 CI 없이도 효율적으로 관리할 수 있는 개발/배포 워크플로우를 확립할 수 있었습니다.