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 바로가기