Ana içeriğe geç

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 (sudo iş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ğin Europe/Istanbul (3 yerde) - <some salt for encryption> – rastgele bir anahtar, örn. openssl rand -base64 32 ile ü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/teslamate klasörüne gidin, sağ tıklayıp "Yeni Dosya" → docker-compose.yml oluşturun, dosyayı çift tıklayıp açın, içeriği yapıştırıp kaydedin.

  • Yöntem B – cat ile oluştur:
    Terminalde cat > docker-compose.yml yazıp Enter’a basın, ardından içeriği kopyalayıp sağ tıklayarak yapıştırın, Enter’a basın ve Ctrl+D ile 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 ps ile hangi servisin çalışmadığını kontrol edin.
  • sudo docker-compose logs <servis_adi> ile hatayı okuyun.
  • Genellikle environment değişkenlerinde yanlış parola veya timezone olabilir.

7.5. Portlar çakışıyor (4000 veya 3000 zaten kullanımda)

  • docker-compose.yml dosyasında published port numarasını değiştirip yeniden up -d yapı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:

  1. docker-compose.yml dosyasında database servisinin ports kısmını şu şekilde değiştirin:
    ports:
      - "5432:5432"
    
  2. Değişikliği uygulayın:
    cd /DATA/AppData/teslamate
    sudo docker-compose down
    sudo docker-compose up -d
    
  3. Artık host_adresi:5432 üzerinden, kullanıcı teslamate ve 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:

  1. Konteynırları durdurup kaldırın:
    cd /DATA/AppData/teslamate
    sudo docker-compose down -v   # -v, volumeleri de siler (veritabanı verileri gider)
    
  2. Dizini temizleyin (isteğe bağlı):
    sudo rm -rf /DATA/AppData/teslamate
    
  3. 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) ve sudo gerekliliğini kontrol edin.