AWS에 TeslaMate를 설치해 본다.
TeslaMate ?
테슬라 차량 운행 데이터를 분석하여 시각화하여 보여주는 프로그램
AWS ?
아마존에서 운영하는 클라우드 서비스
1. AWS 클라우드 환경 구축
먼저 AWS 에 접속하여 계정을 생성한다. 
계정 생성 절차는 아래의 순서로 진행 된다.
- 이메일 인증
- 신용카드 인증
- 문자 인증
- Support Plan 선택
신용카드 인증 시 유효성 검증을 위해 $1이 승인되나 실제로 결제되는 것은 아니다.
앞선 인증 단계를 거친 후 Support Plan 선택 단계에서 기본 지원 - 무료를 선택한다. 
1년간 무료로 지원되는 리소스로도 TeslaMate를 설치 및 운영할 수 있다.
(현재 1년 넘게 서비스를 이용 중이나 문제는 없었다.)
1년 단위로 계정을 새로 만들면 계속 무료로 사용 가능하다. (단, DB 백업 및 이전의 귀찮음 발생)
이제 VM(EC2) 을 생성하자. 메인 대시보드 화면에서 가상 머신 시작을 클릭하여 새로운 VM을 만들자. 
인스턴스 이름을 입력한다. (아무 이름 사용 가능)
unbuntu를 선택한다. 22.04 버전을 선택하였다. (현재 기준 최신버전)

인스턴스 유형은 1년간 무료인 t2-micro 를 선택한다. 
키 페어를 생성한다. 
키 페어 이름, 유형, 파일 형식을 선택한다.
Mac을 사용하고 있어
.pem파일 형식을 선택하였지만 만약 윈도우에서 PuTTY를 통해 터미널에 접속하는 경우.ppk방식으로 저장하면 된다.
키페어 생성 클릭 시 해당 파일이 로컬에 다운된다.
VM에 터미널로 접속하기 위해 필요하므로 다운받은 Key는 잘 보관해 둔다.
네트워크 설정은 우선 기본 선택으로 둔다. (향후 변경 가능)

보안상 SSH 접근을
Anywhere에서MyIP로 접근을 변경하는게 좋다. 다만, 대부분 가정에서 사용하는 PC가 유동 IP이므로 IP가 바뀌는 경우 네트워크 설정을 그때마다 바꿔줘야 한다.
스토리지 용량을 8Gib 에서 30Gib로 변경해 준다. (30Gib 까지 무료임) 
이제 instance가 생성되었고 추가 설정이 필요하다.
먼저 탄력적 IP를 추가한다. 생성된 IP가 앞으로 접속할 IP 라고 생각하면 된다. 
탄력적 IP를 생성된 instance와 연결 해준다.

