Guide · Docker from the command line
Install TedEnergy from the command line
For Docker users: NAS (Synology over SSH, QNAP…), mini-PC, Raspberry Pi 4 or 5, Linux server. The public tedenergy/ted image exists for Intel / AMD and ARM64: Docker picks the right one.
- 1
Create the data folder
It keeps settings, license, history and logs from one version to the next. Example for a Synology; on a PC or a Raspberry Pi,
~/tedis fine.Data foldersudo mkdir -p /volume1/docker/ted - 2
Start the container
Two ports and one folder are enough: no variable to set.
Start the containersudo docker run -d \ --name ted-bot \ --restart unless-stopped \ -p 5002:5000 \ -p 1885:1885 \ -v /volume1/docker/ted:/data \ tedenergy/ted:latest - 3
Open the interface
http://MACHINE-IP:5002: the setup wizard asks for the free license, then the Home Assistant address and a long-lived access token (Home Assistant › your profile › Security › Long-lived access tokens). Then getting started.
With Docker Compose
services:
ted:
image: tedenergy/ted:latest
container_name: ted-bot
restart: unless-stopped
ports:
- "5002:5000"
- "1885:1885"
volumes:
- ./ted:/data
sudo docker compose up -d
Update
Updating the container
Pull the image, then recreate the container with the same command: your data stays in the folder mounted on /data.
sudo docker pull tedenergy/ted:latest
sudo docker rm -f ted-bot
# then run the step 2 command again
sudo docker compose pull && sudo docker compose up -d
Without Docker Hub
Offline installation
For a machine without access to Docker Hub: download the image archive from the download page, ted-bot-v3.8.1.tar.gz (99 Mo) for Intel / AMD or ted-bot-v3.8.1-arm64.tar.gz for ARM64.
gunzip -c ted-bot-v3.8.1.tar.gz | sudo docker load
sudo docker run -d --name ted-bot --restart unless-stopped \
-p 5002:5000 -p 1885:1885 -v /volume1/docker/ted:/data ted-bot:latest
Both archives load as ted-bot:latest. The install_ted_prebuilt.sh script from the download page does these steps in one go (it also asks for the Home Assistant token): it checks the ports, offers a free one if a port is already taken (interface between 5001 and 5009, MQTT 1885 or next) and keeps the same ones at every update. To force the MQTT port: HOST_MQTT_PORT=1890 before the command (0 not to publish it). To update: load the new archive, then recreate the container.
Troubleshooting
Something wrong?
sudo docker ps --filter name=ted-bot
sudo docker logs --tail 80 ted-bot
“Home Assistant injoignable” (unreachable) in the wizard
Use the Home Assistant IP address with its port (http://192.168.1.50:8123): homeassistant.local is not always known inside a container.
Port 5002 is already in use
Replace -p 5002:5000 with another free port (preferably between 5003 and 5009) and open the interface on that port.
Port 1885 (MQTT) is already in use, or missing from the container
Docker cannot add a port to an existing container: delete it (sudo docker rm -f ted-bot, your data stays in the folder) and run the step 2 command again. If 1885 is taken, replace -p 1885:1885 with another free port, for example -p 1890:1885, then enter 1890 in Settings › Inverter cloud › Built-in MQTT server (step 2 of the setup). The offline installation script makes this choice by itself.
Access from outside
Never expose the interface on the Internet: prefer a VPN. For the mobile app away from home, enable remote access (Paramètres › Application mobile et accès à distance): only requests signed by the app are then accepted, and the procedure is shown.
Still stuck? Let an AI guide you · Discord
Up and running? Move on to getting started.
The setup wizard, then your first inverters: everything is explained.