13 min read

Self-Host evcc and Access Its API with Localtonet

Install and verify evcc on Linux, configure its web interface, then expose the working HTTP service remotely through a Localtonet tunnel.

Remote browser traffic reaching a self-hosted evcc service through a Localtonet tunnel.
Localtonet provides a remote path to the evcc HTTP service running on the Linux host.
Self-Hosting · evcc · Localtonet · 2026

Run smart EV charging locally, verify the web service, and add controlled remote access

evcc is an open-source EV charge controller and home energy management system designed to run on your own hardware. This guide installs the stable evcc package on an apt-based Linux distribution, starts the system service, configures the web interface, and verifies the local HTTP endpoint before any tunnel is created. After the local installation works, we show how to connect it to an HTTP tunnel with Localtonet. The result is a practical installation-first workflow for reaching the evcc interface or its REST API without configuring inbound router port forwarding.

🔒 Configure an administrator password before remote exposure 🌐 Local HTTP service with optional Localtonet access ⚡ Systemd-based installation for Debian and Ubuntu

What you are installing

evcc combines EV charging control with local home energy management. It can collect information such as grid consumption, solar production, household load, vehicle state of charge, and battery state. Depending on the configured equipment, it can use that information to coordinate charging, respond to available solar energy, work with dynamic electricity tariffs, and distribute available power across charging points.

The project includes a responsive web interface as well as REST and MQTT APIs for home automation integrations. Its plugin system supports technologies including HTTP, MQTT, Modbus, WebSocket, JavaScript, Go, and shell scripts. This makes evcc useful both as an interactive local application and as a service that other systems can query or control.

In this article, “evcc” refers to the evcc.io smart-charging and home energy management project. It should not be confused with the EV communication controller abbreviation used in ISO 15118 implementations.

🏠 Local operation evcc runs on your own hardware and provides its interface from a locally hosted HTTP service.
☀️ Energy-aware charging The platform can coordinate EV charging with solar generation, household consumption, batteries, and supported energy meters.
🔌 Device integrations evcc supports many chargers, vehicles, meters, inverters, batteries, smart switches, and heating devices, subject to the compatibility and configuration of each integration.
🧩 Automation interfaces REST and MQTT APIs enable integration with home automation systems, while plugins support several network and scripting technologies.

Prerequisites and installation scope

The following installation procedure applies to apt-based Linux distributions such as Debian and Ubuntu. The official evcc documentation recommends its dedicated Linux image as the easier option for a Raspberry Pi. For other Linux distributions, use the current evcc Docker or manual installation documentation rather than adapting the APT commands without verification.

You need a Linux account with permission to run sudo, working internet access for package retrieval, and a browser for the initial web configuration. The logged-in Linux account must not be named evcc, because the package installation creates a dedicated user with that name.

Review downloaded setup scripts before running them

The official installation procedure pipes the evcc repository setup script into a privileged shell. Confirm that you are using the current official evcc installation instructions and review the script if required by your security policy. Do not substitute an unverified repository URL.

Install evcc on Debian or Ubuntu

1

Install the required repository dependencies

Open a terminal on the Linux host and install the Debian keyring, archive keyring, HTTPS transport, and curl packages required by the documented APT setup.

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
2

Add the stable evcc APT repository

Add the repository for the current stable release. The evcc documentation also offers an unstable repository, but nightly builds may be unstable and are not used in this installation.

curl -1sLf 'https://dl.evcc.io/public/evcc/stable/setup.deb.sh' | sudo -E bash
3

Update the package list and install evcc

Refresh APT metadata after adding the repository, then install the evcc package. The installation creates the dedicated evcc service account.

sudo apt update
sudo apt install -y evcc
4

Grant serial-device access if required

This step is needed only when your evcc configuration uses a serial interface. It adds the service account to the plugdev group so it can access applicable USB or serial devices without running as root.

sudo usermod -a -G plugdev evcc
5

Start the evcc system service

Start evcc through systemd. The packaged installation runs evcc as a background service rather than requiring a terminal session to remain open.

