Skip to content
EN | DE

Docker

evcc can be installed as a Docker image. Images are available for AMD64, armv6 and arm64. Common use cases include NAS systems like Synology, QNAP, Unraid and TrueNAS.

Before you create the container you have to decide how it is connected to your network. We recommend host networking. The container then shares the network of the host and behaves like a directly installed program. This has several benefits:

  • When you add a device, the IP address or hostname field suggests the devices found in your network.
  • Features based on mDNS work, e.g. EEBus, the SMA Sunny Home Manager and automatic discovery by the evcc app.
  • Devices that communicate via UDP, e.g. KEBA chargers and SMA devices, are reachable without further setup.
  • There is no port list to maintain. Inbound connections like OCPP chargers work right away.

With bridge networking the container runs in a separate Docker network. This is fine if you don’t need the features above or prefer to isolate the container. You then have to publish every required port yourself. Devices in your network are not suggested, so you enter their addresses manually.

Host networking requires a Linux host, which includes the common NAS systems. With Docker Desktop on macOS and Windows the container runs in a virtual machine without direct access to your network. Use the macOS or Windows installation there instead.

The container can be set up via Docker Compose, the Docker CLI or the Docker UI of your system. All three use the same image and volumes.

Two image tags are available: evcc/evcc:latest (recommended) and evcc/evcc:nightly (development build).

Host PathContainer PathDescriptionRequired
/home/user/.evcc/root/.evccDirectory for the databaseyes
/home/user/evcc.yaml/etc/evcc.yamlConfiguration file (only if you use one)no

The database contains your charging sessions and everything you set up in the web interface. Create the directory on your host system before the first start. This guide uses /home/user/.evcc as an example.

The evcc.yaml volume is only needed if you configure your instance via a configuration file instead of the web interface. Remove the line from the examples below if you don’t use one.

Docker Compose is the recommended way, because all parameters are stored in one file. Create a file named compose.yml with one of the following configurations:

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

Start the container with:

Terminal window
sudo docker compose up -d

Whether you need sudo depends on your system.

Alternatively, create and start the container with a single command:

Terminal window
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

If your system has a Docker UI (e.g. Synology, QNAP, Portainer, Unraid), you can create the container there. Enter the image and the volumes from above and set the network mode to host. If you choose bridge networking instead, add the ports you need.

The exact field labels vary from system to system. However, you’ll find the concepts of network mode, ports and volumes in all of them.

Publishing ports is only necessary with bridge networking. With host networking these ports are available on the host directly.

Host PortContainer PortDescriptionRequired
70707070/tcpWeb UI, APIyes
88878887/tcpOCPP serverno
95229522/udpSMA Sunny Home Managerno
70907090/udpKEBA chargersno
2837628376/udpEVSE Master chargersno
53535353/udpmDNSno
47124712/tcpEEBusno
88998899/udpModbus UDPno

After starting the container, you can access the web interface at http://<host>:7070. <host> is the IP address or hostname of the computer running the container.

On first use you are prompted to set an administration password. After that you can set up your devices as described in Configuration.

If you cannot establish a connection, check your container logs. You can find further help in the GitHub Discussions.

Navigate to the directory containing the compose.yml file and pull the latest image:

Terminal window
sudo docker compose pull

If a new image is available, the following command recreates the container. Otherwise, the existing one continues running.

Terminal window
sudo docker compose up -d

Here you’ll find user-created guides for specific systems. We cannot guarantee that they are accurate or up to date.

You can install evcc via Docker on Synology NAS systems using its graphical interface, without using the command line. This guide uses the recommended host mode: Anleitung: Synology Docker (PDF / DE)

A guide for bridge mode can be found here: Anleitung: Synology Docker 2 (PDF / DE) by at4hawo1

Installing evcc on QNAP systems via Container Station is very similar to the Synology instructions above. QNAP specific instructions can be found here: Anleitung: QNAP (PDF / DE)

This is an advanced option for controlled Docker environments where bridge networking is intended and the devices are fixed. The environment variable EVCC_DISCOVERY_HOSTS provides a static list of devices. This list is then used for the suggestions in the IP address or hostname field instead of searching the network.

The value is a JSON list. Each entry needs an ip. hostname and mac are optional. They are used to show the vendor and to list devices that fit the selected device type under Matching.

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"}
]

An empty list [] turns the suggestions off.