시스템

Synology NAS (시놀로지)에 테슬라메이트 설치하기

달빛궁전- 2025. 10. 19. 15:41
Teslamate는 테슬라의 정보를 수집하여, DB에 저장 후 Grafana (다양한 데이터 소스를 연결해서 시각화 하고 모니터링할 수 있는 도구)를 통해 보여주는 도구 입니다.
보통 NAS인 시놀로지나, 라즈베리파이에서 설치 후 운영을 많이 합니다.

관련된 자료들은 많지만, 외부에서 도메인을 통해 접근하는 방안은 못보아서 작성하게 되었습니다.

이번 문서는 Synology NAS에 Container Manager를 이용하여 테슬라메이트를 설치하는 방안입니다.

Synology는 이하 시놀로지로 표현합니다.
Telsamate는 이하 테슬라메이트로 표현합니다.
  • Container Manager 설치
    전에 시놀로지에서는 Docker 란 이름으로 지원하다가, Docker Compose를 지원하게 되면서 아예 이름을 바꾸었습니다.

패키지 센터에서 “Container Manager”를 검색해서 설치를 진행합니다.

설치가 다 되면 “Container Manager”를 실행합니다.

  • 테슬라메이트 설치

메인화면에서 “프로젝트"를 선택합니다.

생성을 선택하여 진행합니다.

테슬라메이트를 설치하게 되면 4개의 Docker들이 설치되게 됩니다.
(teslamate, database, grafana, mosquitto)

프로젝트 이름 : 서비스를 구분 지을 수 있도록 설정합니다.
경로 : NAS드라이브에 저장할 곳을 지정
원본 : yml 파일을 만들기로 선택하고, 아래의 소스를 복사, 붙여넣기 합니다.
내부 변수들은 선택에 따라 바꾸셔도 상관없으며, 그냥 그대로 써도 무방합니다.
단 아래의 샘플 yml 파일에서 DBMS암호키 (teslamate, database, grafana)는 본인의 암호로 작성합니다.

services:
  teslamate:
    image: teslamate/teslamate:latest
    restart: always
    environment:
      - ENCRYPTION_KEY=secretkey
      - DATABASE_USER=teslamate
      - DATABASE_PASS= #DBMS 암호키를 입력합니다.
      - DATABASE_NAME=teslamate
      - DATABASE_HOST=database
      - MQTT_HOST=mosquitto
      - TZ=Asia/Seoul  # 한국 시간대 추가
      - VIRTUAL_HOST=localhost  # 시놀로지 환경 최적화
      - DATABASE_POOL_SIZE=15  # 연결 풀 크기 증가
      - DATABASE_TIMEOUT=90000  # 타임아웃 증가 (90초)
    ports:
      - 4000:4000
    volumes:
      - ./import:/opt/app/import
    cap_drop:
      - all
    depends_on:
      database:
        condition: service_healthy
      mosquitto:
        condition: service_started

  database:
    image: postgres:17-trixie
    restart: always
    environment:
      - POSTGRES_USER=teslamate
      - POSTGRES_PASSWORD= #DBMS 암호키를 입력합니다.
      - POSTGRES_DB=teslamate
      - TZ=Asia/Seoul  # 데이터베이스도 한국 시간
    volumes:
      - teslamate-db:/var/lib/postgresql/data
    healthcheck:  
      test: ["CMD-SHELL", "pg_isready -U teslamate -d teslamate"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

  grafana:
    image: teslamate/grafana:latest
    restart: always
    environment:
      - DATABASE_USER=teslamate
      - DATABASE_PASS= #암호키를 입력합니다.
      - DATABASE_NAME=teslamate
      - DATABASE_HOST=database
      - TZ=Asia/Seoul  # 그라파나도 한국 시간
    ports:
      - 3000:3000
    volumes:
      - teslamate-grafana-data:/var/lib/grafana
    depends_on:
      database:
        condition: service_healthy

  mosquitto:
    image: eclipse-mosquitto:2
    restart: always
    command: mosquitto -c /mosquitto-no-auth.conf
    environment:
      - TZ=Asia/Seoul  # MQTT도 한국 시간
    # ports:
    #   - 1883:1883
    volumes:
      - mosquitto-conf:/mosquitto/config
      - mosquitto-data:/mosquitto/data

volumes:
  teslamate-db:
  teslamate-grafana-data:
  mosquitto-conf:
  mosquitto-data:

이대로 진행되면 아래와 같이 “웹 포털 설정"이 나옵니다.

저의 경우 앞선 문서에 있는 NPMPlus (Reverse Proxy)를 통해 웹을 연결하므로 넘어가지만, 시놀로지 자체로만 이용한다면 Web Station을 설치해서 진행합니다. 이때는 홈랩 내부의 IP:4000 식으로 접근하면 됩니다.

이제 모든 설정이 끝났습니다. “완료"하게 되면 자동으로 image 를 가져와서 Docker compose를 이용해 컨테이너들을 설치합니다.

프로젝트에서 해당 컨테이너(서비스)들의 상태를 확인할 수 있습니다.
접속은 “시놀로지IP:4000”으로 하여 접속합니다.
초기 설정은 다음 문서에서 다루겠습니다.