ZimaOS'te TeslaMate Kurulum Rehberi (Docker Compose)
🚗 Bu rehber, ZimaOS üzerinde TeslaMate’i (Tesla araç verilerini toplama, izleme ve görselleştirme) Docker Compose ile kurulumunu, güncellemesini, sorun çözümlerini ve mevcut veritabanı/Grafana’yı başka uygulamalara açmayı adım adım anlatır. Tüm süreci sıfırdan tekrarlamak istediğinizde bu notu kullanabilirsiniz.
📋 Ön Koşullar
- ZimaOS cihazı (ZimaBoard, ZimaBlade vb.)
- ZimaOS üzerinde Docker ve Docker Compose yüklü (genelde hazır gelir)
- En az 1 GB boş RAM (önerilir)
- ZimaOS’a SSH veya web terminal ile erişim
- ZimaOS kullanıcı şifresi (
sudoişlemleri için)
🔧 1. Dizin Yapısını Oluştur
TeslaMate ile ilgili tüm dosyaları barındıracak klasörü oluşturun ve içine girin:
mkdir -p /DATA/AppData/teslamate
cd /DATA/AppData/teslamate
📄 2. docker-compose.yml Dosyasını Oluştur
Bu dosya, üç servisi (TeslaMate, PostgreSQL veritabanı, Grafana) tek bir yapıda tanımlar.
2.1. Dosyayı Aç
nano docker-compose.yml
2.2. İçeriği Yapıştır
Aşağıdaki içeriği kopyalayıp nano editörüne yapıştırın. (Yapıştırma sorunu yaşıyorsanız 2.3. alternatif yöntemlere bakın).
Değiştirmeniz Gereken Yerler: -
<your DB Password>– güçlü bir parola (3 yerde aynı olmalı) -<your Timezone>– örneğinEurope/Istanbul(3 yerde) -<some salt for encryption>– rastgele bir anahtar, örn.openssl rand -base64 32ile üretebilirsiniz.
name: teslamate
services:
database:
cpu_shares: 90
command: []
container_name: teslamate-db
deploy:
resources:
limits:
memory: 31863M
environment:
- POSTGRES_DB=teslamate
- POSTGRES_PASSWORD=<your DB Password>
- POSTGRES_USER=teslamate
- TZ=<your Timezone>
hostname: teslamate-db
image: postgres:17
labels:
icon: https://github.com/homarr-labs/dashboard-icons/blob/main/png/teslamate.png?raw=true
restart: unless-stopped
volumes:
- type: bind
source: /DATA/AppData/teslamate/data/
target: /var/lib/postgresql/data
ports: []
devices: []
cap_add: []
networks:
- teslamate
privileged: false
grafana:
cpu_shares: 90
command: []
container_name: teslamate-grafana
depends_on:
database:
condition: service_started
required: true
deploy:
resources:
limits:
memory: 31863M
environment:
- DATABASE_HOST=teslamate-db
- DATABASE_NAME=teslamate
- DATABASE_PASS=<your DB Password>
- DATABASE_USER=teslamate
- GF_AUTH_ANONYMOUS_ENABLED=true
hostname: teslamate-grafana
image: teslamate/grafana:latest
labels:
icon: https://github.com/homarr-labs/dashboard-icons/blob/main/png/teslamate.png?raw=true
ports:
- target: 3000
published: "3000"
protocol: tcp
restart: unless-stopped
volumes:
- type: bind
source: /DATA/AppData/teslamate/grafana/
target: /var/lib/grafana
devices: []
cap_add: []
networks:
- teslamate
privileged: false
teslamate:
cap_drop:
- all
cpu_shares: 90
command: []
container_name: teslamate
depends_on:
database:
condition: service_started
required: true
deploy:
resources:
limits:
memory: 31863M
environment:
- DATABASE_HOST=teslamate-db
- DATABASE_NAME=teslamate
- DATABASE_PASS=<your DB Password>
- DATABASE_USER=teslamate
- DISABLE_MQTT=true
- ENCRYPTION_KEY=<some salt for encryption>
- TZ=<your Timezone>
hostname: teslamate
image: teslamate/teslamate:latest
labels:
icon: https://github.com/homarr-labs/dashboard-icons/blob/main/png/teslamate.png?raw=true
ports:
- target: 4000
published: "4000"
protocol: tcp
restart: unless-stopped
volumes:
- type: bind
source: /DATA/AppData/teslamate/import/
target: /opt/app/import
devices: []
cap_add: []
networks:
- teslamate
privileged: false
networks:
teslamate:
name: teslamate
2.3. Yapıştırma Sorunları İçin Alternatif Yöntemler
Eğer terminalde Ctrl+V, Ctrl+Shift+V veya sağ tık çalışmıyorsa:
-
Yöntem A – ZimaOS Dosya Yöneticisi:
ZimaOS web arayüzünde "Dosya Yöneticisi"ni açın,/DATA/AppData/teslamateklasörüne gidin, sağ tıklayıp "Yeni Dosya" →docker-compose.ymloluşturun, dosyayı çift tıklayıp açın, içeriği yapıştırıp kaydedin. -
Yöntem B –
catile oluştur:
Terminaldecat > docker-compose.ymlyazıp Enter’a basın, ardından içeriği kopyalayıp sağ tıklayarak yapıştırın, Enter’a basın veCtrl+Dile bitirin.
2.4. Dosyayı Kaydet ve Kapat
nano kullanıyorsanız: Ctrl+O → Enter → Ctrl+X
🚀 3. Konteynırları Başlat
Aşağıdaki komutları sırayla çalıştırın (ZimaOS’ta docker-compose komutu tireli olarak çalışır, ayrıca sudo gerekir):
sudo docker-compose pull
sudo docker-compose up -d
pull: Güncel imajları indirir.up -d: Konteynırları arka planda başlatır.
Not:
sudoşifrenizi girmeniz istendiğinde ZimaOS kullanıcı şifrenizi yazın.
🌐 4. Erişim Bilgileri
Kurulum tamamlandıktan sonra aşağıdaki adreslerden erişebilirsiniz:
| Servis | Adres (ZimaOS IP’nizi yazın) |
|---|---|
| TeslaMate | http://<ZimaOS-IP>:4000 |
| Grafana | http://<ZimaOS-IP>:3000 |
🔄 5. Güncelleme (Yeni Sürüm Çıktığında)
TeslaMate veya bağımlı servisler güncellendiğinde aşağıdaki komutları /DATA/AppData/teslamate dizininde çalıştırın:
cd /DATA/AppData/teslamate
sudo docker-compose pull
sudo docker-compose up -d
💡 Tek satırda yapmak için:
cd /DATA/AppData/teslamate && sudo docker-compose pull && sudo docker-compose up -d
🧪 6. Durum Kontrolü ve Loglar
-
Çalışan konteynırları görmek için:
sudo docker-compose ps -
Belirli bir servisin loglarını izlemek için (ör. teslamate):
sudo docker-compose logs -f teslamate -
Tüm servisleri durdurup kaldırmak için:
sudo docker-compose down
🛠️ 7. Sık Karşılaşılan Sorunlar ve Çözümleri
7.1. docker: unknown command: docker compose
Çözüm: ZimaOS’ta docker-compose (tireli) kullanın. Örn: sudo docker-compose up -d
7.2. open /DATA/.docker/config.json: permission denied
Çözüm: Komutlara sudo ekleyerek çalıştırın.
7.3. Yapıştırma sırasında şifre ekranı veya çalışmıyor
Çözüm: Yukarıdaki 2.3. alternatif yöntemleri deneyin (Dosya Yöneticisi veya cat).
7.4. Konteynırlar başlamıyor / bağlantı hatası
sudo docker-compose psile hangi servisin çalışmadığını kontrol edin.sudo docker-compose logs <servis_adi>ile hatayı okuyun.- Genellikle
environmentdeğişkenlerinde yanlış parola veya timezone olabilir.
7.5. Portlar çakışıyor (4000 veya 3000 zaten kullanımda)
docker-compose.ymldosyasındapublishedport numarasını değiştirip yenidenup -dyapın.
🔗 8. Mevcut Veritabanı ve Grafana’yı Başka Uygulamalara Açma
8.1. PostgreSQL’i Dışarıya Açmak (Port Yayınlama)
Varsayılan olarak veritabanı sadece Docker ağı içinde erişilebilir. Başka uygulamaların (örneğin ZimaOS üzerinde çalışan başka bir servis) bağlanabilmesi için portu yayınlayın:
docker-compose.ymldosyasındadatabaseservisininportskısmını şu şekilde değiştirin:ports: - "5432:5432"- Değişikliği uygulayın:
cd /DATA/AppData/teslamate sudo docker-compose down sudo docker-compose up -d - Artık
host_adresi:5432üzerinden, kullanıcıteslamateve parolanızla bağlanabilirsiniz.
⚠️ Güvenlik Uyarısı: Veritabanını dışarıya açıyorsanız çok güçlü bir parola kullanın. Ayrıca yeni uygulamalar için ayrı bir veritabanı ve kullanıcı oluşturmanız önerilir.
Yeni bir veritabanı ve kullanıcı oluşturmak için:
# Veritabanı konteynırına psql ile bağlan
sudo docker exec -it teslamate-db psql -U teslamate
# Yeni veritabanı oluştur
CREATE DATABASE yeni_app_db;
# Yeni kullanıcı oluştur (şifreli)
CREATE USER yeni_kullanici WITH PASSWORD 'yeni_sifre';
# Yetkileri ver
GRANT ALL PRIVILEGES ON DATABASE yeni_app_db TO yeni_kullanici;
# Çıkış
\q
8.2. Grafana’yı Başka Veri Kaynakları İçin Kullanma
Grafana zaten 3000 portunda yayındadır. Arayüzden (Configuration → Data Sources) farklı veritabanları ekleyebilirsiniz. Mevcut TeslaMate dashboard’ları etkilenmeden yeni dashboard’lar oluşturabilirsiniz.
8.3. Aynı Docker Ağında Yeni Servisler Çalıştırma
Eğer başka bir servisi (örneğin InfluxDB) TeslaMate ile aynı ağda çalıştırmak isterseniz, docker-compose.yml dosyasına yeni bir servis ekleyip networks: - teslamate ile dahil edebilirsiniz. Bu sayede servisler birbirlerini servis_adi üzerinden tanır.
📦 9. Tamamen Sıfırdan Kurulum (Temiz Başlangıç)
Her şeyi silip baştan başlamak isterseniz:
- Konteynırları durdurup kaldırın:
cd /DATA/AppData/teslamate sudo docker-compose down -v # -v, volumeleri de siler (veritabanı verileri gider) - Dizini temizleyin (isteğe bağlı):
sudo rm -rf /DATA/AppData/teslamate - Yukarıdaki 1. adımdan itibaren tekrar başlayın.
📚 Ek Kaynaklar
Not: Bu rehber, ZimaOS özelinde test edilmiştir. Farklı bir sistemde kullanacaksanız dosya yollarını (
/DATA/AppData) vesudogerekliliğini kontrol edin.