sudo systemctl start evcc
6

Open the local web interface

On the evcc host, open http://localhost:7070. Set an administrator password and configure your devices through the web interface. Do not continue to remote exposure until this local page loads correctly.

Configure evcc through the web interface

Local evcc web interface open for configuration on a Linux desktop.
The evcc web interface is used to complete and review the local configuration.

The web interface is the recommended configuration method. Settings entered there are saved automatically in the evcc database. Start with an administrator password, then add only the chargers, meters, vehicles, batteries, inverters, or other devices actually present in your installation. Hardware support does not guarantee that every device can be discovered automatically, so follow the current evcc instructions for each integration.

A traditional configuration-file workflow is also available. If you choose it, the configuration file must be stored at /etc/evcc.yaml. After creating or changing that file, restart the service:

sudo systemctl restart evcc

Do not maintain conflicting settings in multiple places without understanding how the installed evcc version handles them. For a new installation, the browser-based workflow is the simpler documented approach.

Use a systemd override for service customization

If you need to customize environment variables or command-line behavior for the APT installation, use sudo systemctl edit evcc. Do not edit /lib/systemd/system/evcc.service directly, because APT package updates can overwrite that file.

Verify the local service before creating a tunnel

Remote access cannot repair a service that is stopped, misconfigured, or unreachable locally. Verify the systemd service, review its logs, and load the web interface from the evcc host first. This separates application problems from tunneling or network problems.

1

Check the systemd service status

Confirm that systemd reports evcc as running. The output can also show recent startup failures and the active process.

sudo systemctl status evcc
2

Review recent log entries

Inspect the service journal for configuration errors, unavailable devices, permission problems, or startup failures.

sudo journalctl -u evcc --since "yesterday"
3

Load the loopback endpoint

Open http://127.0.0.1:7070 in a browser on the evcc computer. If the browser is on another computer in the same network, replace 127.0.0.1 with the verified IP address or hostname of the evcc host.

4

Confirm the configured devices behave correctly

Check that the interface displays the expected charging and energy information. If a meter, charger, or vehicle is not working, resolve that integration before introducing remote access.

Choose the correct Localtonet tunnel target

Localtonet targets the verified evcc loopback address and port on the same Linux host.
The tunnel target must match the address and port where evcc is already responding locally.

Once evcc works locally, an HTTP tunnel is the appropriate Localtonet tunnel family for its browser interface and HTTP-based API. The Localtonet client establishes an outbound connection to one of our relay servers. This provides a public URL without requiring an inbound router port-forwarding rule, a public IP address, firewall changes, or VPN setup.

The local target must be the IP address and port that the Localtonet client can actually reach. If the client runs on the same Linux host as evcc, the verified loopback endpoint uses 127.0.0.1 and port 7070. If the Localtonet client runs on another device, use the evcc host address that worked during LAN verification. Do not use 127.0.0.1 from a different computer, because loopback always refers to the computer on which the client is running.

Access method Best for Important behavior
Local loopback Testing on the evcc host Use the documented local endpoint at 127.0.0.1:7070.
Local network address Testing from another trusted LAN device Use the verified hostname or IP address of the evcc computer instead of loopback.
Localtonet HTTP tunnel Remote browser or HTTP API access Maps a public HTTPS address to the reachable local evcc HTTP target while the client and tunnel are running.

Expose the verified evcc service with Localtonet

1

Install and run the Localtonet client

Install the current Localtonet application on the Linux host running evcc or on another device that can reach the verified evcc endpoint. Use the installation method shown for your operating system in the current Localtonet dashboard or documentation.

2

Authenticate the intended device

Select the device using its device-specific authentication token. Treat this token as a secret and never place it in an article, script, public repository, screenshot, or shared configuration.

3

Select an available relay server

Choose a currently available server or region from the product interface. Availability can vary, so obtain the valid value from the dashboard rather than copying a hardcoded server code.

4

Create an HTTP tunnel to evcc

