Home Server 실시간 온도 모니터링

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 적용 및 리버스 프록시 설정

개발 과정

이 프로젝트는 홈 서버를 통한 자가 호스팅 시스템을 구축하며 다음과 같은 과정을 거쳐 진행되었습니다:
  1. 홈 서버 인프라 구축: 중고 맥미니에 Ubuntu 24.04 LTS 설치, 포트포워딩 및 DDNS 구성
  2. 센서 수집 기반 구축: lm-sensors, sensors-detect 설정을 통해 다양한 센서 정보 확보
  3. WebSocket 서버 개발: ws 모듈을 사용하여 구조화된 JSON 데이터를 실시간으로 전송
  4. Dockerfile 작성 및 이미지 빌드: TypeScript 기반 서버를 Docker 환경에서 실행 가능하도록 구성
  5. .env 설정 및 자동화: 포트, 센서 간격 등의 설정을 .env로 관리
  6. 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 없이도 효율적으로 관리할 수 있는 개발/배포 워크플로우를 확립할 수 있었습니다.