마지막으로 보안그룹 규칙을 설정한다. 
인바운드 규칙편집을 클릭한다. 
규칙 추가를 클릭하여 3000, 4000 포트를 추가해 준다.
접근 권한은 AnyWhere 또는 본인 IP를 선택하여 규칙을 저장한다. 
이제 터미널에 접속해 보자.
앞서 생성한 pem 파일을 .ssh 폴더에 복사한다.
pem 파일 퍼미션을 400 적용한다.
1
$ chmod 400 teslamate.pem
ip 정보는 앞에서 생성한 탄력적 IP를 기입하고 터미널에 접속한다.
처음 접속 시 fingerprint 는 yes를 입력한다.
1
2
3
4
5
6
7
8
9
$ ssh -i ~/.ssh/teslamate.pem ubuntu@[ip]
The authenticity of host '***.***.***.*** (***.***.***.***)' can't be established.
ED25519 key fingerprint is SHA256:jvf2Yol0vrgCFT5X45F/*****************.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
...
...
ubuntu@ip-***-***-***-***:~$
2. Docker 설치
- docker 설치 (feat. ubuntu)
- docker-compose 설치
1
2
3
4
5
6
7
8
9
# docker-compose 설치
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# docker-compose 권한 및 link 설정
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# version 확인
$ docker-compose -v
3. TeslaMate 설치
계정 폴더 아래(/home/ubuntu) docker-compose.yml 파일을 생성하여 아래 내용을 변경 후 복사해준다.
ENCRYPTION_KEY: 사용자 token값을 다시 한번 암호화하기 위해 사용하는 키값으로 비밀번호를 넣어준다.DATABASE_PASS: DB 비밀번호를 설정POSTGRES_PASSWORD: DB 비밀번호를 설정
비밀번호 설정 시 앞에 공백을 주지 않도록 한다.
공백을 두는 경우 granfana 에서 데이터를 가지고 올때 인증이 안되는 문제가 있었다.
DATABASE_PASS= 12345 (X)
DATABASE_PASS=12345 (O)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
version: "3"
services:
teslamate:
image: teslamate/teslamate:latest
restart: always
environment:
- ENCRYPTION_KEY= #insert a secure key to encrypt your Tesla API tokens
- DATABASE_USER=teslamate
- DATABASE_PASS= #insert your secure database password!
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
- MQTT_HOST=mosquitto
ports:
- 4000:4000
volumes:
- ./import:/opt/app/import
cap_drop:
- all
database:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=teslamate
- POSTGRES_PASSWORD= #insert your secure database password!
- POSTGRES_DB=teslamate
volumes:
- teslamate-db:/var/lib/postgresql/data
grafana:
image: teslamate/grafana:latest
restart: always
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS= #insert your secure database password!
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
ports:
- 3000:3000
volumes:
- teslamate-grafana-data:/var/lib/grafana
mosquitto:
image: eclipse-mosquitto:2
restart: always
command: mosquitto -c /mosquitto-no-auth.conf
# ports:
# - 1883:1883
volumes:
- mosquitto-conf:/mosquitto/config
- mosquitto-data:/mosquitto/data
volumes:
teslamate-db:
teslamate-grafana-data:
mosquitto-conf:
mosquitto-data:
서비스를 올린다.
1
$ sudo docker-compose up -d
docker-compose pull을 안해도 최초 실행시 이미지가 없으면 알아서 불러온다.
서비스가 잘 올라갔는지 확인해 본다.
1
2
3
4
5
6
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b66a0ce7bf62 eclipse-mosquitto:2 "/docker-entrypoint.…" 13 seconds ago Up 10 seconds 1883/tcp ubuntu_mosquitto_1
e0fea2f625e8 teslamate/teslamate:latest "tini -- /bin/sh /en…" 13 seconds ago Up 1 second 0.0.0.0:4000->4000/tcp, :::4000->4000/tcp ubuntu_teslamate_1
5057fe85bf71 postgres:14 "docker-entrypoint.s…" 13 seconds ago Up 10 seconds 5432/tcp ubuntu_database_1
b078aeec210d teslamate/grafana:latest "/run.sh" 13 seconds ago Up 10 seconds 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp ubuntu_grafana_1
4. TeslaMate 접속
먼저 Tesla 사용자 인증을 해야한다.
http://탄력적 IP:4000 에 접속하여 Access Token 과 Refresh Token 값을 넣고 OAuth 인증을 해준다. 
Token 값은 아래 앱을 설치하여 테슬라 계정(id/pw) 로그인 후 복사해 올 수 있다.
- 아이폰: Auth app for Tesla
- 안드로이드: Tesla Token
- PC: tesla_auth
이제 http://탄력적 IP:3000 를 입력하여 Granfana 에 접속한다.
초기 비밀번호는 admin/admin 이다.

대시보드를 보면 본인 차량의 각종 통계를 조회 할 수 있다. 
5. TIP
- 자주쓰는 명령어
1 2 3 4 5 6 7 8
# TeslaMate 업데이트 하기 $ sudo docker-compose pull # TeslaMate 서비스 내리기 $ sudo docker-compose down # TeslaMate 서비스 올리기 $ sudo docker-compose up -d # 현재 서비스 확인 하기 $ sudo docker ps
- docker sudo 없이 실행하기
1 2 3 4 5 6
# docker 그룹 생성 $ sudo groupadd docker # docker group에 유저 추가 $ sudo usermod -aG docker ${USER} # docker 재시작 $ sudo service docker restart
테슬라 주문시 아래 링크를 통해 주문하면 추가 혜택을 얻을 수 있습니다.
https://www.tesla.com/ko_kr/referral/thzone19436 바로가기