Create an HTTP tunnel and set its local target to the evcc address and port already proven to work. When the Localtonet client and evcc run on the same host, that target is normally 127.0.0.1 on port 7070. Use a verified LAN address when they run on different devices.

5

Start the tunnel

Creating a tunnel does not start it. Use the Start button, then wait for the selected client and tunnel to show that they are connected.

6

Test the assigned public address

Open the assigned public URL from a separate network and confirm that the evcc interface responds. If you need the REST API, use only API paths documented for your installed evcc version. This guide does not guess API routes, request bodies, or authentication behavior.

A public URL changes the security boundary

Set the evcc administrator password before starting the tunnel. Expose only the service you need, keep evcc and the host updated, protect Localtonet device tokens, and stop or delete the tunnel when remote access is no longer required. A tunnel provides connectivity, but it does not remove the need for application authentication, least privilege, and careful API-client credential handling.

Troubleshooting the connection path

Five checkpoints for diagnosing remote access from the browser to the evcc service.
Checking each hop separately isolates tunnel, target, and local-service failures.

If the public URL does not work, test the path in order. First confirm that sudo systemctl status evcc reports a running service. Next, open http://127.0.0.1:7070 on the evcc host. If the Localtonet client is on another machine, verify that the same machine can reach evcc through the chosen LAN address. Only after those checks should you inspect the Localtonet client connection, selected device, relay selection, local target, and tunnel state.

Remember that a configured tunnel is not necessarily active. The tunnel is available only while the selected Localtonet client is connected and the tunnel is running. Restarting evcc can temporarily make the target unavailable, while stopping the Localtonet client or tunnel removes public access even if evcc continues to work locally.

For maintenance, APT installations can be updated after checking evcc release notes for breaking changes. Refresh the package list and upgrade the package with the documented commands:

sudo apt update
sudo apt --only-upgrade install -y evcc

Test the local interface again after an update before relying on remote access. If you use a traditional configuration file, keep a backup of /etc/evcc.yaml. The database is typically stored at /var/lib/evcc/evcc.db, although the actual storage location should be confirmed in the evcc startup log.

Frequently asked questions

Which local port does the documented evcc Linux installation use?

The documented APT installation exposes the web interface at http://localhost:7070, and local verification uses http://127.0.0.1:7070. If you deliberately customize evcc networking, verify the resulting address and port before configuring Localtonet.

Should I configure evcc before creating the Localtonet tunnel?

Yes. Start evcc, set an administrator password, configure the required devices, inspect the service status and logs, and confirm that the local web interface works. This prevents local application errors from being mistaken for tunnel problems.

Can the Localtonet client run on a different device?

Yes, provided that device can reach the evcc HTTP service. Use the verified LAN IP address or hostname of the evcc host as the tunnel target. Do not use 127.0.0.1 unless the client runs on the same computer as evcc.

Does creating a Localtonet tunnel immediately make evcc reachable?

No. The tunnel must be started after it is created. Public access also depends on the selected Localtonet client being connected and the evcc service continuing to run.

Can I use the public URL for the evcc REST API?

An HTTP tunnel can carry HTTP requests to the same reachable evcc service. Use API routes and request formats documented for your installed evcc version, and preserve the application’s authentication requirements. Do not expose credentials in URLs, logs, scripts, or public repositories.

Does this setup require router port forwarding or a public IP address?

No. The Localtonet client establishes an outbound connection to our relay server, so the workflow does not require inbound router port forwarding or a public IP address.

Connect your verified evcc service with Localtonet

Install evcc, confirm that its local interface is working, secure the administrator account, and then create an HTTP tunnel to the verified local endpoint. With Localtonet, you can reach the service through an assigned public address while keeping the tunnel lifecycle under your control.

Get Started Free →

Localtonet is a secure multi-protocol tunneling and proxy platform designed to expose localhost, devices, private services, and AI agents to the public internet supporting HTTP/HTTPS tunnels, TCP/UDP forwarding, mobile proxy infrastructure, file server publishing, latency-optimized game connectivity, and developer-ready AI agent endpoint exposure from a single unified control plane.

support