Zum Inhalt springen
EN | DE

Docker

Diese Anleitung beschreibt die Installation von evcc als Docker-Image. Images gibt es für AMD64, armv6 und arm64. Oft kommen hier NAS-Systeme wie Synology, QNAP, Unraid und TrueNAS zum Einsatz.

Bevor du den Container erstellst, musst du entscheiden, wie er mit deinem Netzwerk verbunden wird. Wir empfehlen das Host-Netzwerk. Der Container teilt sich dann das Netzwerk mit dem Host und verhält sich wie ein direkt installiertes Programm. Das hat mehrere Vorteile:

  • Beim Hinzufügen eines Geräts schlägt das Feld IP Adresse oder Hostname die in deinem Netzwerk gefundenen Geräte vor.
  • Funktionen auf Basis von mDNS funktionieren, z. B. EEBus, der SMA Sunny Home Manager und die automatische Erkennung durch die evcc App.
  • Geräte, die über UDP kommunizieren, z. B. KEBA Wallboxen und SMA Geräte, sind ohne weitere Einrichtung erreichbar.
  • Es muss keine Portliste gepflegt werden. Eingehende Verbindungen wie OCPP-Wallboxen funktionieren sofort.

Im Bridge-Netzwerk läuft der Container in einem separaten Docker-Netzwerk. Das ist in Ordnung, wenn du die oben genannten Funktionen nicht brauchst oder den Container bewusst isolieren möchtest. Alle benötigten Ports musst du dann selbst freigeben. Geräte in deinem Netzwerk werden nicht vorgeschlagen, ihre Adressen trägst du von Hand ein.

Das Host-Netzwerk setzt einen Linux-Host voraus, dazu zählen auch die gängigen NAS-Systeme. Mit Docker Desktop unter macOS und Windows läuft der Container in einer virtuellen Maschine ohne direkten Zugriff auf dein Netzwerk. Nutze dort stattdessen die Installation für macOS oder Windows.

Der Container lässt sich über Docker Compose, die Docker CLI oder die Docker UI deines Systems einrichten. Alle drei Wege verwenden dasselbe Image und dieselben Volumes.

Es gibt zwei Image-Tags: evcc/evcc:latest (empfohlen) und evcc/evcc:nightly (Entwickler-Build).

Host-PfadContainer-PfadBeschreibungErforderlich
/home/user/.evcc/root/.evccVerzeichnis für die Datenbankja
/home/user/evcc.yaml/etc/evcc.yamlKonfigurationsdatei (nur wenn du eine verwendest)nein

Die Datenbank enthält deine Ladevorgänge und alles, was du in der Weboberfläche einrichtest. Lege das Verzeichnis vor dem ersten Start auf deinem Host-System an. Diese Anleitung verwendet exemplarisch /home/user/.evcc.

Das Volume für die evcc.yaml wird nur benötigt, wenn du deine Instanz über eine Konfigurationsdatei statt über die Weboberfläche einrichtest. Entferne die Zeile aus den folgenden Beispielen, wenn du keine verwendest.

Docker Compose ist der empfohlene Weg, da alle Parameter in einer Datei hinterlegt sind. Lege eine Datei mit dem Namen compose.yml und einer der folgenden Konfigurationen an:

services:
evcc:
container_name: evcc
image: evcc/evcc:latest
network_mode: host
volumes:
- /home/user/.evcc:/root/.evcc
- /home/user/evcc.yaml:/etc/evcc.yaml # optional
restart: unless-stopped

Starte den Container mit:

Terminal-Fenster
sudo docker compose up -d

Ob du sudo benötigst, hängt von deinem System ab.

Alternativ erstellst und startest du den Container mit einem einzelnen Befehl:

Terminal-Fenster
sudo docker run -d --name evcc \
--network host \
-v /home/user/.evcc:/root/.evcc \
-v /home/user/evcc.yaml:/etc/evcc.yaml \
--restart unless-stopped \
evcc/evcc:latest

Hat dein System eine Docker UI (z. B. Synology, QNAP, Portainer, Unraid), kannst du den Container dort erstellen. Trage das Image und die Volumes von oben ein und setze den Netzwerkmodus auf host. Wenn du stattdessen das Bridge-Netzwerk wählst, füge die benötigten Ports hinzu.

Die genauen Feldbezeichnungen sind von System zu System unterschiedlich. Die Konzepte Netzwerkmodus, Ports und Volumes findest du aber in allen Systemen wieder.

Ports müssen nur im Bridge-Netzwerk freigegeben werden. Im Host-Netzwerk sind diese Ports direkt auf dem Host verfügbar.

Host-PortContainer-PortBeschreibungErforderlich
70707070/tcpWeb UI, APIja
88878887/tcpOCPP-Servernein
95229522/udpSMA Sunny Home Managernein
70907090/udpKEBA Wallboxennein
2837628376/udpEVSE Master Wallboxennein
53535353/udpmDNSnein
47124712/tcpEEBusnein
88998899/udpModbus UDPnein

Nach dem Start des Containers erreichst du die Weboberfläche unter http://<host>:7070. <host> ist die IP-Adresse oder der Hostname des Computers, auf dem der Container läuft.

Bei der ersten Verwendung wirst du aufgefordert, ein Administrations-Passwort zu setzen. Danach kannst du deine Geräte einrichten, wie unter Einrichtung beschrieben.

Solltest du keine Verbindung herstellen können, überprüfe die Logs deines Containers. Weitere Hilfe findest du in den GitHub Diskussionen.

Navigiere in das Verzeichnis mit der compose.yml und lade das neueste Image:

Terminal-Fenster
sudo docker compose pull

Falls ein neues Image vorhanden ist, erstellt der folgende Befehl den Container neu. Ansonsten läuft der bestehende einfach weiter.

Terminal-Fenster
sudo docker compose up -d

Hier findest du von Nutzern erstellte Anleitungen für konkrete Systeme. Für die Richtigkeit und Aktualität können wir nicht garantieren.

Die Einrichtung über Docker auf einem Synology NAS ist über dessen grafische Benutzeroberfläche ohne Verwendung der Kommandozeile möglich. Diese Anleitung verwendet den empfohlenen Host-Modus: Anleitung: Synology Docker (PDF)

Eine Anleitung für den Bridge-Modus findest du hier: Anleitung: Synology Docker 2 (PDF) von at4hawo1

Die Einrichtung auf einem QNAP NAS über die Container Station ähnelt der obigen Synology-Anleitung. QNAP-spezifische Hinweise findest du hier: Anleitung: QNAP (PDF)

Dies ist eine Option für Fortgeschrittene in kontrollierten Docker-Umgebungen, in denen das Bridge-Netzwerk gewollt ist und die Geräte feststehen. Die Umgebungsvariable EVCC_DISCOVERY_HOSTS stellt eine statische Liste von Geräten bereit. Diese Liste wird dann für die Vorschläge im Feld IP Adresse oder Hostname verwendet, statt das Netzwerk zu durchsuchen.

Der Wert ist eine JSON-Liste. Jeder Eintrag benötigt eine ip. hostname und mac sind optional. Sie werden verwendet, um den Hersteller anzuzeigen und Geräte, die zum gewählten Gerätetyp passen, unter Passend aufzuführen.

services:
evcc:
environment:
EVCC_DISCOVERY_HOSTS: >-
[
{"ip": "192.168.1.10", "hostname": "sma3009876543", "mac": "00:15:BB:12:34:56"},
{"ip": "192.168.1.20", "hostname": "go-echarger_123456"}
]

Eine leere Liste [] schaltet die Vorschläge ab.